语音浊音段波形及其功率谱分析 今天介绍MATLAB中有关语音的命令及其用法,是第四次大作业必备的知识点,希望认真阅读,并在MATLAB上实际操作体验。 第四次大作业包括三个重要内容:一是各种图形的绘制;二是处理语音的各种命令的用法;三是滤波器的设计。其中,绘图和语音命令在前面的大作业中都已经做过了,这里对语音命令做一个汇编,如有遗漏以后再补充。 1、 用语音做实验,第一步是录制实验用语音,可以在WINDOWS里的“语音录音机”里面录制,也可以在MATLAB环境下录制。录制之前需要将麦克风连接电脑。 2、 在WINDOWS进行语音的录制,注意要保存为wav波形文件形式,这种语音文件可以用MATLAB命令直接读取。其他的文件格式如wma等,都是压缩文件,MATLAB命令不能直接读取,但是都可以利用有关工具转化为wav波形文件。 3、 在MATLAB环境中用音频输入设备录制声音,命令为wavrecord,有两种格式: ①wavrecord(N, Fs, CH):录制N个采样点,录制频率为Fs,声道数为CH。标准的采样速率包括8000, 11025, 22050, 44100 Hz。CH =1时为单声道,CH = 2时为双声道。采样值保存在一个N × CH矩阵中。未指定时,默认为Fs = 11025 Hz,CH = 1。 ②wavrecord(N, Fs, CH, DTYPE):用DTYPE指定返回的数据类型,支持的数据类型和相应的每样点比特数如下: DTYPE bits/sample 'double' 16 'single' 16 'int16' 16 'uint8' 8 例子: Fs =11025; % 采样率为11.025 kHz y =wavrecord(5*Fs, Fs, 'int16'); % 以每样点16比特录制5秒语音 wavplay(y,Fs); % 以频率Fs播放语音 4、 将wav格式的声音读入向量,命令为wavread,有五种格式: ① y =wavread('filename'):读入由filename指定的一个wav声音文件,并将数据返回到向量y中。 ② [y, Fs,bits] = wavread('filename'):读入由filename指定的一个wav声音文件,将数据返回到向量y中,并读取声音的频率值和位数。 ③ [y, Fs,bits] = wavread('filename', N):返回声音文件的每个声道前N个数据。 ④ [y, Fs,bits] = wavread('filename', [N1, N2]):返回声音文件的每个声道第N1到N2个数据。 ⑤ siz =wavread('filename', 'size'):返回声音文件的大小。 描述:该函数支持8位或16位多声道wav声音文件。 5、 播放MATLAB语音向量y为声音,命令为wavplay,有五种格式: ①wavplay(y, Fs):将语音向量y以频率Fs播放,标准的音频频率包括8000,11025, 22050, 44100 Hz。 ②wavplay(y):以默认播放频率11025 Hz播放语音向量y。 ③wavplay(y, Fs, 'async'):开始播放语音向量y的同时,立即返回函数调用(非阻塞调用)。 ④wavplay(y, Fs, 'sync'):播放语音向量y,直到播放结束返回函数调用(阻塞调用)。 语音向量y的取值范围为[-1.0, 1.0],超过该范围的值将被忽略。 支持的数据类型同wavrecord命令。 6、 将声音向量y保存为wav波形文件(文件后缀为.wav),命令为wavwrite,有三种格式: ① wavwrite(y,'filename'):将声音向量y的数据写入到filename指定的数据文件。 ② wavwrite(y,Fs, 'filename'):用指定的声音频率将声音向量y的数据写入到filename指定的数据文件。 ③wavwrite(y, Fs, N, 'filename'):用指定的声音频率将声音向量y的数据写入到filename指定的数据文件,还指定了编码器的位数。 7、 将声音向量y播放为声音,命令为sound,有三种格式: ① sound(y,Fs):把存储在向量y中抽样频率为Fs的信号传送给计算机的扬声器。向量y中元素的取值范围位于[-1.0, 1.0]之内,超过该范围的值将被忽略。如果y是一个n × 2阶矩阵,则利用函数sound就可以在支持立体声的计算机平台上播放出由立体效果的声音。 ②sound(y):以缺省的频率(或8192 Hz)来播放声音。 ③sound(y, Fs, bits):采用bits位来播放声音。大多数计算机平台都支持8位或16位声音。 8、 对语音向量y进行降采样,命令为downsample,格式为: ① x = downsample(y,N):每隔N个点采样一次的降采样。 ② x =downsample(y, N, phase):偏置phase每隔N个点采样一次的降采样,即从第phase +1个样点开始,每隔N个点采样一次的降采样,其中phase的范围为[0,N-1]。 与downsample类似的,有升采样命令upsample,用法类似。 9、 对声音向量y滤波,命令为filter,有两种格式: ① x =filter(b, a, y):声音向量y通过系统函数为b/a的无限冲激响应滤波器IIR输出x。 ② x = filter(b, 1, y):声音向量y通过系统函数为b的有限冲激响应滤波器FIR输出x。 |
|