【发布时间】:2020-09-18 13:21:16
【问题描述】:
我能够使用 JavaScript 中的 AudioContext API 分析音频数据并将波形绘制到画布上。
问题是,加载音频数据后,我有大约 1024 长的 Uint8Array 数据点代表波长(每帧),我如何猜测这是在发出什么声音(从提到的语音选择 @987654321 @,即:
Ⓐ
丽莎
闭口发“P”、“B”和“M”音。这几乎与Ⓧ形状相同,但双唇之间的压力非常轻微。
Ⓑ
丽莎B
嘴巴微微张开,牙齿咬紧。这种口型用于大多数辅音(“K”、“S”、“T”等)。它也用于一些元音,例如蜜蜂中的“EE”音。
Ⓒ
丽莎C
张开嘴。这种嘴形用于元音,如男性中的“EH”和蝙蝠中的“AE”。它也用于某些辅音,具体取决于上下文。
当动画从Ⓐ或Ⓑ到Ⓓ时,此形状也用作中间。所以请确保动画ⒶⒸⒹ和ⒷⒸⒹ看起来流畅!
Ⓓ
丽莎
张大嘴巴。这种嘴形用于像父亲中的“AA”这样的元音。
Ⓔ
丽莎
嘴巴略圆。这种嘴形用于元音,如 off 中的“AO”和bird 中的“ER”。
当动画从Ⓒ或Ⓓ到Ⓕ时,此形状也用作中间。确保嘴巴张得比Ⓒ大。 ⒸⒺⒻ和ⒹⒺⒻ都应该产生流畅的动画。
Ⓕ
丽莎F
皱起的嘴唇。这种嘴型用于表示“UW”,如你,“OW”表示显示,“W”表示方式。
Ⓖ
丽莎
上齿与下唇接触,“F”如 for 和“V”如very。
这种扩展的嘴形是可选的。如果你的美术风格足够细致,它会大大提高动画的整体外观。如果您决定不使用它,可以使用 extendedShapes 选项指定。
Ⓗ
丽莎赫
这种形状用于长“L”音,舌头在上牙后面抬起。嘴巴至少应该像Ⓒ那样张开,但不要像Ⓓ那样完全张开。
这种扩展的嘴形是可选的。根据您的艺术风格和头部的角度,舌头可能根本不可见。在这种情况下,绘制这个额外的形状是没有意义的。如果您决定不使用它,可以使用 extendedShapes 选项指定。
Ⓧ
丽莎 X
空闲位置。这种嘴型用于讲话中的停顿。这应该与您的角色在不说话的情况下四处走动时使用的嘴图相同。它与Ⓐ几乎相同,但嘴唇之间的压力稍小:对于Ⓧ,嘴唇应该闭合但放松。
这种扩展的嘴形是可选的。休息位置Ⓧ和闭嘴Ⓐ之间是否应该有任何明显的差异取决于您的艺术风格和个人品味。如果您决定不使用它,可以使用 extendedShapes 选项指定。
)?
我知道有很多机器学习选项,例如 Meyda 和 Tensorflow 和 other machine learning methodss,但我想要一个算法来实时去除上述语音。它不一定要 100% 准确,只是比随机选择嘴巴的某些值稍微好一点......在这一点上,任何比随机更好的东西都可以。
我知道音频识别可以用PocketSphinx.js 完成,这在rhubarb lipsink for its calculations 中使用,但我正在寻找的只是一个非常简单的算法,给定每帧波长的 1024 数据阵列,关于如何获得语音,同样,它不一定要 100% 准确,但它必须是实时的,并且比随机更好。
基本上,pocketsphinx 的问题在于它的目的是获得语音到单词的识别,所以它有很多额外的代码可以将声音翻译成它在字典中编译的确切单词,但我不知道'不需要我只需要提取声音本身,而不需要将它们转换为一些字典,所以理论上不应该有那么多偷听。
我只想要一个简单的算法,它可以从 AudioContext 中获取已经获取的数据,来相对地猜测上面提到的列表中正在发出什么声音 再次,非常清楚:
我不是在寻找 PocketSphinx 解决方案,也不是任何其他“准备就绪”库,我想要的只是上面提到的每个独特声音的数学公式,即可以适应任何编程语言
【问题讨论】:
标签: javascript c++ math audio audiocontext