質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1840閲覧

[質問]RaspberryPiとdocomoAPIを用いた音声認識について

x066

総合スコア23

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/12/19 12:42

#前提・実現したいこと
簡単にできる!音声認識と音声合成を使って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は一度も動作したことがありません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

類似のエラーが大量にありますね。

・VE*RY100は一度も動作したことがありません

が一番懸念されるところです。

モジュールの重複
https://stackoverflow.com/questions/4672155/pyaudio-ioerror-no-default-input-device-available/10339307#10339307

CHUNKが大きい
https://www.raspberrypi.org/forums/viewtopic.php?t=23504

マイクの検証
https://github.com/shichao-an/soundmeter/issues/7

マイクが正しくセットできていない
https://stackoverflow.com/questions/31642765/speechrecognition-jack-server-is-not-running

一部はエラーではない、ただの警告
https://stackoverflow.com/questions/7088672/pyaudio-working-but-spits-out-error-messages-each-time

警告を何とかする方法
https://www.raspberrypi.org/forums/viewtopic.php?t=136974

以下のコードを実行するとマイクがそもそも認識されているのかがわかるかもしれません。

python

1import pyaudio 2pa = pyaudio.PyAudio() 3print(pa.get_default_input_device_info())

投稿2017/12/19 17:08

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x066

2017/12/20 05:40

ご回答ありがとうございます。 認識確認のコードを実行したところ、以下のようなメッセージが表示されました pi@raspberrypi:~ $ python file_test.py 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 {'defaultSampleRate': 44100.0, 'defaultLowOutputLatency': -1.0, 'defaultLowInputLatency': 0.008684807256235827, 'maxInputChannels': 1L, 'structVersion': 2L, 'hostApi': 0L, 'index': 0L, 'defaultHighOutputLatency': -1.0, 'maxOutputChannels': 0L, 'name': u'USB PnP Sound Device: Audio (hw:0,0)', 'defaultHighInputLatency': 0.034829931972789115} やはりマイク自体の認識がされていないのでしょうか?
x066

2017/12/21 10:42

https://qiita.com/t_oginogin/items/f0ba9d2eb622c05558f4 こちらのサイトを参考に実行してみました。 cat /proc/asound/modulesを実行したところ【0 snd_bcm2835】のみ表示されました。 やはりマイク自体を認識していないようです。 新しいマイクを購入する場合、RaspberryPiに対応しているかどうかはどう見分ければよいでしょうか?
mkgrei

2017/12/21 11:12

私自身はRaspberryPiでそのようなことを行ったことがないのでわからないのですが、 http://kyochika-labo.hatenablog.com/entry/RaspberryPi_record_voice のようにマイクの商品名とRaspberryPiで検索して誰かがすでにやってみているのかを確認するのが一番手っ取り早い気がします。 ちなみにですが、同様のマイクで https://ameblo.jp/kids-ict/entry-12236256700.html のブログに同じようなことを行って、うまく行ったとの報告例があるようです。
x066

2017/12/25 03:26

返答が遅れて申し訳ありません。 とりあえず動作例のあるSANWA SUPPLY MM-MCUSB16 USBマイクロホンの後続であるMM-MCU02BKを購入してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問