matlab程序设计入门20PPT_20-音讯读写、录制与播放.ppt_第1页
matlab程序设计入门20PPT_20-音讯读写、录制与播放.ppt_第2页
matlab程序设计入门20PPT_20-音讯读写、录制与播放.ppt_第3页
matlab程序设计入门20PPT_20-音讯读写、录制与播放.ppt_第4页
matlab程序设计入门20PPT_20-音讯读写、录制与播放.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

音讯读写 录制与播放 张智星jang cs nthu edu twhttp www cs nthu edu tw jang清大资工系多媒体检索实验室 20 1音讯的基本介绍 声音讯号 AudioSignal 简称音讯 泛指由人耳听到的各种声音的讯号 音讯有些基本的特质 可说明如下 音量 Volume 声音的大小称为音量 又称为力度 强度 Intensity 或是能量 Energy 音量越大 代表音讯波形的震幅越大 音高 Pitch 声音的基本频率 FundamentalFrequency 越高 代表音高越高 例如女高音的歌声 反之 声音的基本频率越低 代表音高越低 例如男低音的歌声 有关基本频率的说明 将在本章其后各小节说明 音色 Timber 音讯波形在每个周期内的变化 就形成了此音讯的音色 不同的音色即代表不同的音讯内容 例如不同的字有不同的发音 或是不同的歌手有不同的特色 这些都是由于音色不同而产生 20 2WAV档案的读取范例之一 例如 若要读取光盘中的档案welcome wav 画出音讯的波形并播放出此音讯 可使用下列程序 范例20 1 readWave01 m y fs wavread welcome wav sound y fs 播放此音讯time 1 length y fs 时间轴的向量plot time y 画出时间轴上的波形 20 2WAV档案的读取范例之一 执行结果 欢迎光临波形图 20 2WAV档案的读取范例之二 若要知道welcome wav的取样点是由多少个位来表示 可使用 y fs nbits wavread welcome wav 若要知道音讯长度 则可使用length y fs 以下范例可以印出音讯文件welcome wav的各种相关信息 范例20 2 readWave02 m fileName welcome wav y fs nbits wavread fileName fprintf 音讯档案 s 的信息 n fileName fprintf 音讯长度 g秒 n length y fs fprintf 取样频率 g取样点 秒 n fs fprintf 分辨率 g位 取样点 n nbits 20 2WAV档案的读取范例之二 范例20 2执行结果 音讯档案 welcome wav 的信息 音讯长度 1 45134秒取样频率 11025取样点 秒分辨率 8位 取样点 20 2WAV档案的读取范例之三 wav档案的8位是以unsignedinteger的方式来储存 因此所能表示的数值是介于0和255之间 MATLAB再将此值设定至变量y时 会自动将其数值调整至介于 1和1之间 因此若要将MATLAB读出之数值转回原先8位所表示之数值 只要将变量y乘以128 再加上128 就可以得到原先的整数值 例如 范例20 3 readWave03 mdifference 0 fileName welcome wav y fs nbits wavread fileName y0 y 2 nbits 2 2 nbits 2 y0是原先储存在音讯档案中的值difference sum abs y0 round y0 20 2WAV档案的读取范例之四 wavread也可以读取双声道或立体声 Stereo 的音讯档案 此时传回的变量为具有两直行的数组 每一直行代表一个声道的音讯 例如 范例20 4 readWave04 m fileName flanger wav y fs wavread fileName 读取音讯文件sound y fs 播放音讯left y 1 左声道音讯right y 2 右声道音讯subplot 2 1 1 plot 1 length left fs left subplot 2 1 2 plot 1 length right fs right 20 2WAV档案的读取范例之四 此范例会读取双声道的音讯文件flanger wav 播放此双声道的音讯 并画出两个声道的音讯波形如下 20 2WAV档案的读取范例之五 如果音讯档案很大 无法一次读入内存 我们也可以使用wavread来读出音讯文件的其中一部份 例如 范例20 5 readWave05 m y fs wavread welcome wav 40015000 读取第4001至5000点figure plot y 20 2WAV档案的读取范例之五 画出之图形如下 20 2WAV档案的读取范例之六 若要取得wav档案的更多信息 可由wavread的第四个输出变量得到 例如 范例20 6 readWave06 mans wFormatTag 1nChannels 2nSamplesPerSec 22050nAvgBytesPerSec 88200nBlockAlign 4nBitsPerSample 16 y fs nbits opts wavread flanger wav opts fmt 20 3声音讯号的播放 一旦我们可以读入wav档案 就可以对声音讯号进行各种处理 例如增大或减小音量 提高或降低音高 消除噪声等 要确认处理后的声音讯号是否符合所需 就要能够把音讯直接透过PC喇叭播放出来 本节就是要介绍如何使用MATLAB来进行音讯的播放 20 3WAV档案的播放范例之一 在前一节中 我们已经知道如何读wav档案 一旦MATLAB读入音讯数据 并将之设定成工作空间中的变量后 我们就可以使用wavplay指令来直接播放此变量 例如 范例20 7 wavPlay01 m loadhandel mat 载入储存于handel mat的音讯wavplay y Fs 播放此音讯 20 3WAV档案的播放范例之二 我们在第一节提到过 声音的音量是由声波的震幅来决定 因此我们可藉由震幅的大小来改变音量 例如 范例20 8 playVolume01 m y fs wavread welcome wav wavplay 1 y fs sync 播放1倍震幅的音讯wavplay 3 y fs sync 播放2倍震幅的音讯wavplay 5 y fs sync 播放3倍震幅的音讯 20 3WAV档案的播放范例之三 如果在播放时 改变取样频率 就会改变整个音讯的时间长度 进而影响到音高 在下例中 我们渐渐提高播放时的取样频率 听到的声音就会越来越快 越来越高 最后出现像唐老鸭的声音 范例20 9 playFs01 m y fs wavread welcome wav wavplay y 1 0 fs sync 播放1 0倍速度的音讯wavplay y 1 2 fs sync 播放1 2倍速度的音讯wavplay y 1 5 fs sync 播放1 5倍速度的音讯wavplay y 2 0 fs sync 播放2 0倍速度的音讯 20 3WAV档案的播放范例之四 反之 如果渐渐降低播放的频率 听到的声音就会越来越慢 越来越低 最后出现像牛叫的声音 范例20 10 playFs02 m y fs wavread welcome wav wavplay y 1 0 fs sync 播放1 0倍速度的音讯wavplay y 0 9 fs sync 播放0 9倍速度的音讯wavplay y 0 8 fs sync 播放0 8倍速度的音讯wavplay y 0 6 fs sync 播放0 6倍速度的音讯 20 3WAV档案的播放范例之五 如果我们将声波讯号上下颠倒 听到的声音基本上是一样的 但是如果前后颠倒 听到的声音就如同录音带 倒放 的声音 听起来很像是某种外国语音 请试试下列范例 范例20 11 playReverse01 m y fs wavread welcome wav wavplay y fs sync 播放正常的音讯波形wavplay y fs sync 播放上下颠倒的音讯波形wavplay flipud y fs sync 播放前后颠倒的音讯波形 20 3WAV档案的播放范例之六 通常在使用wavplay播放音讯时 MATLAB会停止进行其它动作 直到音讯播放完毕后 才会再进行其它指令的运算 此种运作方式称为 同步式 Synchronous 若需要一边播放 一边进行其它运算 就必须使用 异步式 Asynchronous 的播放方式 例如 范例20 12 playSync01 m y fs wavread welcome wav wavplay y 1 0 fs sync 同步播放1 0倍速度的音讯wavplay y 0 8 fs async 异步播放0 8倍速度的音讯wavplay y 0 6 fs async 异步播放0 6倍速度的音讯 20 3WAV档案的播放范例之七 wavplay只能用在微软的窗口平台 而且若在MATLAB5 x 你还必须要有讯号处理工具箱 才能使用这个指令 若要使用适用于一般平台的播放功能 就要改用sound指令 在此例中 我们会听到类似男女两部合唱 一快一慢 这是因为sound指令的预设播放方式就是 异步 范例20 13 playSync02 m loadhandel matsound y Fs sound y 1 2 Fs 20 3WAV档案的播放范例之八 另一个类似的指令是soundsc 此指令可针对音讯变量的数值先进行正规化 介于 1和1中间 后 再送到喇叭播放 以达到最好的播放效果 例如 范例20 14 soundsc01 m y fs wavread welcome wav sound y fs fprintf Pressanykeytocontinue n pausesoundsc y fs 20 4声音讯号的录制 我们在第一节已经说明了如何读取wav档案 并在第二节说明如何播放 MATLAB也支持直接由麦克风读取讯号 因此可以直接进行声音的录制 所使用的指令是wavrecord 其基本格式为 y wavrecord n fs 20 4WAV档案的录制范例之一 y wavrecord n fs 代表由微软窗口系统的音讯输入装置 即麦克风 读入n点数据 取样频率是fs 并将此音讯数据储存于变量y 举例来说 范例20 15 wavRecord01 m fs 11025 取样频率duration 2 录音时间fprintf 按任意键后开始 g秒录音 duration pausefprintf 录音中 y wavrecord duration fs fs duration fs是录音数据点数fprintf 录音结束 n fprintf 按任意键后开始播放 pausewavplay y fs 20 4WAV档案的录制范例之二 在前一个范例中 wavrecord预设的录音声道数为1 即单声道 音讯数据型态为double 若要改变这两种默认值 可在wavrecord加入其它自变量 其完整的格式为y wavrecord n fs channel dataType 其中channel 通常是1或2 代表声道数 dataType则代表音讯变量y的数据型态可以是下列几种 double single int16 uint8 不同的数据型态 影响音讯数据的精准度 所占掉的储存空间大小也不同 例如 范例20 16 wavRecord02 m fs 11025 取样频率duration 2 录音时间channel 1 单声道fprintf 按任意键后开始 g秒录音 duration pausefprintf 录音中 y wavrecord duration fs fs channel uint8 duration fs是录音数据点数fprintf 录音结束 n fprintf 按任意键后开始播放 pausewavplay y fs 20 5声音讯号的写文件 我们也可以经由MATLAB将音讯数据直接储存为wav档案 以便日后直接在微软窗口下播放 而不需每次都经由MATLAB播放 写入wav档案的指令是wavwrite 其格式为 wavwrite y fs nbits waveFile 20 5WAV档案的写文件范例 wavwrite y fs nbits waveFile 其中y是音讯变量 fs是取样频率 nbits是数据分辨率 waveFile则是欲写入资料的文件名称 例如 若要将我们的录音存入test wav 可用下列程序代码 范例20 17 wavWrite01 m fs 11025 取样频率duration 2 录音时间waveFile t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论