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

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

ただいまの
回答率

91.37%

  • Python 3.x

    2398questions

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

  • Julius

    15questions

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

juliusモジュールモードの出力結果について

解決済

回答 1

投稿 2017/12/01 12:12

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

reo_sax

score 1

前提・実現したいこと

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

問題点がありましたら、改善の指摘をしていただけると嬉しいです。
お願いします。

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

問題の出力結果

b'<RECOGOUT>\

'b'  <SHYPO RANK="1"'b' SCORE="-3272.057617"'b'>\

'b'    <WHYPO'b' WORD=""'b' CLASSID="<s>"'b' PHONE="'b'silB'b'"'b' CM="0.474"'b'/>\

'b'    <WHYPO'b' WORD="\x82\xa0\x82\xea"'b' CLASSID="\x82\xa0\x82\xea+\x8a\xb4\x93\xae\x8e\x8c"'b' PHONE="'b'a'b' r'b' e'b'"'b' CM="0.007"'b'/>\

'b'    <WHYPO'b' WORD="\x81B"'b' CLASSID="</s>"'b' PHONE="'b'silE'b'"'b' CM="1.000"'b'/>\

'b'  </SHYPO>\

'b'</RECOGOUT>\


理想の出力結果

<RECOGOUT>
  <SHYPO RANK="1" SCORE="-6888.637695" GRAM="0">
    <WHYPO WORD="silB" CLASSID="39" PHONE="silB" CM="1.000"/>
    <WHYPO WORD="上着" CLASSID="0" PHONE="u w a g i" CM="1.000"/>
    <WHYPO WORD="を" CLASSID="35" PHONE="o" CM="1.000"/>
    <WHYPO WORD="白" CLASSID="2" PHONE="sh i r o" CM="0.988"/>
    <WHYPO WORD="に" CLASSID="37" PHONE="n i" CM="1.000"/>
    <WHYPO WORD="して" CLASSID="27" PHONE="sh i t e" CM="1.000"/>
    <WHYPO WORD="下さい" CLASSID="28" PHONE="k u d a s a i" CM="1.000"/>
    <WHYPO WORD="silE" CLASSID="40" PHONE="silE" CM="1.000"/>
  </SHYPO>
</RECOGOUT>

該当のソースコード

# -*- coding: utf-8 -*-
#!/usr/bin/env python
from __future__ import print_function
import socket
from contextlib import closing
import subprocess
from time import sleep
import xml.etree.ElementTree as ET

def main():
    p = subprocess.Popen(["start_julius.sh"], stdout = subprocess.PIPE, shell = True)
    sleep(3)

    host = 'localhost'
    port = 10500
    bufsize = 4096
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((host,port))

    try :
        data = ""
        while 1:
            if '</RECOGOUT>' in data:
                print(data)
                break
            elif '<RECOGOUT>' in data:
                data = data + str(sock.recv(1024))
            else :data = str(sock.recv(1024))

    except KeyboardInterrupt:
            p.kill()
            sock.close()

    return data

if __name__ == '__main__':
    recv_data=main()
#start_julius.sh

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

試したこと

-charconv でsjis、euc、utf8を組み合わせを変えながら実行してみたのですが、実行結果は変わりませんでした・・・

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

使用言語:Python3

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

0

JuliusをPythonから呼び出して結果をJuliusからPythonに渡すときに、Pythonにはstr型ではなくbytes objectとして渡されます。したがって、これをデコードする必要があります。

    try :
        data = ""
        while 1:
            if '</RECOGOUT>' in data:
                print(data)
                break
            elif '<RECOGOUT>' in data:
                data = data + sock.recv(1024).decode('utf-8')
            else :data = sock.recv(1024).decode('utf-8')

投稿 2017/12/01 12:25

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/01 13:58

    無事解決いたしました!ありがとうございます!

    キャンセル

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

ただいまの回答率

91.37%

関連した質問

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

  • Python 3.x

    2398questions

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

  • Julius

    15questions

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