我需要分析一个句子/短语以及说出每个单词所需的输出时间。例如,在句子中
How can mirrors be real if our eyes aren't?
我需要这个
Word Time
--------- -------
How 101ms
can 95ms
mirrors 180ms
be 70ms
real 120ms
if 80ms
our 99ms
eyes 101ms
aren't? 180ms
(我做了这个。这些不是实际的话语时间)
这样做的一种方法是假设单词长度与发声时间成正比,但这并不总是正确的('队列'和Q'有相同的话语时间虽然它们的字长不同)
还必须考虑存在标点符号。
奖金:认识情绪:)
有人能指出我这样做的算法/论文吗?有没有办法从现有的文本到语音代码中解决这个问题?感谢Java代码建议!
答案 0 :(得分:1)
是的,这是机器学习算法可解决的问题。就像你指出类似的发声词可以有不同的时间。我建议使用机器学习算法,特别是双层神经网络,并用更大的数据集输入。 THese算法是众所周知的。然后,神经网络可以给出一个时间估计 - 例如,它将学习如何根据上下文估计q或队列的时间。使用机器学习算法的另一个好处是,如果您将实时语音(即新输入)解码为文本,它将为您提供对此新输入的估计。
答案 1 :(得分:1)
我有个主意......
如果您想获得非常精确的结果:
有一张地图,其中包含每个可能单词的时间计数结果。这是详尽的,但实现是不言自明的,非常简单。
如果您想要对结果有一个很好的近似值:
获取一些初始数据,告诉您说出一个音节需要多长时间。可以有短音节或长音节。得到初始结果,找出说出一个短音节(比如一个队列)需要多长时间,以及一个长音节(比如一个眼睛等)多少。此外,您可以节省标点符号所需的时间。
样品:
短:50ms
长:100ms
逗号:20ms
全站:35ms等。
现在得到一个计数并乘以得到结果。
如果发现一些例外,您可以更新值,例如。 “尖叫”是一个单音节,但绝对需要超过100毫秒。你可以有一定的时间来说出一个音节。 (就像之前的例子有2个级别 - 长/短)。你可以从4个级别开始(短/中/长/很长等)