クラウドなどの音声認識サーバーが常に機能している場合、ロボット自身の発話も音声認識されてしまい人との会話がうまくいかない場合があります。それを回避するためには、自身が発話しているときにはロボットのマイクをOFFにし、話し終わったらマイクをONにします。pythonのプログラム例を次のとおり。
環境
- Ubuntu16.04
- Python 2.7
コード
def speak(self, sentence, sleep_time=3):
import subprocess
# 自分の声を音声認識しないように認識機能をstopする
cmd = "/usr/bin/amixer set Capture toggle"
subprocess.call(cmd.strip().split(" "))
# 下のような発話するコードを書く
self.tts_pub.publish(sentence)
# 音声認識機能を再開する
subprocess.call(cmd.strip().split(" "))


コメント