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

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

ただいまの
回答率

91.04%

  • Python

    5219questions

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

  • Raspberry Pi

    595questions

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

[質問]RaspberryPiを用いたdocomo音声認識APIが動作しない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 130

x066

score 5

前回までの流れ

前回の質問:RaspberryPiとdocomoAPIを用いた音声認識について
前回の質問にて雑談対話と音声認識機能を組み合わせた対話システムの構築の際に発生したエラーについて回答していただきました
こちらのサイトを元にlsusbとcat /proc/asound/modulesを実行したところ、マイクの認識がされていませんでした。
そこでいくつかのサイトで動作事例のあるMM-MCUSB16 USBマイクロホンの後続機であるMM-MCU02BKを用いて動作確認を行いました。

今回の流れ

新しく購入したマイクを用いて動作実験を行いましたが、やはりエラーが発生してしまいました。
Raspberrypiのハードを変更したことでマイクが正しく認識されるようになりました。

コードを実行したところ、また別のエラーが発生してしまいました。
使用したソースコードは前回と同じです

今回発生したエラー

pi@raspberrypi:~/onsei_kanren $ python Kaiwa.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 "Kaiwa.py", line 89, in <module>
    message = recognize()
  File "Kaiwa.py", line 18, in recognize
    message = r.json()['text']
KeyError: 'text'

使用したソースコード

# -*- coding: utf-8 -*-
#マイク0番からの入力を受ける。一定時間(RECROD_SECONDS)だけ録音し、ファイル名:mono.wavで保存する。

import pyaudio
import sys
import time
import wave
import requests
import os
import json

while True:

    def recognize():
        url = "https://api.apigw.smt.docomo.ne.jp/amiVoice/v1/recognize?APIKEY={}".format(APIKEY)
        files = {"a": open(PATH, 'rb'), "v":"on"}
        r = requests.post(url, files=files)
        message = r.json()['text']
        print message
        return message

    def dialogue(message="こんにちは"):    
        url = "https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY={}".format(APIKEY)
        payload = {
          "utt": message,
          "context": "",
          "nickname": "光",
          "nickname_y": "ヒカリ",
          "sex": "女",
          "bloodtype": "B",
          "birthdateY": "1997",
          "birthdateM": "5",
          "birthdateD": "30",
          "age": "16",
          "constellations": "双子座",
          "place": "東京",
          "mode": "dialog",
          "t":20
        }
        r = requests.post(url, data=json.dumps(payload))
        print r.json()['utt']
        return r.json()['utt']

    def talk(message="こんにちは", card=1, device=0):        
        # os.system('/home/pi/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay -Dhw:{},{}').format(card, device)
        os.system('/home/pi/3nen/Kaiwa/aquestalkpi/AquesTalkPi " ' + message.encode('utf-8') + ' " | aplay') # .format(card, device)

    if __name__ == '__main__':
        chunk = 1024
        FORMAT = pyaudio.paInt16
        CHANNELS = 1
        PATH = 'tmp.wav'
        APIKEY='356a6d6851544a4b3647456e656a37325a5075374b786649763266573257733232756d35666746706c4631362f7630742f34756a354c6d34736e31703470447878774e453263496736374c68474a326c7361516c4543362f7630742f34756a354c6d34736e31703470447878774e453263496736374c68474a326c7361516c4543' #DocomoAPI Key
        CARD = 1 #OUTPUTの指定
        DEVICE = 0 #OUTPUTの指定

        #サンプリングレート、マイク性能に依存
        RATE = 16000
        #録音時間
        RECORD_SECONDS = input('Please input recoding time>>>')

        #pyaudio
        p = pyaudio.PyAudio()

        #マイク0番を設定
        input_device_index = 0
        #マイクからデータ取得
        stream = p.open(format = FORMAT,
                        channels = CHANNELS,
                        rate = RATE,
                        input = True,
                        frames_per_buffer = chunk)
        all = []
        for i in range(0, RATE / chunk * RECORD_SECONDS):
            data = stream.read(chunk)
            all.append(data)

        stream.close()    
        data = ''.join(all)                    
        out = wave.open(PATH,'w')
        out.setnchannels(1) #mono
        out.setsampwidth(2) #16bits
        out.setframerate(RATE)
        out.writeframes(data)
        out.close()

        p.terminate()

        message = recognize()
        talk_message = dialogue(message)
        talk(talk_message, CARD, DEVICE)


このエラーの発生原因及び修正方法について教えていただきたいです

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • CHERRY

    2018/01/11 17:01

    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 とか 言われていますけど サーバーに接続して通信できてますか?

    キャンセル

  • x066

    2018/01/11 23:23

    無線でインターネットには接続できています。APIキーに関しましては他のプログラムだと問題なく接続できますが、なぜかこのプログラムはできません。

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 91.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    5219questions

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

  • Raspberry Pi

    595questions

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