【发布时间】:2016-07-01 00:36:25
【问题描述】:
如何逐字生成与文本转语音 (TTS) 同步的定时文本(例如用于字幕)?
我想使用我在 Windows 10 上使用的高质量 SAPI5 声音(例如 IVONA here 提供的声音)来完成此操作。
在 Windows 上,我们已经有一些不错的免费 TTS 程序:
TTSApp 可以生成 WAV 格式的音频文件。 Balabolka 创建 MP3 文件
以及同步的定时文本作为卡拉 OK 中使用的 LRC 文件 - 但仅在逐行的基础上,而不是逐字。
但是,两者都在屏幕上实时大声朗读时逐字突出显示。
如果我有一些 TTS/SAPI5 源代码,我可以在每次开始生成新单词时检查时钟并将时间和该单词写入文件。有谁知道任何公开该级别编程的项目 - 所以我可以从那里开始?
2016 年 9 月更新
我发现 TTSApp 在 2012 年被某个 jballi 重新实现 using AutoHotKey。
我已经修改了该代码,以在每次 onWord 事件处理程序触发时以毫秒为单位附加到文本文件。 我仍然需要通过两次:
- 快速自动通过以保存 WAV 文件和
- 创建计时文件的慢速(实时)通道。
我仍然希望找到一种方法来加速第 2 步。
顺便说一句,VisualBasic 源似乎已归档 here。
【问题讨论】:
-
我环顾四周,发现this 可能会有所帮助。如果您需要比 SPEI_SOUND_START 和 SPEI_SOUND_END 更高的准确度,您肯定需要调用 ISpRecoResult::GetResultTimes
-
感谢 Lesley Gushurst - 我会检查 Annosoft 的 SAPI 5.1 Lipsynccode。
-
现在我明白了 - Lipsync 程序正在解决一个微妙不同的问题。它正在生成定时文本,是的 - 但它不会同时合成语音音频。
-
嗯...好吧,如果您已经在 TTS 中使用 Speak 呼叫,您是否查看过 SPEI_WORD_BOUNDARY?
标签: autohotkey text-to-speech sapi ttml