本帖最后由 zoumengdiefly 于 2010-05-05 22:16:40 编辑

解决方案 »

  1.   

    分析wav文件格式,取得相关信息吧。
      

  2.   

    分析过,wav里面的采样数据记录的是振幅(响度)信息,没有频率(音调)信息,再说,我是要改变音调,不是要读出...
      

  3.   

    看下directmusic里有你想要的功能没,
      

  4.   

    不了解DirectX啊,那个好像是用C++实现的啊,是不是一定要学习MFC才能用DirectX啊?另外,你确定Direct Music,或者Direct Sound可以实现这个功能吗?
      

  5.   

    你学习下fft dct之类的东西,就是数字原理,上面有怎么从波形或者数字信号提取出频率信息 就是你说的音调。然后制作一个低通或者高通,或者某函数调制的滤波器就可以达到你的目的了。制作滤波器。这可能就是答案,怎么制作我也不知道 呵呵电子信息类本科里面应该有一个语音处理 里面有代码实例 你自己百度下。
      

  6.   

    对于用FFT提取频率这个我是知道的,你说的滤波器的作用是滤波吧,它不能改变波的频率啊?
    另外,你说的“电子信息类本科里面应该有一个语音处理”你是说课程吗?还是书本?
      

  7.   

    你的需求和男声变女声在原理上是一致的,即都是在保证时长的前提下,设法提高数据源的频率。psola算法就提供了一种方法。
      

  8.   

    psola可以男声变女声?有具体的实例吗?
      

  9.   

    《windows游戏编程大师技巧》关于这方面的,肯定可以给你不少帮助。
      

  10.   

    我还是想问一句,你确定DirectMusic可以解决我提出的问题吗?如果可以的话我就去学,因为我是做毕设,半个月后就要提交了,现存比较急,没多少时间了……我知道win32api里面有一个waveOutSetPitch(..)可以设置播放时的音调并保持语速和播放时间长度。可是基本上的硬件都不支持,就没有与这个函数类似的吗?其它开发包的也可以啊