Java版 共通API音声認識 の「分割送信モード」(認識処理を平行)の動作について

33 views
Skip to first unread message

すやま

unread,
Jan 16, 2019, 7:29:14 PM1/16/19
to 多言語音声翻訳サンドボックスサーバー技術フォーラム
こんにちは

Java版共通API(NICT SDK互換API)のソース(サンプルソース)
https://github.com/FairyDevicesRD/mimi.tagengo.examples/tree/master/src/Java/TagengoExample
の動作で気付いたのですが、

ドキュメント「自動音声翻訳共通APIで音声APIを使う」
https://mimi.readme.io/page/tagengo-api-compat
には、
2. 音声認識を行う > 2−2. 分割送信モード に、
「分割送信モードは、例えば録音を行いながら、取得した音声データの
 断片を逐次サーバに送信し認識処理を並行して行うことで、話し始め
 から認識完了までの時間を短縮するための送信モードです。」

と、【断片を逐次サーバに送信】【認識処理を平行】
記載がありますが、

この分割送信モードのAPI部分(ClientComCtrlクラスのrequestメソッド)
client.request(SRURL, stml_srin); // ①最初にxmlのみリクエストで送信
for(byte[] b : binaryDataList) {
    client.request(SRURL, b);     // ②分割した音声データを送信
}
ResponseData response = client.request(SRURL); // ③引数が空のrequest()を実行し終了を表明 結果を得る

の②の分割した音声データを送信するAPIでは、
何もサーバーに送信されておらず(データ等の情報がサーバにアップされる通信が発生していない)、
③の終了を表明したときに、今まで送信した(はず)分の音声データが一括してサーバにアップされているようです。
(分割送信されていない)

これは、ドキュメントとは異なる動作のようです。
ドキュメントとSDKどちらの記載が正しいのでしょうか

何卒よろしくお願いいたします

吉川哲史

unread,
Jan 18, 2019, 2:51:04 AM1/18/19
to 多言語音声翻訳サンドボックスサーバー技術フォーラム
Android、iOSアプリについては弊社が公開しているlibmimiioというWebSocketクライアントを
ラップする形で分割送信できるようにしているのですが、
Java版については(元がC++製ライブラリということもあり)、
プラットフォームごとにライブラリをビルドして提供することが難しく
現在は擬似的に分割送信する(API上は分割してリクエストする)形の実装となっております。

libmimiio

ご質問への回答としては、Java版については
SDKとドキュメントは合っていないことになります。

ご利用者さまの環境で、libmimiio をビルドしていただければ
サンプルバイナリなどで分割送信ができますので、
もしお急ぎであればそちらを試していただくことはできますでしょうか。

すやま

unread,
Jan 20, 2019, 9:48:56 PM1/20/19
to 多言語音声翻訳サンドボックスサーバー技術フォーラム
こんにちは

ご回答、ありがとうございます。
実際には、現状 Java版共通API(NICT SDK互換API) ではなく、
API (WebSocket) を直接利用しておりますので、当方側には急ぐ必要等は全くございません。

ただ、Java版共通APIを利用の他の方で、リアル音声処理系のアプリ開発で、Javaで分割送信されている方が
いらっしゃるかもしれないので。。。。

現状、Java版共通APIに関しては、
断片を逐次サーバに送信、認識処理を平行 していない
と、告知しておいたほうが良いのではと思いますが。

 

吉川哲史

unread,
Jan 21, 2019, 3:50:32 PM1/21/19
to 多言語音声翻訳サンドボックスサーバー技術フォーラム
ご指摘ありがとうございます。
ドキュメントを何らかの形で修正する方向で検討いたします。
Reply all
Reply to author
Forward
0 new messages