1. はじめに
- 普段、家のAlexaにいろいろお願い事をしたりしているが、Alexaみたいな音声対応アプリを作りたいと思っていた。
- 2025/4に、「Amazon Nova Sonic」という、Speech to Speech タイプのLLMがリリースされた。これまでのような「音声入力→音声認識→文字化→回答生成→音声化→音声出力」といった複数のプロセスが不要で、これ一つで音声入出力ができるため、比較的簡単にAlexaっぽいものを作れるのではないか、と思い、動作検証をする。
2. やったこと
- 自分のPCのマイク・スピーカーを用いて、Nova Sonicと音声会話ができるVoiceBotを作成する(サンプルコードがあるので今回はそれをそのままデプロイするだけ…)。
- 使用するサンプルはこちら。ブラウザを通じてNova Sonicと音声での会話が行えて、会話の履歴がリアルタイムにテキスト表示される。
- 2025/6時点では英語、スペイン語のみ対応のため、頑張って英語で会話する。
3. 構成図
4. 構築手順
4.1 事前準備
- PC(Windows11)のWSL2上にubuntuをインストールする(以下の状態)。
PS C:\Users\mksamba> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
- WSL2上のubuntuにAWS CLIをインストールし、プロファイル名を bedrock-testにしてaws configure を行う(本アプリのソースコードがそれ前提になっているため)。
aws configure --profile bedrock-test
- NVMをインストールする。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
nvm install node
nvm use node
- us-east-1 リージョンで、マネコンのBedrock configurations のモデルアクセスの設定にて、Nova Sonic にリクエストして有効化しておく(本アプリのソースコードがus-east-1へアクセスするようになっているため)。
4.2 サンプルアプリのインストール、設定
- READMEに従ってサンプルアプリをインストールする。
git clone https://github.com/aws-samples/amazon-nova-samples
cd amazon-nova-samples/speech-to-speech/sample-codes/websocket-nodejs
npm install
npm run build
npm start
5. 動作確認
- chromeで http://localhost:3000 にアクセスし、「Start Streaming」を押すと、ユーザの音声待ち受け状態になる。
- 私の日本人的な発音でも正確に認識されており、ナチュラルな速度であまり待たされることなく音声での回答が得られる。
6. 所感
- これだけでも英会話の練習になりそう!
- 音声入力開始・終了時に毎回ボタンを押す必要はなく、自動でユーザの音声入力の切れ目を認識して回答してくるため、自然な会話をしているのに近い。
- とりあえず、PCのマイクやスピーカーでの音声入出力ができることは分かった。どのようなAPIでBedrockと通信できているのか、RAGやMCPとの連携方法など、引き続き検証したい。