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

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

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

Julius は,音声認識システムの開発・研究のためのオープンソースの高性能な汎用大語彙連続音声認識エンジンです。数万語彙の連続音声認識を一般のPCやスマートフォン上でほぼ実時間で実行できる軽量さとコンパクトさを持っています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

2886閲覧

Julius モジュールモードでの音声認識の出力結果をPython3系で扱う

selva604

総合スコア14

Julius

Julius は,音声認識システムの開発・研究のためのオープンソースの高性能な汎用大語彙連続音声認識エンジンです。数万語彙の連続音声認識を一般のPCやスマートフォン上でほぼ実時間で実行できる軽量さとコンパクトさを持っています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/07/13 14:55

前提・実現したいこと

現在、julius dictation-kitを利用して認識結果をテキストとして取得するプログラムを作っているのですが、モジュールモードで結果を取得するまではできたのですが、肝心の認識結果がよくわからない文字列が出力されてしまいます。また、WHYPO WORDだけ出力したいです。

###理想の出力

<RECOGOUT> <SHYPO RANK="1" SCORE="-1874.638672" GRAM="0"> <WHYPO WORD="<s>" CLASSID="3" PHONE=" silB " CM="1.000"/> <WHYPO WORD="金" CLASSID="0" PHONE="k i m u" CM="0.980"/> <WHYPO WORD="に" CLASSID="1" PHONE="n i" CM="1.000"/> <WHYPO WORD="行って" CLASSID="2" PHONE="i q t e" CM="1.000"/> <WHYPO WORD="</s>" CLASSID="4" PHONE="silE" CM="1.000"/> </SHYPO> </RECOGOUT> 結果 金に行って

発生している問題・エラーメッセージ

SPEECH START 筝・ CLASSID=縲・ CLASSID= 篋・ CLASSID=縲・ CLASSID= 繧・b痺ォ繧・b痺ォ繧・ CLASSID=臀・¥縺ョ縺・ CLASSID=縺・ CLASSID=縲・ CLASSID= 羇丈焔縺吶k羇セ縲・ CLASSID= 縺・s縺ァ縺・ CLASSID=縲・ CLASSID=縺・ CLASSID=縲・ CLASSID= 罩≪¥痰・ CLASSID=縲・ CLASSID= 髱ゥ繝代Φ縲・ CLASSID=縺・s縲・ CLASSID= 縺ゅ≠縲・ CLASSID=縺ゅ≠縲・ CLASSID= 縺ゅ・篏・ CLASSID=縺・ヮ痰・ CLASSID=縲・ CLASSID= 縺薙s縺・=メッ縲・ CLASSID= 繝溘く縺ッ縲・ CLASSID= 譌ゥ繝峨い縺縲・ CLASSID=

該当のソースコード

import re import socket import subprocess import time HOST = "localhost" PORT = 10500 re_word = re.compile('WORD="([^"]+)"') def main(): p = subprocess.Popen(["start_julius.sh"],stdout=subprocess.PIPE, shell=True) time.sleep(3) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((HOST, PORT)) print('SPEECH START') try: data = "" while 1: if "</RECOGOUT>" in data: words = '' for word in filter(bool, re_word.findall(data)): words += word if words: print(words) data = "" else: data = data + client.recv(1024).decode('utf-8') except KeyboardInterrupt: print("KeyboardInterrupt occured.") p.kill() client.close() if __name__ == "__main__": main()

試したこと

juliusの出力結果の形式がbytes型であるため、UTF-8でデコードを行いましたが、文字化けしました。

補足情報(FW/ツールのバージョンなど)

環境はWindows10,IDEはAnacondaのSpyderです。

julius モジュールモードは以下のコマンドで実行しました。

.\bin\windows\julius.exe -C main.jconf -C am-gmm.jconf -charconv euc-jp utf-8 -module

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/07/14 01:10

…ふーん。2,3年前に見てたら、luckerお兄さんが回答してたな…。ぶっちゃけJuliusは良いプロジェクトだけど、開発方法がガラパゴスなので世界的な常識通じないんだよな。
退会済みユーザー

退会済みユーザー

2018/07/14 01:11

ま、がんばって、としか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問