1. 話者が発話を開始する
2. 話者が発話を終了し、クライアントプログラムが発話データをまとめる
3. クライアントプログラムがTCP経由でサーバにクエリを送る
↓
4. サーバがTCP経由でクエリを受け取る
5. クエリを処理する(音声認識処理)
6. サーバからTCP経由でクライアントに認識結果を送る
↓
7. クライアントが認識結果を受け取る
2.の終了から7.の終了までの応答時間を小さくすることを目標とする
---
模擬実験では、実際には発話はすでに完了しているため、
スケジュール表を元に、一定のタイミングで発話が完了したものとして
その時刻から応答時間を計測する。
「実際にTCP送信を始めた時刻」ではなく「スケジュール表に基づく発話終了時刻」
からの計測であるという点がポイントとなる。
2010年7月20日火曜日
2010年7月14日水曜日
StreamSR : 入力データレートとスループット
2010年7月13日火曜日
StreamSR : ビーム幅と入力データレート
トリビアルなテストデータを用いて、ビーム幅に対する入力データレートを測定した。
ソースノード数 : 4、認識ノード数 : 16
一回目(認識ノードのCPU使用率は100%)

二回目(CPU使用率不明)

---
補足
ビーム幅を x と置くと、音声処理時間(実時間係数 : RTF)は Ax+B で定式化される(はず)
データ入力でバッファリングが起こる、などの関係上、入力データレート ≒ スループット となる。
なので、入力データレート ∝ 1/(Ax+B) になる(はず)
---
確認事項
/tmp/ /dev/shm/ などにファイルを置いて試してみる。
今回のテストでは低いビーム幅から高いビーム幅の順にスクリプトを回したが、
逆に高いのから順にすると結果が変わるか確認。
ソースノード数 : 4、認識ノード数 : 16
一回目(認識ノードのCPU使用率は100%)

二回目(CPU使用率不明)

---
補足
ビーム幅を x と置くと、音声処理時間(実時間係数 : RTF)は Ax+B で定式化される(はず)
データ入力でバッファリングが起こる、などの関係上、入力データレート ≒ スループット となる。
なので、入力データレート ∝ 1/(Ax+B) になる(はず)
---
確認事項
/tmp/ /dev/shm/ などにファイルを置いて試してみる。
今回のテストでは低いビーム幅から高いビーム幅の順にスクリプトを回したが、
逆に高いのから順にすると結果が変わるか確認。
2010年7月9日金曜日
StreamSR : 入力ボトルネック
以前からの変更点
・システムの入力を file: から stcp: に変更
・学習ユニットと認識ユニットを統合
問題点
・stcp: に変更したからなのか、入力データレートが非常に低い
・認識ノードのCPU使用率が100%までいかない
解決案
・無理矢理すべての入力をひとつの file: からの入力にまとめる
・stcp: を使う場合、TCP入力スクリプトを改良、音声形式をMFCCに変更、など
・システムの入力を file: から stcp: に変更
・学習ユニットと認識ユニットを統合
問題点
・stcp: に変更したからなのか、入力データレートが非常に低い
・認識ノードのCPU使用率が100%までいかない
解決案
・無理矢理すべての入力をひとつの file: からの入力にまとめる
・stcp: を使う場合、TCP入力スクリプトを改良、音声形式をMFCCに変更、など
2010年7月6日火曜日
StreamSR : 現状メモ(2)
(言語化されていない記事)
学習ユニット
Decoderでスループットが低い場合、当然それに従って、バッファリングが生じて入力データレートも低くなってしまう。(ボトルネック)
それでも、学習ユニット内のデコーダの数を一つに限定してしまえば、ビーム幅vsスループットの学習はできる。
問題は、「認識ユニットの入力データレート増大時にビーム幅を下げる」機能の実装である。
当然だが、認識器のスループット≦入力データレートにしかならない上に、
ボトルネックの影響があるので「ボトルネックがなかった場合の」入力データレートを知ることはできない。
(この値がわかるのであれば、それに応じてビーム幅の変更が可能である。)
---
ビーム幅vsスループット、あるいはビーム幅vs(ボトルネック付き)入力データレートの学習はできるので、現在の観測された入力データレートが学習値に近づいた場合にビーム幅を下げる、というような実装ならば可能。
学習ユニット
Decoderでスループットが低い場合、当然それに従って、バッファリングが生じて入力データレートも低くなってしまう。(ボトルネック)
それでも、学習ユニット内のデコーダの数を一つに限定してしまえば、ビーム幅vsスループットの学習はできる。
問題は、「認識ユニットの入力データレート増大時にビーム幅を下げる」機能の実装である。
当然だが、認識器のスループット≦入力データレートにしかならない上に、
ボトルネックの影響があるので「ボトルネックがなかった場合の」入力データレートを知ることはできない。
(この値がわかるのであれば、それに応じてビーム幅の変更が可能である。)
---
ビーム幅vsスループット、あるいはビーム幅vs(ボトルネック付き)入力データレートの学習はできるので、現在の観測された入力データレートが学習値に近づいた場合にビーム幅を下げる、というような実装ならば可能。
2010年7月2日金曜日
User-defined sources are able to produce multiple streams.
IBMInfoSphereStreams-LangRef.pdf の28ページ (35/100) より
2010年7月1日木曜日
StreamSR : 現状の問題
ユーザ定義ソースからpunctuation0()が送られていない?
(追記 : 20100702)
先生に教えてもらった -o オプションが spadec --help から見つからなかった。
-U オプションかな?と思って試してみたけど、うまくいかなかった。
(追記2 : 20100707)
うまくいった。単純に punctuation を送るところまで処理がいっていなかっただけらしい
修正
(追記 : 20100702)
-U オプションかな?と思って試してみたけど、うまくいかなかった。
(追記2 : 20100707)
うまくいった。単純に punctuation を送るところまで処理がいっていなかっただけらしい
修正
登録:
投稿 (Atom)

