1

だから私はこのループを持っています:

for (int i =0; i< ([rounds_words count]-1); i++){
  [self.fliteController say:[rounds_words objectAtIndex:(i)] withVoice:self.slt];
}

ここで、array_o_wordsは、OpenEarsのTtSエンジンフリットを使用して言いたい文字列の配列です。

http://www.politepix.com/openears/#FliteController_Class_Referenceの指示に従いましたが、もちろん、これはインスタンスが1つしかないことを示しています。fliteController = nilをリセットしようとしましたが、これではまったく機能しなくなります。

ループを機能させるためのアドバイスはありますか?

4

2 に答える 2

1

OpenEars 開発者はこちら。FliteController の現在の実装では、最初のインデックスで NSString を読み上げ、OpenEarsEventsObserver デリゲート メソッド fliteDidFinishSpeaking が起動するのを待ち、次のインデックスで NSString を読み上げることなどによって、目的の結果が得られます。

于 2012-10-24T12:30:10.883 に答える
0

ループは正常に機能しているように見え、問題が別の場所にあると考えさせられます。一度に問題のオブジェクトのインスタンスは 1 つしか存在できないと言うので、次のイベントを開始する時点がわかるように、イベントごとにある種の完了ハンドラーを考え出す必要があると思います。

さらに、ループ内のオブジェクトに nil を渡すと操作が中断されることは間違いありません。これは基本的に、配列を循環して各オブジェクトに開始するように指示し、すぐにそのオブジェクトに nil を指示するようなものです。

余談ですが、配列内のすべてのアイテムに対して操作を実行する場合は、次の変更を検討してください。

使用する:

for (int i =0; i < ([rounds_words count]); i++)

現状では、現在のループは常に 1 つのショートになります。

于 2012-10-24T04:08:26.833 に答える