这是我的个人项目,我不知道从哪里开始,因为它超出了我的舒适区.
我知道有一些语言学习软件允许用户录制他或她的声音,并将该声音与所述语言的母语人士进行比较.
我的问题是,如何实现这一目标?
我的意思是,如何比较用户和母语者之间的发音?
如果您正在寻找相对简单的东西,您可以简单地计算录音的 MFCC (http://en.wikipedia.org/wiki/Mel-Frequency_cepstrum),然后查看一些简单的东西,例如录音与母语人士发音的该单词的平均系数。MFCC 会将音频转换为欧氏距离与感知差异更紧密对应的空间。
当然,可能存在以下几个问题:
对齐两个记录以使系数匹配。要解决此问题,您可以查看系数的最大互相关性,而不是简单的相关性,这样您将免费获得自动的“最佳对齐”。此外,您可能需要剪掉录音的两端,以便录音中仅保留该单词的实际发音。
MFCC 映射到感知空间,但可能无法很好地对应重音错误。您也许可以尝试通过将其与“理想”发音进行比较,将其与几种不同类型的错误发音的平均值进行比较,并查看它最接近哪个模型来解决此问题。
即使是好的重音单词平均也会与理想状态有一定的“距离”。您必须考虑到这一点,并将输入的距离与“相对”良好距离进行比较。
相关性可能不是比较两个声音相对相似性的最佳方法。尝试许多不同的指标...尝试不同的 L^p 规范:(http://en.wikipedia.org/wiki/Lp_space),或者尝试以不同的方式权衡不同的 MFCC(如果我记得的话,即使在采用 MFCC 之后,虽然它们都应该具有相同的感知“重量”,但中间的那些对于我们如何感知声音仍然比高或低的声音更重要。)
声音的某些部分可能对口音的质量影响更大。也许通过瞬态检测来找到这些位置并将它们标记为更重要会很好。如果您有一大堆“好发音”和“坏发音”示例,您可能可以自动提取这些位置。
再说一遍,最终您要知道这些选项的哪种组合最有效的唯一方法就是通过测试。