如何读写wav、mp3文件的音调(频率)

zoumengdiefly 2010-04-24 10:22:30
请高手支招,如何应用c语言和win32api读写wav、mp3文件的音调(频率)?注意不是采样频率。
...全文
1100 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看看 上面到底说了写什么
ych_chsh159357 2011-09-05
  • 打赏
  • 举报
回复
这个和码率有关系么?

xylsulala 2011-05-05
  • 打赏
  • 举报
回复
我使用的是linux系统,这个系统下提取mp3文件的音调和音长信息,应该怎么做?
zoumengdiefly 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 bottlebox 的回复:]
引用 31 楼 zoumengdiefly 的回复:
对了,还有一个问题,单纯的改变它们的实部和虚部值也只是改变了该频点的强度值吧,而该点的频率值并没有变啊

这个说法有问题吧,比如采样512个数据,fft变换后,对应到256个频点,每个频点对应多少频率值,由你的采样率决定,比如是44KHz的采样率,每个频点间隔为44000/256=171Hz,据此,你可以算出声音中2KHz频率的强度,由第……
[/Quote]
以我的理解,没错,2KHZ这个频率的强度是增大了,可是它的频率还是2KHz啊,如果声音中还有比它更小的频率,那么声音的总体频率可能会变大,问题是现在不知道一个声音中的基本频率有多少个,如果有很多个,又该如果定量的改变每个基本频率的强度,使得总体频率达到一个定量的值?
可能我没有理解清楚,希望你再提示提示?
如果能直接交流就更好了,我的QQ是875156226.你放心,我一定会给你应得的分的,不够的话我再加,反正分就是用来问问题的嘛.
尹成 2010-04-30
  • 打赏
  • 举报
回复
友情支持,三颗心关照,up~up~up~!!
瓶盒 2010-04-30
  • 打赏
  • 举报
回复
上面计算有误,44KHz的采样率,采样512个数据,fft变换后,得到到256个频点,每个频点间隔为(44000/2)/256=85.9375Hz。2KHz频率的强度,由第23和第24个频点的值确定(2000/85.9375=23.27);
44KHz的采样率只能获得其一半的频率强度。
瓶盒 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 zoumengdiefly 的回复:]
对了,还有一个问题,单纯的改变它们的实部和虚部值也只是改变了该频点的强度值吧,而该点的频率值并没有变啊
[/Quote]
这个说法有问题吧,比如采样512个数据,fft变换后,对应到256个频点,每个频点对应多少频率值,由你的采样率决定,比如是44KHz的采样率,每个频点间隔为44000/256=171Hz,据此,你可以算出声音中2KHz频率的强度,由第11和第12个频点的值确定,因而当你把这两个频点的值单独放大,也就把声音中2KHz的强度提高了。声音数据本来就是由不同的频率合成在一起的,每个频率都有强度值,各频率的大小值决定了声音的内容。
声音中的频率成分跨度应该是从0到无穷大Hz,只是采样率限制了你所能获得的各频率成分的强度,大于采样率二分之一的频率强度是无法正确计算的。
zoumengdiefly 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 bottlebox 的回复:]
实部和虚部是分量值。
真正理解傅里叶变化是困难的,我也还未吃透。
[/Quote]
对了,还有一个问题,单纯的改变它们的实部和虚部值也只是改变了该频点的强度值吧,而该点的频率值并没有变啊,当然,也可以只增加频率高的点的强度,这样就可以提高声音的频率了,但是这个难度似乎太大了吧?
瓶盒 2010-04-29
  • 打赏
  • 举报
回复
实部和虚部是分量值。
真正理解傅里叶变化是困难的,我也还未吃透。
zoumengdiefly 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 bottlebox 的回复:]
起作用的是模值,应该是实部和虚部都乘1.5.
[/Quote]
实部和虚部没有具体的物理含义吗?
qq614190370 2010-04-29
  • 打赏
  • 举报
回复
mark
瓶盒 2010-04-29
  • 打赏
  • 举报
回复
起作用的是模值,应该是实部和虚部都乘1.5.
zoumengdiefly 2010-04-29
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 bottlebox 的回复:]
你是问改变频率的方法还是把频率改成什么值?
如果是前者,fft后就获得了各个频点的强度值,直接把值改大改小,也就改变了对应频点的强度,然后再FFT逆变换(也就是fft_double函数的参数p_bInverseTransform设为true),得到的数据就可以送声卡播放。
[/Quote]
我问的就是改变频率的方法.
我是这样想的FFT后得到的是个复数数组吧,复数的模才是该点的强度值,复数有实部和虚部,那应该改变哪部分呢?如果我想把频率改成原频率的1.5倍(具体倍数由多普勒效应公式决定),我应该怎么改变数值呢?
wgd123pl 2010-04-28
  • 打赏
  • 举报
