Java中用于将文本与音频链接的数据结构
Posted
技术标签:
【中文标题】Java中用于将文本与音频链接的数据结构【英文标题】:Which data structure for linking text with audio in Java 【发布时间】:2008-10-05 15:35:35 【问题描述】:我想编写一个程序来播放一个读取文本的音频文件。 我想以绿色突出音频文件播放的当前音节,以红色突出当前单词的其余部分。 我应该使用什么样的数据结构来存储音频文件以及告诉程序何时切换到下一个单词/音节的信息?
【问题讨论】:
【参考方案1】:这是一个稍微偏左的建议,但是你看过卡拉 OK 软件吗?它可能被视为不够“严重”,但听起来与您正在做的事情非常相似。例如,Aegisub 是一个字幕程序,可让您创建 SSA/ASS 格式的字幕。它具有用于突出显示所选单词或部分的卡拉 OK 工具。
它最常用于动画字幕,但如果您有合适的播放器,它也适用于音频。遗憾的是,这些在 Mac 上非常罕见。
格式看起来类似于 Yuval A 提出的格式:
\K132Unmei \K34no \K54tobira
\K60\K132yukkuri \K36to \K142hirakareta
长度是持续时间而不是绝对偏移量。这使得在不重新计算所有偏移量的情况下更容易移动行的开头。双输入表示暂停。
这是否有充分的理由需要成为您的 Java 程序的一部分,或者是否有现成的解决方案?
【讨论】:
【参考方案2】:一个简单的数据结构如何描述下一批字母由下一个音节和切换到该音节的时间戳组成?
只是一个简单的例子:
[0:00] 这个 [0:02] 是 [0:05] 一个 [0:07] ex- [0:08] am- [0:10] ple
【讨论】:
【参考方案3】:要突出显示部分单词发音,就像您进入 phonetics 一样,这些发音构成单词。将声音文件转换为可以“读取”文本的文件将非常困难。最好的办法是使用文本本身来驱动基于语音的引擎,例如基于 Java Speech API 的 FreeTTS。
为此,您必须将要阅读的文本分成每个音节并播放。所以“音节”是“syl”“la”“ble”。玩会;突出显示 syl,说出它并移至下一个。
这真的是“老派”,它在最初的 Apple II 上以同样的方式完成。
【讨论】:
【参考方案4】:您可能想熟悉 FreeTTS——这个开源工具:http://freetts.sourceforge.net/docs/index.php -
您可能只想在给定时间点向 TTS 引擎提供几个词 - 突出显示它们,一旦说出,取消突出显示它们并移至下一批词。
BR, ~A
【讨论】:
我不想要合成声音,但我想使用相关文本的现有音频文件。以上是关于Java中用于将文本与音频链接的数据结构的主要内容,如果未能解决你的问题,请参考以下文章
在离线数据库中存储图像、文本注释和音频文件的方式。安卓、Java