![見出し画像](https://assets.st-note.com/production/uploads/images/102483393/rectangle_large_type_2_18ac6d566378ab08d1e5af4f163f68d2.png?width=1200)
1万円以下で連れて歩けるおしゃべりAIを作るレシピ
やりたいこと
自然な発言
音声会話
かわいい声
持ち運び可能
感情表現の手段
必要なモノ
クレジットカード…ほぼ無料ですがAPIキー発行に必要です
Python開発環境…なんでも良いです、VSCodeとか
64bitでメモリ6GB以上のWindowsタブレット…中古で10000円ぐらいです
システム構成
![](https://assets.st-note.com/img/1680947361774-h6rxNJuVcP.png?width=1200)
人間の発言をマイクで拾って
OpenAIの提供するwhisperのAPIにぶん投げると
プロンプトに書き起こしてくれるので
同じくOpenAIのChatGPT(3.5)にパスして
いい感じのセリフが返ってくるので
ローカルに立てたCOEIROINKサーバーに渡すと
めちゃかわボイスになるので
スピーカーで再生
人間の声をテキストに変換(1~3)
まずマイクで拾った人間の声をテキストに書き起こします。
GoogleのSpeech_to_Textとかローカルで動くモジュールとか色々あるんですがChatGPT用にOpenAIのAPIキーがあるのでWhisperのAPIを使いました。
持ってない人はOpenAIのAPIキーを発行してください。
発行したらopenai.api_key = "sk-XXXX"って感じで定義すれば勝手に使ってくれます。便利ですね。
次はこちらを参考にwhisperを使って音声からテキスト形式で取得する所まで実装します
ChatGPTで会話文を生成する(4~5)
会話する前にAIに人格を注入する必要があります。ここを参考にキャラメイクしていきましょう、ここが一番たのしいです。
自分は攻殻機動隊のタチコマやゴジラSPのユングみたいな感じにしたかったので無邪気な少年ロールで設定しています。
試行錯誤してポイントっぽかったのは起動時に
"今日は"+str(d_today)+" "+str(t_now)+"です、日時と時間を考慮したあいさつをしてください。"
とすると話題にランダム性が出てよかったです。
あとは発言と会話は似てるんですが、「発言」とすべきところを「会話」とするとAIが二人分の会話まで生成しちゃってユーザー置いてけぼりになったので気をつけましょう。
でもこの辺のクセもGPT3.5から4になれば変わるでしょうし、重要なのはチューニング自体のセンスなのかなと思ったり
セリフ音声を合成して再生(6~8)
ラップみたいな見出しだ…
ChatGPTで生成したセリフを合成音声にしましょう。coeFontとかtext_to_Speechとか色々手段があるんですが自分はCOEIROINKというソフトを作りました。GUIが立ち上がるのでiPadとかandroidでどうなるか分からなったので今回はwindowsタブレットにしてます。開発環境もwindowsなので。
このソフトがタブレット上で音声を合成するんですが、今回のシステム構成で一番重い処理なので全体のもっさり感をなんとかするにはここが重要です。
長い文章を一気に合成すると1分近くかかるので、句読点や!や?で分割して20~30文字程度にして、各文章をマルチスレッドで生成、順番に再生するとかなり高速化されました。
AIっぽくしたい
どうしても処理に時間がかかるので、そのへんをごまかす演出が必要でした。tkinterを使って顔画像を細かく切り替えるだけでも、かなり感情を感じて自分で自分をアナログハックしてるような気分に…。
コツは以下のようなプロンプトでセリフの最後に(smile)のような情報を追加させて、それをもとに画像を用意すると楽でした。
* 発言の最後に()の中にで発言全体を要約した感情を一度日本語で考えてから英語に翻訳して記入してください
英語にしてるのはなんだっけ…たしか文字列判定が面倒だったとか、そんなしょうもない理由だったと思います。(怒)とかでも良いと思います。
今後
一通り目標は達成できたので、キャラのバリエーションを色々作ってみようと思います。Twitterで見た仏教について教えてくれるギャルAIと声で会話できたら最高だと思うんですよね…
みなさんも色んなAIを是非作ってみてください!
↓改善点と今回作成したデフォルト顔画像を配布してます
ここから先は
¥ 100
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?