回复
不错啊,
klkvc386 2010-04-28
  • 打赏
  • 举报
回复
UP..........
瓶盒 2010-04-28
  • 打赏
  • 举报
回复
你是问改变频率的方法还是把频率改成什么值?
如果是前者,fft后就获得了各个频点的强度值,直接把值改大改小,也就改变了对应频点的强度,然后再FFT逆变换(也就是fft_double函数的参数p_bInverseTransform设为true),得到的数据就可以送声卡播放。
zoumengdiefly 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 xianglitian 的回复:]

引用 16 楼 zoumengdiefly 的回复:
引用 15 楼 xianglitian 的回复:

引用 14 楼 zoumengdiefly 的回复:
引用 12 楼 bottlebox 的回复:

你只需要看下播放文件到画图的过程就行了,另外wave文件我没有解析,直接按44KHz双声道来处理的。下面是其流程图:


以我的理解,大致就是从声卡(或文件)中取得数据,放……
[/Quote]

嗯,谢谢,我也是在研究,就是不知道能不能研究出来,还有就是时间比较紧,所以还是希望知道的朋友能给点指导.
zoumengdiefly 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 wencheng2998 的回复:]

我建议你还是用DirectShow来弄把!
[/Quote]
谢谢你的建议,对于怎么操作wav和FFT我已经比较清楚了,我还是用这种方法先试试吧,不行的话到时再看看DerectShow吧.

不过对于怎么改变频率,还是没有眉目,有谁知道支支招啊!
lzjdlsl 2010-04-26
  • 打赏
  • 举报
回复
顶。。。。。。。。。。。。。。。关注
wencheng2998 2010-04-26
  • 打赏
  • 举报
