搜索
bottom↓
回复: 7

怎么将一个WAV 音乐文件数字化?

[复制链接]

出0入0汤圆

发表于 2012-8-15 10:30:24 | 显示全部楼层 |阅读模式
现在想将WAV 音乐文件变成数字,然后做一个波形表来读取!卡住了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入476汤圆

发表于 2012-8-15 10:52:45 | 显示全部楼层
wav文件本来就是数字的。可以网上搜一下wav文件的格式

出0入0汤圆

 楼主| 发表于 2012-8-15 11:09:30 | 显示全部楼层
wy2000 发表于 2012-8-15 10:52
wav文件本来就是数字的。可以网上搜一下wav文件的格式

怎么将它提取出来?

出0入476汤圆

发表于 2012-8-15 11:25:04 | 显示全部楼层
看看文档吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-8-15 11:46:42 | 显示全部楼层
楼上,谢过先

出0入0汤圆

发表于 2012-8-16 17:56:23 | 显示全部楼层
wav是pcm的,完全没有压缩的数据吧,本来就是数字的,按照四楼给的对照读取就可以了!~

出0入0汤圆

发表于 2012-8-19 21:53:32 | 显示全部楼层
如果是想将声音信号录制到matlab里面,则可以使用以下的函数。
R = audiorecorder( 44100, 16 ,2 ) ;
%创建一个保存音频信息的对象,它包含采样率,时间和录制的音频信息等等。44100表示采样为44100Hz(可改为8000, 11025, 22050等,此数值越大,录入的声音质量越好,相应需要的存储空间越大),16为用16bits存储,2为两通道即立体声(也可以改为1即单声道)。
record(R);
%开始录制,此时对着麦克风说话即可。
pause(R);
%暂停录制。
play(R)
%播放录制的声音。
resume(R);
%继续录制.
stop(R);
%停止录制
myspeech = getaudiodata(R);
%得到以n*2列数字矩阵存储的刚录制的音频信号。
%对这个矩阵你就可以用各种滤波器进行处理,或者把它和别的音频混音等等。你也可以画出它的波形(如果时间较长画波形可能会花点时间)。
plot(myspeech)
%画出波形
%如果你想保存可以使用
wavwrite(myspeech,44100,16,'myspeech');
%myspeech表示要存入的波形矩阵,44100表采样率,16 为以16bits存储,'myspeech'为存储的文件名。
%matlab有极其丰富的音频处理滤波功,此处介绍最基本的录入、播放和保存操作,希望能对你有所帮助


MATLAB可以,上次操作过,类似上面的介绍,很方便的。
上次是将录音的文件或者歌曲,用matlab读取WAV数据,然后保存到固定常量中,然后放到FLASH,通过ARM LPC17XX读取,放到DAC中放,
中间需要考虑到采样时间间隔,用到定时器,可以放出歌曲或者录音。

出0入8汤圆

发表于 2012-8-20 11:13:04 | 显示全部楼层
Python  的脚本  俺自己用的 写的不好。  Python  2.7版的。
  1. # -*- coding: GBK -*-
  2. """
  3. Created on Wed Jul 25 16:33:08 2012
  4. 提取8位数据宽度wav文件的音频流数据
  5. @author: Administrator
  6. """

  7. import wave #python内置
  8. import os
  9. def walkdir(dirname):
  10.    
  11.     try:
  12.         ls=os.listdir(dirname)
  13.     except:
  14.         print 'access deny'
  15.     else:
  16.         pic_file=open('c:/pic_file.bin','w')
  17.         for l in ls:
  18.             temp=os.path.join(dirname,l)
  19.             w=l[:-3]+'bin'
  20.             newfilename=os.path.join(dirname,w)
  21.             fi=wave.open(temp,'rb')
  22.             new_data=fi.readframes(fi.getnframes())
  23.             fo=open(newfilename,'wb')
  24.             fo.write(new_data)
  25.             fo.close
  26.             fi.close
  27.             if(os.path.isdir(temp)):
  28.                 walkdir(temp)
  29.             else:
  30.                 print temp
  31.         pic_file.close()

  32. if __name__=="__main__":
  33.    
  34.     #b=raw_input("请输出输出文件的目录和文件名:")
  35.     #r=raw_input("请输出要合并的目录:")
  36.     walkdir('e:/PROJECT/screw_oil_expeller/普通话8位') #扫描的目录
复制代码
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表