0

私は音痴の人のためのプログラムに取り組んでいます。私はsapiとTTを使用しています。プログラムは同時に手で 3D アニメーションを行います。しかし、問題は、声が(最も遅いスピーチに置かれた場合も)、私が望むもののために断食することです。そこで、音声認識を考えてみたのですが、問題は、アニメーションが始まる前にテキストに大きな処理をしなければならないことです。

それで、(.wave ファイルの私の声から) 音声認識を行い、その後 TT の同じプロセスを (Sapi イベントを使用して...) 行うことが可能かどうかを知りたいのですが、私の声で .wave を使用します。

可能であれば、方法を教えてください。より良い代替案があると思われる場合は、それらを見せてください。

お時間をいただきありがとうございます(そして私の英語を許してください)

イエスキェヴィチ

4

1 に答える 1

0

何をしたいのか理解できたので、私の知る限り、SAPI SR エンジンは、入力テキストに同期する音素レベルのマークアップを実際には提供していないと言えます。

あなたが試すことができるのは(これが機能することを実際に期待していませんが)、音声を取得し、発音文法を実行して音素を生成し、テキスト要素を取得して対応する音声のビットを見つけることです。

「発音文法」と言うときは、発音モデルがロードされたディクテーション文法を意味します。次のように設定します。

CComPtr<ISpRecoGrammar> cpGrammar;
... initialize SR engine and create a grammar ...
cpGrammar->LoadDictation(L"Pronunciation", SPLO_STATIC);

認識ハンドラーでは、要素を解析する必要があります。

ISpRecoResult* ipReco;
SPPHRASE* pPhrase;
ipReco->GetPhrase(&pPhrase);
for (int i = 0; i < pPhrase->Rule.ulCountOfElements; ++i)
{
    const SPPHRASEELEMENT * pElem = pPhrase->pElements + i;
    // examine pElem->ulAudioSizeTime, etc.
}
::CoTaskMemFree(pPhrase);

始めるにはこれで十分だと思います...

于 2010-07-20T17:30:50.260 に答える