#前提・実現したいこと
簡単にできる!音声認識と音声合成を使ってRaspberrypiと会話
自然会話ロボットを作ろう! RaspberryPiとArduinoで作る人工知能
上記サイト、及び書籍を元にRaspberyyPiとdocomoAPIを用いて雑談対話と音声認識機能を組み合わせた対話システムの構築を試みましたが、エラーが発生してしまいます。
#発生している問題・エラーメッセージ
tex:file.txt Please input recoding time>>>3 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front 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.surround21 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958 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 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 "final_P.py", line 72, in <module> frames_per_buffer = chunk) File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 747, in open stream = Stream(self, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/pyaudio.py", line 442, in __init__ self._stream = pa.open(**arguments) IOError: [Errno Invalid input device (no default output device)] -9996
###該当のソースコード
Python:file.py
1# -*- coding: utf-8 -*- 2#マイク0番からの入力を受ける。一定時間(RECROD_SECONDS)だけ録音し、ファイル名:mono.wavで保存する。 3 4import pyaudio 5import sys 6import time 7import wave 8import requests 9import os 10import json 11 12while True: 13 14 def recognize(): 15 url = "https://api.apigw.smt.docomo.ne.jp/amiVoice/v1/recognize?APIKEY={}".format(APIKEY) 16 files = {"a": open(PATH, 'rb'), "v":"on"} 17 r = requests.post(url, files=files) 18 message = r.json()['text'] 19 print message 20 return message 21 22 def dialogue(message="こんにちは"): 23 url = "https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY={}".format(APIKEY) 24 payload = { 25 "utt": message, 26 "context": "", 27 "nickname": "光", 28 "nickname_y": "ヒカリ", 29 "sex": "女", 30 "bloodtype": "B", 31 "birthdateY": "1997", 32 "birthdateM": "5", 33 "birthdateD": "30", 34 "age": "16", 35 "constellations": "双子座", 36 "place": "東京", 37 "mode": "dialog", 38 "t":20 39 } 40 r = requests.post(url, data=json.dumps(payload)) 41 print r.json()['utt'] 42 return r.json()['utt'] 43 44 def talk(message="こんにちは", card=1, device=0): 45 # os.system('/home/pi/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay -Dhw:{},{}').format(card, device) 46 os.system('/home/pi/3nen/Kaiwa/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay') # .format(card, device) 47 48 if __name__ == '__main__': 49 chunk = 1024 50 FORMAT = pyaudio.paInt16 51 CHANNELS = 1 52 PATH = 'tmp.wav' 53 APIKEY='docomoAPIKey' #DocomoAPI Key 54 CARD = 1 #OUTPUTの指定 55 DEVICE = 0 #OUTPUTの指定 56 57 #サンプリングレート、マイク性能に依存 58 RATE = 16000 59 #録音時間 60 RECORD_SECONDS = input('Please input recoding time>>>') 61 62 #pyaudio 63 p = pyaudio.PyAudio() 64 65 #マイク0番を設定 66 input_device_index = 0 67 #マイクからデータ取得 68 stream = p.open(format = FORMAT, 69 channels = CHANNELS, 70 rate = RATE, 71 input = True, 72 frames_per_buffer = chunk) 73 all = [] 74 for i in range(0, RATE / chunk * RECORD_SECONDS): 75 data = stream.read(chunk) 76 all.append(data) 77 78 stream.close() 79 data = ''.join(all) 80 out = wave.open(PATH,'w') 81 out.setnchannels(1) #mono 82 out.setsampwidth(2) #16bits 83 out.setframerate(RATE) 84 out.writeframes(data) 85 out.close() 86 87 p.terminate() 88 89 message = recognize() 90 talk_message = dialogue(message) 91 talk(talk_message, CARD, DEVICE)
#補足情報(言語/FW/ツール等のバージョンなど)
#####使用したソフトは以下のとおりです
・Python2.7.9
・docomoAPI
雑談対話API
音声認識API【Powered by アドバンスト・メディア】
#####ハードの規格は以下の通りです
・RaspberryPi3 Model B
・MITSUBISHI 27型ワイド三菱液晶ディスプレイ RDT271WLM(BK)
・VERY100 コンデンサーマイク 全指向性ミニUSBマイク←現在使用しているマイク
・サンワサプライ USBマイクロホン MM-MCUSB25←以前使用していたマイク
・サンワサプライのマイクは基本的に動作しますが、時々エラーが発生し、再起動すると直ることがあります
・VE*RY100は一度も動作したことがありません

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/20 05:40
2017/12/20 05:53
2017/12/21 10:42
2017/12/21 11:12
2017/12/25 03:26