计算机中声卡的功能 [基于计算机声卡的谱相减语音增强系统分析2400字]

基于计算机声卡的谱相减语音增强系统分析2400字

基于计算机声卡的谱相减语音增强系统分析2400字 基于计算机声卡的语音增强系统作为一种抑制背景噪声、提高语音质量的有 效手段,在实际应用中有重要价值。语音增强是一种当语音通信系统的输入或输 出信号受到噪声干扰时提高其性能的技术。它的主要目的是降低背景噪声,提高 语音质量或抑制同声道语音干扰。简单的讲,就是从带噪声语音信号中提取尽可 能纯净的原始语音。传统的语音增强的方法有很多,如:滤波器法语音增强,非 线性处理语音增强,减谱法语音增强,自相关相减法语音增强等等。噪声对消的 基本原理是从带噪语音中减去噪声。自适应滤波是研究一类结构和参数可以改变 或调整的系统。自适应滤波器通常采用FIR滤波器,其系数可以采用最小均方 (LMS)法进行估计。最小均方(LMS)算法的基本思路与梯度下降法是一致的,不 同之处仅在于计算中用梯度向量的估计来代替真实的梯度。所以说,LMS算法是 由梯度下降法导出的,是对梯度下降法的近似简化,更符合实际应用。

3. 谱相减算法 谱相减方法是单通道语音增强的重要算法,由于该方法计算简单,易于实现, 在滤除加性平稳噪声方面显示了极大的优越性。谱相减里面利用FFT,所以经常采 取半帧重叠,功率谱相减,开方得到幅度谱,按照信号时频变换公式: 这样才能进行逆变换.显然只有幅度谱是不够的,必须有相应的相位谱;纯净 语音的相位谱又不可能从含噪语音的相位里分离出来,所有就粗略地用噪声信号 的相位来代替了,所以一般叫""插入相位""。基于计算机声卡的谱相减语音增强 系统一般采用Matlab程序。

n=220;%对语音信号进行分帧,帧长为220 n1=160;%帧移为160 frame=floor((N-n)/(n-n1));%将分帧数赋给变量frame 4. 小结 经过处理大量电台录制的声音样本,我们得出:基于声卡和Matlab平台的语 音信号采集处理系统,在消除背景噪声、音乐噪声、增加语音可懂度和提高语音自然度等方面比谱减法更加有效。

总之,基于计算机声卡的谱相减语音增强系统,具有投入少、精度高、调试 方便等优点,值得大力推广。

[1]阎丽,祝轩,王小宁.基于Sound Blaster声卡的数据采集系统[J].华北 院测试技术学报,2001,15(2):79-82. [2]周敬利,余胜生,等.多媒体计算机声卡技术及应用[M].北京:电子工业 出版社,2008:115-123. [3]陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大 学出版社,2000:269-369. 声卡是多媒体技术中最基本的组成部分,是实现声波/数字信号相互转换的 一种硬件。本文对基于计算机声卡的谱相减语音增强系统进行分析。首先分析了 基于计算机声卡的语音增强系统,其次,介绍了谱相减算法,具有一定的参考价 值。

摘 要:
计算机声卡;
谱相减;
语音增强系统;
分析 1. 前言 计算机声卡是多媒体技术中最基本的组成部分,是实现声波/数字信号相互 转换的一种硬件。声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加 以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,或通过音乐设备数 字接口(MIDI)使乐器发出美妙的声音。在语音信号的理论和应用中,所用的语音 数据大部分都是在接近理想的条件下采集的。然而,在语音通信过程中会不可避 免的受到各种噪声的干扰,这种干扰将最终导致接收者接收到的语音信号已非纯 净的原始语音,而是受到噪声污染后的带噪语音。

2. 基于计算机声卡的语音增强系统 在语音信号的理论和应用中,所用的语音数据大部分都是在接近理想的条件 下采集的。大多数语音识别和语音编码在开始研究时都要在高保真设备上录制语 音,尤其要在无噪环境下录音。然而,在语音通信过程中会不可避免的受到各种噪声的干扰,这种干扰将最终导致接收者接收到的语音信号已非纯净的原始语音, 而是受到噪声污染后的带噪语音,因而有必要对语音信号进行增强处理。语音增 强的目的主要有两个:一是改进语音质量,消除背景噪声,使听者乐于接受,不 感觉疲劳,这是一种主观度量;
二是提高语音可懂度,这是一种客观度量。这两 个目的往往不能兼得。

f(t)->F(w)=F(w)exp(j*thta), 图1 为基于计算机声卡和Matlab平台的语音信号采集处理系统。语言输入通 过传声器到A/D转换器,将模拟信号转换为数字信号,然后再通过Matlab平台对 语音信号进行采集、处理和回收。然后又通过D/A转换器,将数字信号转换为模 拟型号,通过扬声器进行声音回放,以达到谱相减语音增强的作用。

基本减谱法程序为:
clear;
%[xx,fs]=wavread("E:mywhispershu.wav");
%[xx,fs]=wavread("E:speechxw1xun_01.wav");
%[xx,fs]=wavread("E:speech耳语音切割bw1ba_5");
[xx,fs]=wavread("D:yuan.wav");% 读取音频文件yuan.wav,并返回采样数 据给变量xx及采样率Fs [team,row]=size(xx);%将数组xx的行数赋给team,列数赋给row if row==2 x=(xx(:,1)+xx(:,2))/2;
yy=x;
%如果语音信号xx为2列,即信号为双声道,则将其转换成单声道信号,即取 两列的平均值赋给x,并将x的值赋给yy else x=xx;
yy=x;
%若语音信号xx为单声道,则将xx的值赋给x,并将x的值赋给yyEnd x=x-mean(x)+0.1*rand(length(x),1 N=length(x);%将语音信号长度赋给变量N