Autohotkey 逐字生成与文本到语音同步的定时文本?
如何逐字生成与文本到语音(TTS)同步的定时文本(例如字幕) 我希望使用我在Windows 10上使用过的高质量SAPI5语音(例如,IVONA提供的语音)来执行此操作 在Windows上,我们已经有一些很好的免费TTS程序:Autohotkey 逐字生成与文本到语音同步的定时文本?,autohotkey,text-to-speech,sapi,ttml,Autohotkey,Text To Speech,Sapi,Ttml,如何逐字生成与文本到语音(TTS)同步的定时文本(例如字幕) 我希望使用我在Windows 10上使用过的高质量SAPI5语音(例如,IVONA提供的语音)来执行此操作 在Windows上,我们已经有一些很好的免费TTS程序: -开源 -封闭源 微软自己最基本的图形用户界面——目前可用——似乎可以追溯到2001年 TTSApp可以生成WAV格式的音频文件。Balabolka创建MP3文件 以及卡拉OK中使用的LRC文件的同步定时文本-但只能逐行进行,不能逐字进行。 然而,两者都在屏幕上实时大声说
然而,两者都在屏幕上实时大声说话时逐字突出显示 如果我有一些TTS/SAPI5源代码,我可以在每次生成新词时简单地检查时钟,并将时间和该词写入文件。有没有人知道有哪个项目会暴露出这种编程水平——所以我可以从那里开始 2016年9月更新 我发现TTSApp是由某个jballi在2012年重新实现的 我已经修改了该代码,使其能够在每次onWord事件处理程序启动时以毫秒为单位追加到文本文件中。 但我仍然需要做两次传球:
顺便说一句,VisualBasic源似乎已存档。可以脱机执行所有这些操作 您可以使用SAPI生成WAV文件,同时指定
DoEvents
-documented
每个事件(例如音素/单词/句子)的二进制表示形式会附加到WAV文件的末尾。某个Hans在2009年记录了WAV/SAPI格式
这一切都可以通过对jballi 2012的简单修改来实现
基本上,在Example1GUI.ahk
SpFileStream.Open(SaveToFileName,SSFMCreateForWrite,False)
;-- Set the output stream to the file stream
SpVoice.AllowAudioOutputFormatChangesOnNextSet:=False
SpVoice.AudioOutputStream:=SpFileStream
;-- Speak using the given flags
SpVoice.Speak(Text,SpeakFlags)
以下是:
SpFileStream.Open(SaveToFileName,SSFMCreateForWrite,True) ;-- DoEvents
;-- Set the output stream to the file stream
SpVoice.AllowAudioOutputFormatChangesOnNextSet:=False
SpVoice.AudioOutputStream:=SpFileStream
if not Sink ;-- DoEvents label
{
ComObjConnect(SpVoice, "On")
Sink:=True
}
;-- Speak using the given flags
SpVoice.Speak(Text,SpeakFlags|SVSFlagsAsync|SVSFPurgeBeforeSpeak)
我环顾四周,找到了可能有用的方法。如果您需要比SPEI_SOUND_START和SPEI_SOUND_End更高的准确性,您肯定必须调用isprecResult::GetResultTimes谢谢Lesley Gushurst-我将查看Annosoft的SAPI 5.1 Lipsynccode。现在我明白了-Lipsync程序正在解决一个微妙的不同问题。它正在生成定时文本是的,但它不会同时合成语音音频。。。好的,那么如果你已经在TTS中使用Speak call,你有没有研究过SPEI_单词的边界?