LoginSignup
21
21

More than 5 years have passed since last update.

Node経由でJuliusを操作する

Posted at

オープンソースの音声認識エンジンJulius を使って node 上でディクテーションしたい。
ディクテーションとは口述書き取りのこと。

ようするに自動書記的なことをやりたいというわけです。
精度的にも Web Speech API を使うのがよいのですが、ネットワークが使えない場合などはローカルでどうにかするしかない。

ちなみに音声認識だったら、凹みさんの node-julius が簡単便利。

しかし今回は、音声を文章化するのが目的なので、ディクテーションキットを落としてくる
http://julius.sourceforge.jp/index.php?q=dictation-kit.html

Mac環境なので Mac OS X版 DNN版Juliusディクテーション実行キット v4.3.1 をDLする。
解凍後、dictation-kit-v4.3.1-osx ディレクトリに移動し、サーバー(モジュール)モードで起動

./bin/julius -C main.jconf -C am-gmm.jconf -module 10500

だだだっとログが出力され、最後に下記がでたら起動成功

Stat: server-client: socket ready as server
///////////////////////////////
///  Module mode ready
///  waiting client at 10500
///////////////////////////////

telnet localhost 10500 でも接続できる。
これを node の net モジュールで接続するには下記のようにする。

server.js
var net = require('net');

var client = net.createConnection(10500, 'localhost', function()
{
    console.log('connected.');
});

client.on('data', function(data)
{
    console.log(data.toString());
    client.end();
});

client.on('end', function()
{
    console.log('disconnected.');
});

Julius とは別プロセスで node を起動。

node server.js

マイクにむかって発話すると候補を出力してくれる。
精度は...うーん...

<RECOGOUT>
  <SHYPO RANK="1" SCORE="-2287.151367">
        <WHYPO WORD="" CLASSID="<s>" PHONE="silB" CM="0.407"/>
        <WHYPO WORD="中嶋" CLASSID="中嶋+名詞" PHONE="n a k a j i m a" CM="0.036"/>
        <WHYPO WORD="。" CLASSID="</s>" PHONE="silE" CM="1.000"/>
    </SHYPO>
</RECOGOUT>

アキラっていったつもり

結果はXMLで出力されるので、パースしてよしなに使う。

21
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21