見出し画像

【生成AIアプリ100チャレンジ】(6)会話トーク

公開中サイト

https://ai.nuevo.jp/talk/

開発環境

| | |
|:------------:|:------------:|
| Server | lightSail |
| Language | Python3.11 |
| Framework | Django |
| DB | sqlite3 |

ローカル環境ではPythonのvenvを使用。エディタはvs codeです。

目的

 WEB画面上でChatGPTと会話ができるアプリを作りたいと思っています。TTS(テキストを自然な音声にするAPI)とwhispar(音声をテキストにするAPI)を使った会話アプリ。
細かい挙動の制御まではやっていないが、録音する -> 文字起こし -> 自然言語生成AI -> 朗読 という感じで実装できた。時々、音データの更新・削除にズレがでてきてしまう。こういう制御は製品化するものに対してやればいいので、今回はそこまで手を出さない。生成AIのAPIの可能性を探る、と、私自身のPYTHONスキルをアップさせるのが目的。

コード

    OPENAI_API_KEY = os.environ['OPENAI_API_IMAGE_KEY']
    chat_results = ""
    if request.method == "POST":
        form = TranscribeForm(request.POST)
        if form.is_valid():
            client = OpenAI(
                api_key = OPENAI_API_KEY,
            )
            audio_file_path = settings.BASE_DIR / "uploads/talk/user.wav"
            audio_file= open(audio_file_path , "rb")
            transcription = client.audio.transcriptions.create(
                model="whisper-1",
                file=audio_file
            )
            response = client.chat.completions.create(
                model="gpt-4",
                messages=[
                    {
                        "role": "system",
                        "content": """
                        新しいひとがやってきます
                        日本語で応答してください
                        あなたは私の友人の役を演じます。
                        勉強ができなくて異性が大好き。遊んでばかりいます。
                        でも面倒見がよくて元気がいい
                        """
                    },
                    {
                        "role": "user",
                        "content": transcription.text
                    },
                ],
            )
            text_results = response.choices[0].message.content
            speech_file_path = settings.BASE_DIR / "uploads/talk/system.mp3"
            response = client.audio.speech.create(
                model="tts-1",
                voice="alloy",
                input=text_results
            )
            response.stream_to_file(speech_file_path)
            chat_results = speech_file_path
    else:
        form = TranscribeForm()

今回は会話目的ということで友達っぽいキャラ設定をしてみた。
なかなかユニークで面白いキャラになったと思う。キャラ付けはもっと凝りたいが、ふと英語限定にすれば、それだけで英会話アプリになるじゃんと急遽アプリを追加で作成した。英会話アプリはまじで需要があるような気がする。

アプリ画面


写真の人物は画像生成で作りました。ChatGPT4くんです。なるべく画像も生成で用意しようとしているのですが、初期のアイコンよりプロンプトが上達しているのがわかります。

感想

アプリのプロンプトだけを変更した英会話アプリを速攻で作ります。
声色を変えるAPIもあるらしいので、英会話の後は女性版のトークアプリを作成してもいいかもですね。
ChatGPT同士の討論会やエヴァンゲリオンのマギシステムも作りたい。

この記事が気に入ったらサポートをしてみませんか?