前提・実現したいこと
Juliusをモジュールモードの以下のコマンドで起動し、並行して以下、該当のソースコードを立ち上げ、ソケット通信により、
発した音声をprintで出力する。
コマンド
julius -C ~/julius-4.4.2/julius-kit/grammar-kit-4.3.1/XXXX.jconf -module
発生している問題・エラーメッセージ
結果:[s]発した音声[s]が出力されてほしいのに、なにも表示されません。
該当のソースコード
python3
1# -*- coding: utf-8 -*- 2 3import socket 4import string 5import sys 6import io 7sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 8sys.stdin = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") 9 10host = 'localhost' # Raspberry PiのIPアドレス 11port = 10500 # juliusの待ち受けポート 12 13# パソコンからTCP/IPで、自分PCのjuliusサーバに接続 14sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 15sock.connect((host, port)) 16 17data =('') 18while True: 19 20 # "/RECOGOUT"を受信するまで、一回分の音声データを全部読み込む。 21 while data.find('</RECOGOUT>\n.') == -1: 22 data = data + sock.recv(1024).decode('utf-8') 23 24 # 音声XMLデータから、<WORD>を抽出して音声テキスト文に連結する。 25 strTemp = "" 26 for line in data.split('\n'): 27 index = line.find('WORD="') 28 if index != -1: 29 line = line[index+6:line.find('"',index+6)] 30 strTemp = strTemp + line 31 32 print( "結果:" + strTemp ) 33 data = ('')
試したこと
上記、最終行のdata =('')を削除すると、
結果:[s]発した音声[s]が連続して出力されるため、
初期化するための最終行のdata =('')がミスっているのではと考えています。
それ以外には、printで日本語を出すために
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stdin = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
を入れていまして、これが悪さしているのではとも考えています。
補足情報(FW/ツールのバージョンなど)
ハードウェア ラズパイ3B+
あなたの回答
tips
プレビュー