10. TTS로 나만의 음성비서 만들기

fragrance_0·2023년 12월 11일
0

🗞️ 나만의 음성비서 프로그램 개요

  • 이전 대화 내용을 기억하고 말함
  • 대화를 처음부터 시작하려면 초기화 누르기

  • whisper를 이용해 텍스트를 음성파일로 변환예정


🗞️ 구글 TTS 알아보기 | Text-to-Speech

📎 gtts 사용

  • 구글 클라우드에서 진행하는 유료와 다른 무료임

  • 패키지만 설치하면 무료로 가능

    	pip install gTTS


🗞️ OpenAI Whisper STT(Speech-to-Text)

  • 홈페이지 들어가면 자세한 모델확인 가능
  • openai api 키 사용 → 요금부과



🗞️ 나만의 음성비서 코드 작성

📎 기본 정보 입력

  • 스트림릿, 오디오 리코더 패키지 가져옴
  • 어느 유저가 오픈소스로 스트림릿 안에서 마이크로 오디오를 인풋받는 패키지를 만들어둠

📎 기능 구현함수

1. STT 함수

  • 음원파일을 인풋으로 받음
  • 최종적으로 그 음원파일에 사용자의 질문을 텍스트로 추출을 해서 리턴해주는 함수
  • input.mp3 파일생성
def STT(audio,apikey):
    # 파일 저장
    filename='input.mp3'
    audio.export(filename, format="mp3")

    # 음원 파일 열기
    audio_file = open(filename, "rb")

    #Whisper 모델을 활용해 텍스트 얻기
    client = openai.OpenAI(api_key = apikey)
    respons = client.audio.transcriptions.create(model = "whisper-1", file = audio_file)
    transcript = respons.text
    audio_file.close()

2. ask-gpt 함수

  • ChatGPT에게 질문을 하고 최종적으로 답변을 리턴하는 함수
  • 프롬프트, ChatGPT에서 사용할 언어모델을 인풋으로 받음
def ask_gpt(prompt, model, apikey):
    client = openai.OpenAI(api_key = apikey)
    response = client.chat.completions.create(
    model=model,
    messages=prompt)
    gptResponse = response.choices[0].message.content
    return gptResponse

3. TTS함수

  • text-to-speech
  • ChatsGPT의 답변 텍스트를 인풋받음
  • output.mp3 파일생성
def TTS(response):
    # gTTS 를 활용하여 음성 파일 생성
    filename = "output.mp3"
    tts = gTTS(text=response,lang="ko")
    tts.save(filename)

📎 메인함수

  1. 프로그램 타이틀 설정
def main():
    # 기본 설정
    st.set_page_config(
        page_title="음성 비서 프로그램",
        layout="wide")
  1. 총 3개의 SessionSTate 초기화
  • 사용자와 음성비서의 대화내용을 저장하는 SessionSTate
  • 프로그램 내에서 채팅창 표시
  • 제목, 구분선 등등
  • 기능 구현 공간 설정


📎 Github, Streamlit 클라우드로 배포

  • 웹에 배포
  • 언제 어디서든 해당 프로그램을 사용할 수 있도록 구현

Streamlit 앱 쉽게 배포하기

[인프런]초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지

profile
@fragrance_0의 개발로그

0개의 댓글