-1

我需要分析一个句子/短语以及说出每个单词所需的输出时间。例如,在句子中

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 代码建议!

4

2 回答 2

2

是的,这是可以通过机器学习算法解决的问题。就像您指出的那样,发音相似的单词可能有不同的时间。我建议使用机器学习算法,特别是两层神经网络,并将其输入更大的数据集。这些算法是众所周知的。然后神经网络可以给你一个时间的估计——它会学习例如如何根据上下文估计时间 foe q 或 Queue。使用机器学习算法的另一个优点是,如果您将实时语音(即新输入)解码为文本,它将为您提供对这个新输入的估计。

于 2016-01-27T06:41:41.860 回答
1

我有个主意...

如果你想要一个非常精确的结果:

有一张地图,其中包含每个可能单词的时间计数结果。这是详尽无遗的,但实现是不言自明的并且非常容易。

如果你想要一个很好的近似结果:

获取一些初始数据,告诉您说出一个音节需要多长时间。可以有短音节或长音节。获取初始结果以了解说出一个短音节(如 a, the, queue)和长音节(如 an, eyes 等)需要多少时间。此外,您可以确定标点符号所需的时间。

样本:

短:50ms
长:100ms
逗号:20ms
句号:35ms 等

现在得到一个计数并乘以得到结果。

如果您发现一些例外情况,您可以更新这些值,例如。“尖叫”是一个单音节,但肯定需要超过 100 毫秒。你可以有不同的时间来说出一个音节。(如前面的示例有 2 个级别 - 多头/空头)。您可以从 4 个级别开始(短/中/长/非常长等)

于 2016-01-27T07:01:00.090 回答