【问题标题】:How can I measure the time it takes to utter words in a phrase?如何测量在短语中说出单词所需的时间?
【发布时间】:2016-01-27 06:35:51
【问题描述】:

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

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

【问题讨论】:

  • 嗯...您希望在 Java 平台上获得该结果?我有一个这样的示例,但此示例仅在 Android 中运行。如果你不关心平台,我会用我的示例代码写答案。
  • android 很好:) 除了它不是通过使用话语监听器并将句子分解为单词
  • 哦..我使用了你说的例外。为什么不使用它们?有什么特殊原因吗?
  • @Kae10 试过这个方法。听起来很波涛汹涌。这听起来像“玛丽..有..A..小..羔羊”而不是“玛丽有一只小羔羊”

标签: java algorithm text-to-speech phonetics


【解决方案1】:

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

【讨论】:

  • 这必须在低功耗设备上运行,因此 ML 不会削减它。这是已经解决的通用文本到语音技术的子问题。你能在这个领域推荐一些东西吗?
【解决方案2】:

我有个主意……

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

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

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

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

示例:

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

现在进行计数并乘以得到结果。

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

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2015-01-11
    • 2020-04-14
    • 2015-09-12
    相关资源
    最近更新 更多