3

私は Python と Lisp で C++ を学んでおり、より正確な用語が不足しているため、3 つの C++ プログラムを「連結」する必要に出くわしました。次のことを行う最善の方法が何であるかはわかりません。

1)ポケットフィンクスはマイクから入力を受け取り、リアルタイムの自動音声認識を行い、テキストを端末に出力します。出力を次の入力に送信したい:

2)(現時点ではキーボードから)着信テキストを解析し、端末に送信される応答を生成するチャットプログラムであるChatscript。出力を次の入力に送信したい:

3) Festival。端末から入力されたテキストを読み取り、そのテキストの音声出力を生成する Text to Speech。

私はこれを行うためのさまざまな方法を模索しています。ポケットフィンクスからChatscript、フェスティバルへのパイプを実行できることを理解していますが、私が読んだことのいくつかは、オーバーヘッドのためにこれが効率的ではない方法であると信じています. また、パイプに関しては、テキスト出力で 2 つの片方向パイプ (pid == 0) を設定するという考えは正しいですか?

出力ステートメントを変更しながら、必要なライブラリ/ファイルなどを本質的に決定し、3つの void main() を「連結」することにより、(さらに多くのことを学んだら) 3つのプログラムすべてを組み合わせることができると思います (それらはすべてオープンソースです)。

誰かがこれについて何らかのガイダンス/指導を提供し、これらのどれが最も経済的で効果的であるかについて意見を述べることができますか?

よろしく、リチャード

4

2 に答える 2

1

ソース内の cout または printf を監視し、それをバッファー文字列変数に追加します。これにより、バッファーがいっぱいになるたびに、次のプログラムを呼び出して、取得したバッファーで実行できます。「リアルタイム」処理が必要ない場合は、@zch が指摘したことを実行できます。思い出した場合 (間違っている可能性があります)、パイプはデータを次のバイナリに送信する前にプログラムを終了する必要があるためです。

于 2013-01-15T21:13:25.117 に答える
1

使用する "?" 「|」を使用すると、複数のプログラムを一緒に実行できます。前の出力を後のプログラムの入力として使用する

于 2013-01-15T22:07:21.243 に答える