0

我正在开发一个涉及说话卡通脸的 openGL 项目。我希望播放语音(编码为 mp3)并使用音频数据为其嘴巴设置动画。我以前从未真正使用过音频,所以我不确定从哪里开始,但一些谷歌搜索让我相信我的第一步是将 mp3 转换为 pcm。

我并不真正预计需要任何傅立叶变换,尽管这可能很好。当有音频时,嘴巴真的只需要四处移动(我想根据音量来做)。

任何有关实现此类功能的提示或资源指针都将不胜感激。谢谢!

-S

4

1 回答 1

2

无论您做什么,您都需要先将 MP3 解码为 PCM 数据。有许多第三方库可以为您做到这一点。然后,您需要分析 PCM 数据并对其进行一些信号处理。

从音频中自动生成逼真的口型同步数据是一个非常困难的问题,明智的做法是不要尝试解决它。我喜欢你简单地基于音量的想法。计算当前音量的一种方法是使用某种大小(例如 1/16 秒)的滚动窗口,并计算该窗口上声波的平均功率。也就是说,在第 T 帧,您计算帧 [TN, T] 的平均功率,其中 N 是窗口中的帧数。

由于Parseval 定理,我们可以轻松计算波的功率,而无需进行傅里叶变换或任何复杂的操作——平均功率只是窗口中 PCM 值的平方和除以帧数在窗口中。然后,您可以通过将功率除以某个基本功率(为简单起见可以为 1)、取对数并乘以 10来将功率转换为分贝等级。

于 2009-04-01T05:08:16.767 回答