公開中サイト
開発環境
Server | lightSail |
Language | Python3.11 |
Framework | Django |
DB | sqlite3 |
ローカル環境ではPythonのvenvを使用。エディタはvs codeです。
目的
WEB画面上でChatGPTと会話ができるアプリを作りたいと思っています。TTS(テキストを自然な音声にするAPI)とwhispar(音声をテキストにするAPI)を使えば、会話ができるはず。その第2弾として、whisparで音声を文字起こしするアプリを作りました。
これで、文字起こし機能と合わせて、同期処理すれば、ChatGPTと音声で会話ができる、はず。
コード
qiita.rb
def index(request):
# Access the API key from the environment
OPENAI_API_KEY = os.environ['OPENAI_API_IMAGE_KEY']
chat_results = ""
if request.method == "POST":
form = TtsForm(request.POST)
if form.is_valid():
sentence = form.cleaned_data['sentence']
client = OpenAI(
api_key = OPENAI_API_KEY,
)
speech_file_path = settings.BASE_DIR / "uploads/tts/speech.mp3"
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input=sentence
)
response.stream_to_file(speech_file_path)
chat_results = speech_file_path
else:
form = TtsForm()
正直思ったのが、音声を録音したファイルを保存するのが大変なんじゃないかって思っていた。
実際はこのワンラインだけで保存できる。とても楽。
response.stream_to_file(speech_file_path)
逆に大変だったのが。保存された音声データをアプリ終了時に削除させること。JSでページ離脱時に削除するロジックをかいたのだが。文字データを送る時にもファイルが削除されてしまう。そこはPOST時の判定でクリアさせることができた。
あと、前回のミスを繰り返さないように生成されるファイルはgitignoreに追記しておくこと。これで、変なことにはならない。
アプリ画面
感想
日本語と英語、どちらも発音が綺麗ですね。音声会話チャットができれば、擬似英会話もできそうですね。夢が膨らみます。
はやく作りたいです。