今回は今までの合わせたものつくります!
話しかけるとそれに対応した回答を音声で答えてくれます
じゃあいつものサイトをさんこうに
簡単にできる!音声認識と音声合成を使ってRaspberrypiと会話
まずはpyaudioをインストール
sudo apt-get install python-pyaudio
インストールできたら確認
確認コードはこちらのサイトを参照
確認コード
実行
```
pi@raspberrypi:~ $ python pyaudio_test.py
Please input recoding time>>>3
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
Traceback (most recent call last):
File "pyaudio_test.py", line 31, in
data = stream.read(chunk)
File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
```
あら、エラー
サイトにも書いてあったけどマイクにあったサンプリング周波数変えてみ!
って書いてあったから
RATE=44100 を RATE=16000
に変更
前回も読み取る周波数16000Hzだったからそれと一緒にした方がいいかと思い
変えたら正解だった
使うマイクによってこの辺は変える必要があるみたい
```
pi@raspberrypi:~ $ python pyaudio_test.py
Please input recoding time>>>3
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
```
録音されることを確認したので次!
[AquesTalkを使ってみる]
これをダウンロードするのがやっかいだった
ラズパイに直接ダウンロードできなかったので
まずWindowsに 公式サイト からtgzをダウンロード
それからWinSCPというソフトを使ってラズパイにコピー
そして解凍する
tar xvf aquestalkpi-20130827.tar
これでAquesTalkの導入は完了!
では試してみる
cd aquestalkpi
おお!イヤホンで再生されてる!感動
最後は今回の目的
[合成音声と会話]
dialogue_test.py
これ使わせてもらい実行(APIキー部分は変更する)
```
pi@raspberrypi:~ $ python dialogue_test.py
Please input recoding time>>>3
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
こんにちは。
ぺろぺろ
ALSA lib conf.c:1701:(snd_config_load1) :1:1:Unexpected }
ALSA lib conf.c:4722:(snd_config_expand) Parse arguments error: 無効な引数です
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM hw:{},{}
aplay: main:722: audio open error: 無効な引数です
Traceback (most recent call last):
File "dialogue_test.py", line 90, in
talk(talk_message, CARD, DEVICE)
File "dialogue_test.py", line 45, in talk
os.system('/home/pi/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay -Dhw:{},{}').format(card, device)
AttributeError: 'int' object has no attribute 'format'
```
う〜ん、、エラー出てるし、合成音声流れないな〜
てか、「ぺろぺろ」って卑猥w
下の方に出てるこの部分怪しいですね
os.system('/home/pi/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay -Dhw:{},{}').format(card, device)
AttributeError: 'int' object has no attribute 'format'
どう調べたかは忘れましたが、
os.system('/home/pi/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay& ')
こうすることで解決したみたい
実行すると
((今マイクを認識してくれないため実行結果載せられませんでした))
うん!返事してくれてる!完成です!
※マイクなんだが、USBで接続してもラズパイが反応してくれないときがある。
もしかしたら熱が関係してるかも、ラズパイの電源入れたては反応してくれていたのに数時間たつとマイクを認識していない時が多々あった。その後、扇風機でラズパイ冷やしてから電源つけるとちゃんと認識してくれてたりしたから。
熱には気をつけないといけなそうだな!
次は連続でしりとりとかできるようにしたらおもしろそうだなぁ
あ、でもそろそろ3.5インチディスプレイも取り付けるようにしたいぞ
どっちかやろうっと
では、今日も読んでいただきありがとうございました!