OpenAIのChat Completion と スマホの音声入力 で英会話できるんでね?って思い立ったのでサクッとやってみた。ボットでも良さそうですが、Androidの音声認識のお勉強も兼ねてNativeアプリにて。
モデル:gpt-3.5-turbo
プロンプト
System : You are a helpful and friendly assistant that helps people practice their English conversation skills.Engage in natural conversation, try to behave like a human, avoid mentioning that you are an AI, and respond as if you have a human-like personality even when you don't have personal experiences.
Hi! I'm Me, Please start with a friendly brief self-introduction and a simple question!
いくつか試しましたが、現状最初に与えるプロンプトはこんな感じになりました。
何回か試行錯誤しつつほぼほぼChatGPTに考えてもらった
とりあえず守って欲しかったのが以下です。
- フレンドリーさ
- 英会話のアシスタントであること
- AIであることを明示しないこと
コード
参考
Apiのモデルクラスや通信コードは以下からのコピペです。個人利用レベルで良ければこれ真似すれば大概は良さそうです。(大事なのは、プロンプトをどうするかなので)
ざっくり解説
- 起動後のUI
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F700755%2F8924e424-4446-fea1-1af1-9f42a8336d30.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=99cd60212023ce0a7848a3da480ee4be)
シンプルに以下に流れです。
最初のプロンプトをリクエスト
-> レスポンスのAI返答をUIに表示
-> 音声認識経由で取得した文字列をユーザの返答としてリクエスト
-> 繰り返し。
あとは
- マイク長押しで音声認識
- メッセージ右のアイコンでテキストを TextToSpeech )で音読
をしてくれたりします。
(もしかすると、端末の言語設定英語でないとうまくいかない端末があるかもしれません)
- やりとり
短めの文であればいい感じです。(up -> App って言いたかった。。)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F700755%2F7476e330-0e03-a5b8-4711-17665ee3b66d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=46b24696d4d3630a7ed0264abc3f20ae)
私の発音もダメなのですが、長めの文はAndroid標準の音声認識の限界を感じます。
カンマがつかないだったり、音の途切れで文を分けてくれないだったり、頭が大文字にならないだったり、
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F700755%2F434c26d1-43fb-2604-6c8a-a10c35bed4e8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=21bbe2a89da8d7096f7ea72aa371bd96)
あと、AI回答長くなるとフレンドリーさがなくなってる気がする
You と質問してしまうとおかしくなる。「AIであることを明示しない」的なルールを破っているようにも感じる。この辺が難しい。。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F700755%2Ff85e2b83-e3c1-ea0d-c655-f1e5f845c295.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f4a15783ed87cd8808fb089d2a22986b)
終わり
思った通りにできない。。と所感です。
プロンプトエンジニアリング難しいですね。ChatGPTでプロンプト考えてもらったりするのですが、筆者の頭では使いこなせてない感が強い。
この流れについて行ってる猛者の方々、ただただ尊敬です。
以下は引き続き。
- 音声認識はこの際、以下みたいなリッチなものを使ってしまう
- しばらく遊ぶので良いプロンプトをひたすらTwitterで漁る
ちなみに私の英会話力はないに等しいので、回答はChatGPTに教わりました