我想编写一个播放读取文本的音频文件的程序。 我想要高亮显示音频文件以绿色播放的当前音节以及当前单词的其余部分为红色。 我应该使用什么样的数据结构来存储音频文件以及告诉程序何时切换到下一个单词/音节的信息?
答案 0 :(得分:3)
这是一个略微左侧的建议,但你看过卡拉OK软件吗?它可能不会被视为“严重”,但听起来与你正在做的非常相似。例如,Aegisub是一个字幕程序,可让您以SSA / ASS格式创建字幕。它有卡拉OK工具,用于显示所选单词或部分。
它最常用于字幕动漫,但如果您有合适的播放器,它也适用于音频。这些在Mac上非常罕见。
格式与Yuval A提出的格式类似:
{\K132}Unmei {\K34}no {\K54}tobira
{\K60}{\K132}yukkuri {\K36}to {\K142}hirakareta
长度是持续时间而不是绝对偏移。这样可以更轻松地移动线的起点而无需重新计算所有偏移。双重表示暂停。
是否有充分的理由需要将其作为Java程序的一部分,或者是现成的解决方案?
答案 1 :(得分:1)
一个简单的数据结构如何描述下一批字母包含下一个音节和切换到该音节的时间戳?
只是一个简单的例子:
[0:00]这[0:02]是[0:05] [0:07] ex- [0:08] am- [0:10] ple
答案 2 :(得分:1)
要突出部分单词的声音,就像你进入phonetics那些组成单词的声音一样。将声音文件转换为“读取”文本的内容将非常困难。您最好的选择是使用文本本身来驱动基于语音的引擎,例如基于Java Speech API的FreeTTS。
要做到这一点,你将不得不将文本读取,将其分成每个拼音音节并播放。所以“音节”是“syl”“la”“ble”。玩会是;突出syl,说出来并转移到下一个。
这实际上是“老式的”,它以同样的方式在原版Apple II上完成。
答案 3 :(得分:0)
你可能想熟悉FreeTTS - 这个开源工具:http://freetts.sourceforge.net/docs/index.php -
您可能希望在给定的时间点仅向TTS引擎提供几个单词 - 突出显示它们,一旦这些单词被SPOKEN输出,请将其高亮显示并移至下一批单词。
BR,
〜A