基于MATLAB 的声音信号采集系统野龙平(陕西师范大学电子信息科学与技术,陕西)摘要: 声音是各种信号传递与交流最直接的体现,因此对声音信号的研究有十分重要的意义。
本文主要针对Matlab指令系统对声音信号的采集,作者利用Matlab 提供的数据采集工具箱, 介绍了倆种采集方法,简单分析并比较其优缺点。
基于matlab的数据采集系统, 具有实现简单、性价比和灵活度高的优点。
关键词: Matlab; 数据采集0 引言随着科技的发展,对于语音信号的采集已经有很多种方法,如基于单片机技术、VC,C++等编程、纯硬件电路,本文介绍的方法主要通过一款软件MATLAB。
它是MathWorks 公司推出的一种面向工程和科学运算的交互式计算软件, 其中包含了一套非常实用的工具-- 数据采集工具箱。
使用此工具箱更容易将实验测量、数据分析和可视化的应用集合在一起。
数据采集工具箱提供了一整套的命令和函数, 通过调用这些命令和函数, 可以直接控制数据采集设备的数据采集。
作者简单介绍了一种用声卡进行语音信号采集和MATLAB 的数据采集工具箱进行分析处理的语音信号采集系统。
经实验证明, 该系统可实现在线连续采集语音信号并进行分析和处理, 具有实现简单、性价比和灵活度高的特点。
1 语音数据采集系统设计MATLAB 中提供了强大的数据采集工具箱( DAQ- Data Acquisition Toolbox) , 可满足控制声卡进行数据采集的要求。
用户通过调用MATLAB 命令, 可对采集的数据进行分析和处理, 为用户带来了极大的方便。
语音数据采集过程如图1 所示。
图1声卡采集声音信号有两种方式: 传输线输入方式(LineIn) 和麦克风输入( MicIn) 方式。
LineIn 方式是通过传输线把其他声音设备, 如录音机等设备的音频输出信号连接到声卡, 通过声卡记录数据存入计算机。
本系统采用MicIn 方式, 即用麦克风接收语音通过声卡将音频信号存入计算机。
利用MicIn 方式通过声卡采集数据有两种方法:方法一是采用对声卡产生一个模拟输入对象进行采集,方法二是直接利用MATLAB 数据采集箱中提供的的函数命令进行采集。
1. 1 方法1本系统是以声卡为对象利用MATLAB 数据采集工具箱提供的环境完成数据采集过程, 麦克风成为数据采集系统中的传感器。
数据采集过程与其他硬件设备无关, 只与声卡有关, 因此应对声卡产生一个模拟输入对象(AI) 。
数据采集过程的具体实现:1) 初始化: 创建设备对象。
ai= analoginput(‘ winsound ’ )2) 配置: 根据数据采集硬件设备的特性, 增加通道和控制数据采集的行为。
为AI 添加1 个通道, 设置采样频率和采样时间。
addchannel( ai, 1)freq= 8000; % 采样频率fs8000Hzset( AI, sampleRate, freq) %为模拟输入设备设置采样频率duration= 2; %采样时间为2 秒set (AI, SamplesPerTriffer, duration* freq) ; % 为模拟输入设备设置触发时间3) 执行: 启动设备对象, 采集数据。
start( ai) ; %启动设备对象data= getdata( ai) ; % 获得采样数据4) 终止: 删除设备对象。
stop( ai) ; % 停止设备对象语音信号输入声卡Matlab 数据采集箱计算机delete( ai) ; % 释放内存对象这样便完成了一次数据采集的过程。
其中采样频率及采样时间是由用户个人定义输入。
1. 2 方法2一般的采样过程是对声卡产生的模拟输入对象(AI) 进行操作的, 由于计算机配置和模拟通道的运用使得数据采集过程显得烦琐难以理解, 有时还不易获得采样数据。
实验过程发现一种更为简单实用的方法可以进行数据采集。
在阐述之前, 首先介绍一下MATLAB 数据采集箱中的几条有关命令:wavrecord: wavrecord 利用Windows 音频输入设备记录声音, 其调用形式为: wavrecord( n, fs, ch) 。
利用Windows 音频输入设备记录n 个音频采样, 频率为fsHz,通道数为ch。
采样值返回到一个大小为n* ch 的矩阵中。
缺省时, fs= 11025, ch= 1。
waveplay:waveplay 利用Windows 音频输出设备播放声音, 其调用形式为: waveplay( y, fs) 。
以采样频率fs向Windows 音频设备发送向量信号。
标准的音频采样率有: 8000、11025、22050 和44100Hz。
wavread:wavread 用于读取Microsoft 的扩展名为 .wav的声音文件。
其调用形式为: y= wavread ( file) 其作用是从字符串file 所指的文件路径读取wave 文件, 将读取的采样数据送到y 中。
Y 的取值范围: [ -1, 1] 。
sound: 音频信号是以向量的形式表示声音采样的。
sound 函数用于将向量转换为声音, 其调用形式为: sound( y, fs) , 作用是向扬声器送出向量y 中的音频信号( 采样频率为fs) 。
应用上述所讲到的MATLAB 数据采集箱提供的函数进行一次简单的语音信号的采集实验。
记录5 秒钟的8 位音频语音信号并回放之, 采样频率设为11025Hz。
fs= 11025;%设置采样频率y1= wavrecord( 5* fs, fs, ‘uint8’) ; %进行无语音采集plot( y1) ;y2= wavrecord( 5* fs, fs, ! uint8! ) ; % 开始采集8位语音信号, 时间为5splot( y2) ;wavplay( y2, fs) ; %%回放所采集的语音sound( y2, fs) ;y1= fft( y2) ; %做信号的fft 变换plot( y2) ;用户可以变换采样频率及采样时间, 也可以不同的频率回放语音。
感受不同函数在相同的频率下回放的语音信号是否一致。
此例进行的是实时回放, 若要事后回放则可用wavread 函数。
从程序语言及实现上可看出此方法简便了许多, 而且实验结果与传统方法得到的实验结果完全一致。
图2 为在采样过程中打开麦克风, 但是没有对麦克风讲话的结果( 对不同品牌、质量的声卡, 结果可能不同) , 从图上可以看到除开始采样的极短一段时间内有个信号接收过程产生阶跃外, 其余时间内波形都在很小的范围内平稳的波动。
图3 是采样过程中对麦克风讲话的结果, 可以看出, 讲话( 传感器端接收到信号)改变了采集的数据的结果。
从图3 中看出波形与图2相比发生了很大的变化, 波形随声音信号的高低强弱而发生变化, 可知计算机已经通过麦克风接收到了语音信号, 说明信号采集工作成功。
由于matlab非常人性化的程序开发方式,读者也可以利用gui将以上介绍内容制作成一个独立的exe文件,在脱离matlab下独立运行。
下图所示为作者用matlab的gui生成独立软件运行后界面,可进行简单声音频谱分析,不同频率播放等:1.3结论作者介绍了一种基于声卡和Matlab 的语音数据采集系统, 具有实现简单、性价比和灵活度高的特点。
经实例分析证明, 利用该系统可实现在线连续采集语音信号并进行分析和处理。
参考文献[ 1] Eva Part- Enander Anders Sjoberg MATLAB5 手册[M] 北京: 机械工业出版社, 2000. 200~ 246[ 2] 施阳, 李俊 MATLAB 语言工具箱ToolBox 实用指南[M]西安: 西北工业大学出版社, 1999 50~ 98[ 3] 程卫国, 冯蜂 MATLAB5. 3 精要编程及高级应用[M] 北京:机械工业出版社, 2000. 235~ 280[ 4] 姚东, 王爱民 MATLAB 命令大全[ M] 北京: 人民邮电出版社, 2000. 187~ 241 Data Acquisition System Based on MATLABYE LONGPING(shaanxi normal university Electronic Information Science and Technology, shaanxi)Abstract: sound is the direct signs of many signals and conmunications, so the research of sound data become very meaningful . In the paper,the author using two kinds of the Data Acquisition Toolbox provided in Matlab. The system has the simple realization, high cost performance and high flexibleness.Key words: matlab; data acquisition摘要: 声音是各种信号传递与交流最直接的体现,因此对声音信号的研究有十分重要的意义。
本文主要针对Matlab指令系统对声音信号的采集,作者利用Matlab 提供的数据采集工具箱, 介绍了倆种采集方法,简单分析并比较其优缺点。
基于matlab的数据采集系统, 具有实现简单、性价比和灵活度高的优点。
关键词: Matlab; 数据采集。