回复
我建议你还是用DirectShow来弄把!
加载更多回复(17)
音频信息的获取与处理 一、知识点 1.声音的数字化表示。 (1).声音的三个要素:音调、音强和音色。 (2)音频文件的常用格式:WAV、MIDI、MP3、VOC、WMA、RM、CDA格式 2.音频信息的采集。 (1)在多媒体计算机中,声卡是获取音频信息的主要器件。 (2)声卡功能:采集来自话筒、收录机等音源的信号,并将其数字化形成数字音频;将数字音频还原为模拟音频信号,待放大后送到扬声器输出;对数字化音频进行编辑加工,以达到某一特殊效果。 以上功能均须通过声卡端口与相应的外部设备相连接起来才能实现。 线路输入(Linein):可与盒式录音机、唱机等相连进行录音。 线路输出(LineOut):可跳过音频卡的内置放大器,连接一个有源扬声器或外接放大器进行音频的输出。 话筒输入(MicIn):可与话筒相连,进行语音录人。 扬声器输出(SpeakerOut):从音频卡内置功率放大器连接扬声器进行输出。 游戏棒/MIDI接口(Joystick/MIDI):可将游戏棒或/MIDI设备连接到音频上。 3.数字音频的加工(CoolEditPro、Windows录音机)。 (1)裁剪声音:将声音中不需要的部分删除,保留需要的部分。 (2)连接声音:将两段声音首尾相接,或者将一段声音插人到另一段声音中间。、 (3)混合声音:将一段声音混合到另一段声音中,使两种声音能够同时听到。 (4)淡入/淡出:声音开始播放时音量由小逐渐变大称为淡人;播放结束时音量由大逐渐变小称为淡出。对声音做淡入/淡出处理,可以避免产生突然开始和突然停止的感觉。 4、数字音频常用的编码有:混合编码、参数编码、波形编码 5、声音的A/D A/D转换的一个关键步骤是声音的采样和量化 可用下面的公式估算声音数字化后每秒所需的存储量(假定不经压缩): 存储量(B)=(采样频率HZ×量化位数bit×声道数)/8 6、MIDI乐器数字接口 二、练习题 1、我们要将录音带上的模拟信号节目存入计算机,使用的设备是( )第四套9 A、显卡 B、声卡 C、网卡 D、光驱 2、采样与量化是数字音频系统中的两个最基本技术,以下正确的是( )第四套4 A、48KHZ是量化 B、16bit是量化 C、8bit比16bit质量高 D、16KHZ比48KHZ质量高 3、以下哪种不是音频文件( ) A RM B MIDI C WMA D SWF 4、以下哪种不是音频格式文件( ) A TGA B WMA C MP3 D WAV 5.关于MIDI音乐,说法不正确的是( ) A. MIDI是乐器数字化英文的缩写 B.MIDI记录的不是声波本身的数 C.MIDI音乐文件的容量比数字音乐文件的容量大 D.创作MIDI音乐,需要软件 6、Cool Edit Pro软件可以进行( ) A 、视频编辑  B、图像浏览 C、音频编辑 D、文字编辑 7、以下不是数字音频常用的编码是( ) A、混合编码 B、参数编码 C、波形编码 D、模拟编码 8、班级活动利用Windows系统提供的“录音机”录制学生朗诵的诗歌时,除了计算机外,至少还需( ) A、话筒  B、扫描仪  C、打印机  D、耳机(不含话筒) 9、利用MIDI设备输入的是一种(   ) A 、视频格式文件  B、压缩格式声音 C、模拟化声音 D、数字化声音 10、以下不是MIDI设备的是( ) A 、话筒  B、MIDI接口  C、合成器  D、音序器 11.Cool edit Pro软件可以编辑 ( ) A、音频和视频 B、音频 C、文字 D、图像 12、以下文件类型中,( )是音频格式。第一套14(综合分析题) (1).WAV (2).MP3 (3).BMP (4).JPG A、(1)和(2) B、(1)和(3) C、(2)和(4) D、(2)和(3) 13、以下( )是Windows的通用声音格式。第二套14(综合分析题) A、WAV B、MP3 C、BMP D、CAD 14、下列要素中( )不属于声音的三要素 第三套14(综合分析题) A、音调 B、音色 C、音律 D、音强 15、用Cool Edit Pro2.1软件编辑声音文件时,下列说法正确的是:( )多选 A、可以方便地对音频进行准确的剪切、粘贴处理,可以把后面的内容剪切后贴到前面,调整了原有的顺序,也称非线编 B、可以将不同的声音文件合成为一个,如将诗歌朗诵的声音文件与一剪梅音乐文件合并 C、不可以调整声音的高低 D、可以直接打开视频文件,对其中的声音进行编辑 16、如果CD音质的采样频率为44.1KHZ,量化位数为16bit,那么,一首4分钟的CD双声道立体声音乐的数据长度是多少?( ) A、40.4MB B、35MB C、39.7MB D、42MB 17、在数字音频信息获取与处理过程中,下列顺序正确的是( )。第一套13(综合分析题) A、A/D变换、采样、压缩、存储、解压缩、D/A变换 B、采样、压缩、A/D变换、存储、解压缩、D/A变换 C、采样、A/D变换、压缩、存储、解压缩、D/A变换 D、采样、D/A变换、压缩、存储、解压缩、A/D变换 18、下列采集的波形声音,( )的质量最好。第二套13(综合分析题) A、单声道、8位量化、22.05kHz采样频率 B、双声道、8位量化、44.1kHz采样频率 C、单声道、16位量化、22.05kHz采样频率 D、双声道、16位量化、44.1kHz采样频率 19、数字音频采样和量化过程所用的主要硬件是( )第五套4、第三套13(综合分析题) A、数字编码器 B、数字解码器 C、模拟到数字的转换器(a/d转换器) D、数字到模拟的转换器(d / a转换器) 20、录制声音的方法很多,.如用windows录音机录制声音,用录音笔录制或用软件录制等。一般情况下,一次性录制时,录制时间最短的是( ) . a) windows录音机录制 b) 录音笔录制 c) cooledit软件录制 d)磁带录音机录制 21、用cooledit pro2.1软件编辑声音文件时,若要删除某段内容时,在选好该部分后,不能使用下列哪些方法删除( ) a) 按delete键 b) 用退格键 c) 用快捷菜单中的cut命令 d) 用工具栏上的剪切按钮 22、下列方法中( )可以获得数字音频素材? (1)从CD-ROM音频库中获取MIDI音乐 (2)用Windows中的CD播放器录音 (3)用磁带录音机 (4)用MIDI作曲软件制作MIDI音乐 A、(1)(2)(4) B、(2)(4) C、(1)(3) D、全部

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