ラズベリーパイと音声でLEDの制御ができない。ご教示をお願いいたします。
Q&A
Closed
https://qiita.com/mooriii/items/6a16663ce9a80b2e2b92
の記事を見ながら、実行しています。
途中までは、imagou様のお力を頂き、実行できましたが、最後の最後の以下が動きません。ご知見のある方、対応方法をご教示頂けませんでしょうか。
の3行を自身の環境に合わせて、
$ sudo modprobe snd-pcm-oss
$ julius -C ~/julius/julius-kit/dictation-kit-v4.4/am-gmm.jconf -nostrip -gram ~/julius/dict/denki -module
$ python /home/pi/prog/juliustest.py
と実行すると、
1行目の実行時
2行目の実行時
違うターミナルウインドウで3行目の実行時
その直後、2行目の実行時のターミナルウィンドウ
となり、記事のようにLEDの制御できません。
■わたしの推定
3行目を実行したときのエラーメッセージ
File "/home/pi/prog/juliustest.py", line 19, in
while (string.find(data, "\n.") == -1):
AttributeError: module 'string' has no attribute 'find'
において、python3での実行環境において対応していないもの(Python2までの対応)、と推定しております。
また、推定をベースに調べると、以下のような記事にたどり着きましたが、対応が不明です。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11199585811
#/usr/bin/env python
#coding: utf-8
import socket
import string
import led_h as on
import led_l as off
import flash
host = '192.168.2.101' # Raspberry PiのIPアドレス
port = 10500 # juliusの待ち受けポート
#パソコンからTCP/IPで、自分PCのjuliusサーバに接続
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
data = ""
while True:
# "/RECOGOUT"を受信するまで、一回分の音声データを全部読み込む。
while (string.find(data, "\n.") == -1):
data = data + sock.recv(1024)
#音声XMLデータから、を抽出して音声テキスト文に連結する。
strTemp = ""
for line in data.split('\n'):
index = line.find('WORD="')
if index != -1:
line = line[index + 6:line.find('"', index + 6)]
if line != "[s]":
strTemp = strTemp + line
if strTemp != "":
print("結果:" + strTemp)
if strTemp == "つけて":
on.main()
if strTemp == "けして":
off.main()
if strTemp == "てんめつ":
flash.main()
data = ""
以上です。