繁体   English   中英

JavaScript 音频分析语音

[英]JavaScript audio analyze phonetics

我能够使用 JavaScript 中的 AudioContext API 分析音频数据,并将波形绘制到 canvas。

问题是,加载音频数据后,我有大约 1024 长的 Uint8Array 数据点代表波长(每帧),我如何猜测这是发出的声音(从这里提到的语音选择中,即:

丽莎

“P”、“B”和“M”音时闭嘴。 这几乎与Ⓧ形状相同,但嘴唇之间的压力非常轻微。

丽莎乙

嘴巴微微张开,牙齿咬得很紧。 这种口型用于大多数辅音(“K”、“S”、“T”等)。 它也用于一些元音,例如蜜蜂中的“EE”音。

丽莎 C

张开嘴。 这种嘴形用于元音,如男性中的“EH”和蝙蝠中的“AE”。 它也用于某些辅音,具体取决于上下文。

当从 Ⓐ 或 Ⓑ 动画到 Ⓓ 时,此形状也用作中间。 所以请确保动画ⒶⒸⒹ和ⒷⒸⒹ看起来流畅!

丽莎 D

张大嘴巴。 这种嘴形用于像父亲中的“AA”这样的元音。

丽莎 E

嘴巴略圆。 这种嘴形用于元音,如 off 中的“AO”和 Bird 中的“ER”。

当从 Ⓒ 或 Ⓓ 动画到 Ⓕ 时,此形状也用作中间。 确保嘴巴张得比Ⓒ大。 ⒸⒺⒻ和ⒹⒺⒻ都应该产生平滑的 animation。

丽莎 F

皱起的嘴唇。 这种嘴形用于“UW”,如你,“OW”如展示,“W”如方式。

丽莎 G

上齿接触下唇的“F”如 for 和“V”如 very。

这种扩展的嘴形是可选的。 如果你的美术风格足够细致,它会大大提升 animation 的整体外观。 如果您决定不使用它,您可以使用 extendedShapes 选项来指定。

丽莎 H

这种形状用于长的“L”音,舌头在上牙后面抬起。 嘴巴至少应该像Ⓒ那样张开,但不要像Ⓓ那样完全张开。

这种扩展的嘴形是可选的。 根据您的艺术风格和头部的角度,舌头可能根本不可见。 在这种情况下,绘制这个额外的形状是没有意义的。 如果您决定不使用它,您可以使用 extendedShapes 选项来指定。

丽莎 X

空闲 position。 这种嘴型用于讲话中的停顿。 这应该与您的角色在不说话的情况下四处走动时使用的嘴图相同。 它与Ⓐ几乎相同,但嘴唇之间的压力略小:对于Ⓧ,嘴唇应该闭合但放松。

这种扩展的嘴形是可选的。 rest positionⓍ和闭嘴Ⓐ之间是否应该有任何明显的区别取决于您的艺术风格和个人品味。 如果您决定不使用它,您可以使用 extendedShapes 选项来指定。

)?

我知道有很多机器学习选项,例如MeydaTensorflow以及其他机器学习方法,但我想要一种算法来实时去除上述语音。 它不一定是 100% 准确的,只是比随机选择嘴巴的某些值略好...在这一点上,任何比随机更好的东西都可以。

我知道音频识别可以用PocketSphinx.js来完成,这在rhubarb Lipsink 中用于计算,但我正在寻找的是一个非常简单的算法,给定每帧波长的 1024 个数据阵列,关于如何获得语音,同样,它不必是 100% 准确的,但它必须是实时的,并且比随机更好。

基本上,pocketsphinx 的问题在于它的目的是获得语音到单词的识别,所以它有很多额外的代码可以将声音翻译成它在字典中编译的确切单词,但我不需要我只需要自己提取声音,而不需要将它们转换为一些字典,所以理论上不应该有太多的偷听。

我只想要一个简单的算法,它可以从 AudioContext 中获取已经获取的数据,来相对地猜测上面提到的列表中正在发出什么声音再次,非常清楚:

不是在寻找 PocketSphinx 解决方案,也不是任何其他“准备就绪”库,我想要的只是上面提到的每个独特声音的数学公式,它可以适应任何编程语言

如果您不想要 TensorFlow 答案,我不确定为什么将其标记为tensorflow 如果您想要的只是比随机更好的东西,那么您几乎肯定最好使用像 PocketSphinx 这样的 package 并将返回的单词分解成它们的语音。 您所要求的非常困难:请参阅讨论为什么herehere的线程。

但是,如果您绝对热衷于为此寻找算法......

环顾四周,我发现大多数项目都使用了机器学习,除了少数项目:2008 年的这篇 论文,1993 年的这篇论文,它被扩展成完整的博士论文,以及1997 年的麻省理工学院研究论文 这是作者在上一篇中使用的算法示例,仅针对 /R/ 声音:

算法

论文说他们在 C++ 中实现了他们的算法,但不幸的是没有包含代码。

最重要的是,我建议坚持使用 PocketSphinx,除非这是您自己的博士研究的一部分!

更新:

根据要求在此处添加更多详细信息。 Pocketsphinx 解释说,如果你一直向下滚动到他们自述文件中的第 8 部分,他们会使用一个名为Sphinxtrain的机器学习平台,该平台也提供法语和中文版本。 但是在 Sphinxtrain 页面的顶部,有一个指向他们的“新库”的链接,称为Vosk

Vosk 支持 9 种语言,并且足够小,可以安装在 Raspberry Pi 上,因此它可能更接近您正在寻找的内容。 反过来,它使用名为Kaldi的开源 C++ 语音识别工具包,该工具包也使用机器学习。

Arduinos 比 Raspberry Pis 受到的限制要多得多,我相信你知道,所以如果你朝着这个方向发展,你可能真的想联系麻省理工学院论文的作者。 作者使用了 200 MHz Pentium Pro 处理器和 32 MB RAM,这大约是最好的 Arduino 的功率水平: Arduino Yun 2包括一个 400 MHz Linux 微处理器和 64 MB RAM。

希望这能给你足够的咀嚼。 祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM