我正在为聋哑人制作一个节目。我正在使用sapi和TTs。该程序同时用手做3D动画。但问题是,声音(也就是说,当它们放在最慢的语音时)是为了我想要的速度。所以,我考虑过语音识别,但问题是我要在动画开始之前对文本做一个大的过程。
所以,我想知道是否可以进行语音识别(来自我在.wave文件中的声音),之后做同样的TT过程(使用Sapi事件......)但是使用.wave与我的声音。
如果它可行,请告诉我如何。如果您认为有更好的选择,请让我看看它们。
感谢您的时间(并原谅我的英语)
Jesuskiewicz
答案 0 :(得分: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);
我希望这足以让你开始......