语音信号处理基础(三)——基于MATLAB的语音采集与读写

本文介绍了语音信号的特点,包括频域内的主要频率范围和时域内的“短时性”特征。讲解了语音信号采集的基本原理,即采样和量化。重点讨论了MATLAB中用于语音采集的wavrecord、wavwrite,以及读取的wavread、wavplay函数。通过实例展示了不同采样频率对语音存储和播放的影响,如采样频率减半会导致音频播放速度减慢,而采样频率加倍则会加快播放速度。
摘要由CSDN通过智能技术生成

语音信号处理基础(三)


有关语音信号处理的发展请阅读前两篇博客
语音信号处理基础(一)
语音信号处理基础(二)

语音采集与读写

通过对大量语音信号的观察和分析发现,语音信号主要有下面两个特点

1.语音信号的特点

(1) 在频域内,语音信号的频谱分量主要集中在300-3400Hz的范围内。

利用这个特点,可以用一个防混叠的带通滤波器将此范围内的语音信号频率分出,然后按8kHz的采样

(2) 在时域内,语音信号具有“短时性”的特点

即在总体上,语音信号的特征是随着时间而变化的,但在一段较短时间间隔内,语音信号保持平稳。在浊音段表现出周期信号的特征,在轻音端表现出随机噪声的特征

2.语音信号采集的基本原理

将模拟信号变为数字信号,必须经过采样和量化,得到时间和幅度上均为离散的数字信号语音。采样时, 采样频率必须以高于受测信号的最高频率两倍以上的速度进行取样,才能正确地重建信号。

3.基于MATLAB的语音信号采集与读写

(1)wavrecord()函数:用来录制语音和音频信号。

基本语法:

y=waverecord(n,Fs,ch,'dtype')

n为采样点数,Fs为采样频率,ch为音频设备通道数(1或2表示单声道或立体声)'dtype’表示指定数据类型来记录声音

例如:speech = wavrecord(16000, 8000, 1, ‘double’);
采样的样点放入speech变量中,16000是要采样的点数,8000是采样率
1表示是单声道信号,‘double’

Fs=11025;%采样率为11025Hz
y=wavrecord(Fs*5,Fs,'int16');%录制5s的数据
wavplay(y,Fs); %播放录制的音频

(2)wavwrite()函数:写入wav声音文件

注意:在新版本的matlab中不再使用wavwrite,推荐使用audiowrite

函数语法

wavwrite(y,filename)

将保存在变量y的数据,保存到wav文件filename中,默认的采样率为8000Hz,采样位数为16位,y的各列为各个通道,因此立体声数据是两列的矩阵

wavwrite(y,Fs,N,filename)

按给定的采样率Fs和采样位数N,将保存在变量y的数指保存到war文件filename中,N可选值为8,16,24及32。输人的数据范围:y的垢管范周与采样位数N以及y的数据类型有关
在这里插入图片描述

load handel.mat %载入AMATLAB自带的示例音频数据文件

hfile ="Data_wavereard.wav";%准备写的音媒数据文件

wavwrite(y,Fs,hfile)%将y以Fs采样率写到文件中

(3)wavread()函数:读取声音文件

注意:在新版本的matlab中不再使用wavread,推荐使用audioread

函数语法

y =wavread(filename)

载人由filename字符串指定的wav文件,y为返回采样点的数据,若文件名filename不包含扩展名,wavread函数特添加.wav扩展名。

[y,Fs]=wavread(fiename)

返回文件的采样率Fs(Hz).

[y,Fs,nbits]=wavread(filename)

返回每次采样的位数nbits(位).

[y,Fs,nbits,opts]= wavread(filename)

返回包含wav文件额外信息的结构体opts,opts具体的字段与文件有关。

opts典型的两个字段为fmt和info,外别代表声音格式信息和描述标题作者等信息的文本。

load handel.mat            %载人MATLAB自带的示例音频数据文件
hfile ='Data_waveread,wav';%准备写的音额数据文件
wavwrite(y,Fs,hfile);     %将y以Fs采样率写到文件中
clear y Fs   %清除载入的y以及Fs
[y,Fs,nbits]= wavread
  • 62
    点赞
  • 509
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值