Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
# -*- coding: utf-8 -*-
#マイク0番からの入力を受ける。一定時間(RECROD_SECONDS)だけ録音し、ファイル名:mono.wavで保存する。
import pyaudio
import sys
import time
import wave
import requests
import os
import json
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)
if __name__ == '__main__':
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
PATH = '/var/tmp/tmp.wav'
APIKEY='xxxxxxxxxxxxx' #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)
@saitenntaisei

This comment has been minimized.

Copy link

commented Jul 8, 2017

I want to do this program in raspberry pi, but I can not.
It says
File "dialogue_test.py",line 72, in
data = stream.read(chunk)
File "usr//lib/python2.7/dist-packages/pyaudio.py",line 60 in read
reaturn pa.read_ stream(self._stream, num_frames)
IOError: [Erro Input overflowed]-9981
What should I do? and where is problem?
---Japanese---
このプログラムをラズベリーパイで実行しようとしたら以上のエラーが出ました

@saitenntaisei

This comment has been minimized.

Copy link

commented Jul 8, 2017

どうすればいいでしょうか?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.