dsp实现语音噪声滤波设计_第1页
dsp实现语音噪声滤波设计_第2页
dsp实现语音噪声滤波设计_第3页
dsp实现语音噪声滤波设计_第4页
dsp实现语音噪声滤波设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

DSPDSP课程设计课程设计 实实 验验 报报 告告 语音噪声滤波 院 系 电子信息工程学院院 系 电子信息工程学院 指导教师 杨恒指导教师 杨恒 小组成员 小组成员 语音噪声滤波 1 目目 录录 一 绪论一 绪论 1 1 二 二 设计任务设计任务 书书 5 5 三 设计方案 算法原理说三 设计方案 算法原理说 明明 10 10 四 程序设计 调试与结果分四 程序设计 调试与结果分 析析 15 15 五 设计 安装 与调试的体五 设计 安装 与调试的体 会会 25 25 六 参考文六 参考文 献献 26 26 七 附录源程七 附录源程 序序 16 16 语音噪声滤波 2 一 绪论一 绪论 随着语音技术研究的深入和实际应用的增多 各种语音处理系统都面临着进一步提 高性能的问题 语音增强是其中的关键技术之一 从 20 世纪 60 年代开始 对语音增强 的研究就一直没有停止 20 世纪 70 年代由于数字信号处理理论的成熟 加速了语音增 强技术的研究 使该技术走向成熟 20 世纪 80 年代以后 超大规模集成电路技术的发 展为语音增强的实时实现提供了可能 语音增强即语音噪声处理的目的是从带有噪声的语音信号中提取纯净的原始语音 但由于噪 声信号都是随机产生的 完全消除噪声几乎不可能 因此实际语音增强的目的主要有 改进语 音质量 消除背景噪声 使听者乐于接受 不感到疲倦 同时提高语音信号的可懂度 方便听者理解 语音增强不但与语音处理理论有关 而且涉及到人的听觉和语音学 再者 噪声的 来源众多 应用场合不同 它们的特性也各不相同 因此在不同的噪声场合中应采用不 同的语音增强方法 语音噪声处理的应用背景语音噪声处理的应用背景 语音噪声处理技术是指当语音信号被各种各样的噪声 包括语音 干扰 甚至淹没后 从 噪声背景中提取 增强有用的语音信号 抑制 降低噪声干扰的技术 语音增强技术无 论在日常生活中 还是在其它的领域 或者对语音信号处理技术本身来说都很有应用价 值 在日常生活中 我们经常会遇到在噪声干扰下进行语音通信的问题 如 使用设置 在嘈杂的马路旁或市场内的公用电话 或在奔驰的汽车 火车里使用移动电话时 旁人 的喧闹声 汽车和火车的轰鸣声等背景噪声都会干扰语音通讯的质量 对受话人来说 收听夹杂着各种干扰噪声的语音 至少会引起听觉疲劳 严重一点就会错误地识别或根 本无法听清对方的语音 对电话来说 干扰主要来自电话信道的回波干扰回波干扰 还有一种叫无线信道干扰无线信道干扰 它来 自信道对外界干扰屏蔽能力的强弱 比如雷雨天收听收音机 会听到阵阵噪声 它是由 于雷电引起信道附近强电流的骤变 导致强大的电磁波串入信道 并传送到接受端而引 起的噪声干扰 这些随机性的干扰也严重影响了语音的传输质量 再有一类需要用到语音增强技术的方面就是处理旧的录音磁带 由于早年录音技术 不完善 磁带质量不高 加上长久存放 使磁带发生霉变 机械损伤 磁粉脱落 磁化 等问题 使得重放语音产生噪声 对于那些极具研究或收藏价值的宝贵录音资料来说 语音增强技术是一个较好的恢复手段 在通信过程中 语音质量的好坏显得格外重要 如语音质量很差 接收方难以听清 对方的语音信息 轻者可能延误时间 贻误时机 重者可能错误地识别对方的语音 因 而错误地下达或执行命令 导致对工作造成不可估量的损失 在机械制造领域 声音环 境一般都比较恶劣 除了各种机械内部产生的噪声 工作中还不时地充满了各种冲击性 噪声 使得工作者的语音经常被部分或全部淹没在一片强噪声中 即使花九牛二虎之力 也常常难以收听到对方准确可靠的语音信息 因此 机械制造领域也迫切需要语音增强 技术 随着现代科学的蓬勃发展 人类社会愈来愈显示出信息社会的特点 通信或信息交 换已成为人类社会存在的必要条件 正如衣食住行对人类是必要的一样 语音作为语言 的声学表现 是人类交流信息最自然 最有效 最方便的手段之一 然而 人们在语音通信过程中不可避免地会受到来自周围环境和传输媒介引入的噪 语音噪声滤波 3 声 通信设备内部电噪声 乃至其他讲话者的干扰 这些干扰最终将使接收者接收到的 语音不再是纯净的原始语音 而是被噪声污染过的带有噪声的语音信号 例如 汽车 街道 机场中的电话 常受到强背景噪声的干扰 严重影响通话质量 而环境噪声的污 染使得许多语音处理系统的性能急剧恶化 例如 语音识别已取得重大进展 正步入使 用阶段 但目语音识别系统大多都是在安静环境中工作的 在噪声环境中尤其是强噪 声环境 语音识别系统的识别率将受到严重影响 在上述情况下 必须加入语音增强系统 或者抑制背景噪声 以提高语音通信质量 或者作为预处理器 以提高语音处理系统的抗干扰能力 维持系统性能 因此 语音增 强技术在实际中有重要价值 目前 语音增强已在语音处理系统 通信技术 多媒体技 术 数字化家电等领域得到了越来越广泛的应用 二 设计任务书 二 设计任务书 1 设计背景 语音通信的目的是传递声音信息 位于甲地的通信者发出的声音经语音传感器变换成为电 信号 经发送端设备变换为适合传输的形式 通过传输信道传输到乙地 在乙地经接收端设备 恢复出原来的语音信号 经耳机或者喇叭转换为接收者可以听到的声音信号 这就是最基本的 语音通信系统 但是由于周围环境的原因 我们采集到语音信号经常含有不同程度的噪声 典型语音通信系统中的噪声来自三个方面 信号处理设备产生的电噪声及传输信道中的 电噪声 信号发送端空间环境中的音频噪声信号经麦克风变换为电信号之后 与有用信号 其同传递到接收端 信号接收端空间环境中的音频噪声对信号接收者的影响 噪声是由于发 生体作无规则振动产生的 在很多情况下 环境中的背景噪声是通信系统中噪声干扰的主要来源 当语音信号受到背 景噪声干扰时语音通信质量变得不可接受 因此要对语音信号中的噪声滤除 DSP利用直接存 储器访问方式DMA Direct Memory Access 采集数据时不打扰CPU 因此利用DMA方式工作 时 CPU可以对语音信号进行实时地滤波 本设计要求利用DSP的DMA方式进行信号采集和信 号输出 对语音信号进行数字编码 滤波后进行解码 2 设计要求及目标 基本部分基本部分 1 对DMA进行初始化 2 对A D D A进行初始化 3 编写DMA中断服务程序和滤波算法程序 实现语音信号的实时滤波 发挥部分 发挥部分 1 使用DSP产生带回波的语音信号 2 利用自适应滤波实现语音信号的回波对消 语音噪声滤波 4 3 设计思路 首先利用DSP的DMA方式对外部含噪声的语音信号进行实时采集 语音信号先经过A D转 换为数字信号 利用MCBSP的接收寄存器接收数据 编写滤波算法程序 或调用DSPLIB中的 滤波函数 对信号进行滤波 滤波后的数据利用DMA方式送到D A转换器转换为模拟信号 4 要求完成的任务 1 编写C语言程序 并在CCS集成开发环境下调试通过 2 将包含噪声的语音信号进行滤波 从扬声器输出端口输出 比较滤波前后的信号的 变化 3 按要求撰写设计报告 三 设计方案 算法原理说明 三 设计方案 算法原理说明 语音噪声滤波是个很宽泛的题目 虽然从老师给的要求来看 主要是想让我们熟悉 CODEC DMA和简单的数字滤波器设计 但我们认为语音噪声的处理远远不止于此 既然我们要 进行语音滤波滤掉噪音 我们就要将我们的注意力聚焦在各种噪声的处理上 我们将分门别类 的处理各式各样的噪声 不同的噪声有不同的处理方法 噪声的种类噪声的种类 根据与输入语音的关系 噪声可分为加性噪声和非加性噪声两类 对某些非加性噪 声而言 可以通过一定的变换转换成加性噪声 例如乘性噪声可以通过同态变换转换为 加性噪声 某些与信号相关的量化噪声也可以通过随机噪声扰动的方法转换成与信号独 立的加性噪声 因此 为简化讨论 下面主要分析加性噪声的干扰 语音处理中的加性 噪声大体上可以分为周期噪声 脉冲噪声 宽带噪声和同声道其它语音干扰等 1 周期性噪声 周期性噪声主要来源于发动机等周期性运转的机械 电气干扰也会引起周期性噪 声 其特点是频谱上有许多离散的线谱 实际信号受多种因素的影响 线谱分量通常转 变为窄带谱结构 而且通常这些窄带谱都是时变的 位置也不固定 必须采用自适应滤 波的方法才能有效地区分这些噪声分量 2 脉冲噪声 语音噪声滤波 5 脉冲噪声主要来源于爆炸 撞击 放电及突发性干扰等 其特征是时间上的宽度很 窄 消除脉冲噪声通常可以在时域内进行 其过程如下 根据带噪语音信号幅度的平均根据带噪语音信号幅度的平均 值确定阈值 值确定阈值 当信号幅度超出这一阈值时判别为脉冲噪声 然后对信号进行适当的衰减 就可以完全消除噪声分量 也可以使用内插方法将脉冲噪声在时域上进行平滑 3 宽带噪声 宽带噪声来源很多 热噪声 气流 如风 呼吸 噪声及各种随机噪声源 量化噪声 也可视为宽带噪声 宽带噪声与语音信号在时域和频域上基本上重叠宽带噪声与语音信号在时域和频域上基本上重叠 只有在无话期间 噪声分量才单独存在 因此消除这种噪声比较困难 对于平稳的宽带噪声 通常可以认 为是高斯白噪声 4 同声道语音干扰 在实际生活中经常遇到很多人同时说话的情况 此时不需要的语音就形成了同声道干扰 入耳可以根据需要分辨出其中某个人的声音 这种能力来源于人的双耳输入效应和人类语音中 包含的 声纹 特征 这是人体内部语音理解机理的一种感知能力表现 通常情况下语音经 双耳输入 人们根据两路输入的不同时延特性进行分离 同时由于人的发声器官生理结构的差 异 每个人都有自身独特的 声纹 因此即使双耳效应不显著 例如单声道传输时 人耳也可 以借助声纹对信号进行分离 5 背景噪声 背景噪声破坏了信号原有的声学特征及模型参数 因此减弱了不同语音间的差别 使语音质量下降 可懂度降低 强噪声会使人产生听觉疲劳 从而影响人耳的听觉特性 同时 较强的背景噪声也会使讲话人的发音方式发生变化 即使发相同的语音 其语音 的特征参数也会与安静环境下的发音有所不同 这种效应称为Lombard效应 6 单频噪声 它主要源于无线电干扰 因为电台发射的频谱集中在比较窄的频率范围内 因此可 以近似地看作是单频性质的 另外 像电源交流电 反馈系统自激振荡等也都属于单频 干扰 它的特点是 种连续干扰 并且其频率是可以通过实测来确定的 因此在采取适 当的措施后就有可能防止 以上的噪声有的离我们很远 有的对我们来讲太难 经过我们的总结 我们准备将重点放在 语音通信中的三种噪声上 1 信道干扰信道干扰 它来自信道对外界干扰屏蔽能力的强弱 比如雷雨天收听收音机 会听到阵阵噪声 它是由 于雷电引起信道附近强电流的骤变 导致强大的电磁波串入信道 并传送到接受端而引起的噪 声干扰 这些随机性的干扰也严重影响了语音的传输质量 语音噪声滤波 6 2 回波噪声 回波噪声 声回波是指在语音通信中 远端的语音信号通过近端扬声器 房间 近端麦克风路径 又随 着近端说话者的声音一同通过通信线路传播到了远端 然而 远端听话者是不愿听到自己声音 回波的 3 3 脉冲式噪声 脉冲式噪声 这种噪声主要是仿真当我们语音通话时突然外界传来巨大声响的情况 比如在施工现场 这种情况下 听者的听觉和心情会被突入的巨大声响严重损害 应对方式 应对方式 对于信道干扰 往往会上尖峰或者工频脉冲 这种噪声的特点就是与语音信号的频率差异对于信道干扰 往往会上尖峰或者工频脉冲 这种噪声的特点就是与语音信号的频率差异 很大 所以 我们应用滤波器将很大 所以 我们应用滤波器将4000HZ4000HZ频率以上的声音滤除 即可一定程度上消除电噪声或其频率以上的声音滤除 即可一定程度上消除电噪声或其 他信道干扰 他信道干扰 对于回波噪声就不能应用这种方法 因为噪声本体就是声音信号 频率于我们的语音信号对于回波噪声就不能应用这种方法 因为噪声本体就是声音信号 频率于我们的语音信号 一样 对于这种噪音 我们应用自适应滤波方式进行滤除 一样 对于这种噪音 我们应用自适应滤波方式进行滤除 对于脉冲式 我们将应用阈值滤波的方法 对于脉冲式 我们将应用阈值滤波的方法 1 信道干扰滤波部分 首先利用 DSP 的 DMA 方式对外部含噪声的语音信号进行实时采集 语音信号先经过 A D 转 换为数字信号 利用 MCBSP 的接收寄存器接收数据 编写滤波算法程序 或调用 DSPLIB 中的 滤波函数 对信号进行滤波 滤波后的数据利用 DMA 方式送到 D A 转换器转换为模拟信号 这 就是我们的设计思路 具体的设计方案原理图如下 模拟输入信号通过 DSK 的 MIC 端口输入 经 A D 转换 然后 到达 DSP 的 DMA 通道 2 DSP 接收到信号后 调用中断服务程序进行滤波 滤波后的信号可以 在 CCS 上显示 也可以通过 DMA 通道 3 将信号输出到 D A 转换器 经 D A 转换后从 SPEAKER 端 口输出 语音噪声滤波 7 1 直接存储器访问 DMA 直接存储器访问 Direct Memory Access 是C54x DSP非常重要的片上外设 DMA控制器可以在不影响CPU的情况下完成数据的传输 因此数据传输速度快 在要 求信号实时采集和处理的系统中常采用DMA方式进行信号采集和传输 C5402有6个 可独立编程的DMA通道 每个DMA通道受各自的5个16位寄存器控制 源地址寄存器 DMSRC 目的地址寄存器DMDST 单元计数寄存器DMCTR 同步事件和计数寄存器 DMSFC 发送模式控制寄存器DMMCR 目的地址寄存器DMDST规定DMA要传送数据目的 地址和首地址 单元计数寄存器DMCTR规定DMA传送数据的个数为DMCTR寄存器的值 加1 同步事件和桢计数寄存器DMSFC规定DMA传送数据的同步事件类型和传送一块 数据所含桢信号的个数 发送模式控制寄存器DMMCR规定DMA通道的传输模式 当 DMA工作在自动初始化模式时 CPU在一个DMA事件完成后自动装载下一个DMA初始化 设置并继续进行数据传送 DINM位和IMOD位设置DMA中断产生方式 CTMOD位设置发 送计数模式控制 CTMOD位为0时 DMA工作在多桢模式 CTMOD位为1时 DMA工作在 自动缓冲ABU模式 SIND位和DIND位用来设置源地址和目的地址的自动调整方式 此外 DMA的6个通道还受通道优先级和使能控制寄存器DMPREC控制 本实验利用DMA通道2与MCBSP1通道结合来读取A D转换器的数据 利用DMA通道 3与MCBSP1通道结合来将处理后的数据发送至D A转换器 选择MCBSP1通道的接收寄 存器DRR11 41H 为DMA传送数据的首地址 并选择DMA源地址工作在不调整方式 选择MCBSP1接收事件为DMA同步事件 以实现DMA和MCBSP的结合 A D转换器的数据 语音噪声滤波 8 按MCBSP1的设置被传送到DSP内部接收寄存器DRR11中 再由DMA通道2将DRR11中的 数据读到指定数据存储区inp buffer中完成数据采集 DMA在传送外部来的数据时 不会影响CPU的正常运行 当DMA通道2采集完一组数据后产生一个DMA中断事件中断 CPU 来通知CPU对其进行相应的处理 此时DMA通道2可以按照设定继续采集下一组 数据 实现了数据采集与CPU处理的并行操作 当一组数据处理完成后 将数据存放在数据存储区out buffer中 选择 out buffer为DMA通道3的首地址 并选择源工作地址工作在不调整方式 选择 MCBSP1通道的发送积存器DXR11 43H 为DMA通道3传送数据的目的地址 并选择 DMA源地址工作在不调整方式 选择MCBSP1接收事件为DMA同步事件 以实现DMA和 MCBSP的结合 在CCS集成开发环境中 与DMA相关的头文件有regs54xx h和dma54xx h 在这 两个头文件中 定义了DMA的寄存器资源 使用方法和DMA寄存器的地址和基本访问 方式 以及寄存器的各个比特域和访问方法 因此需要进行C源程序的开始处包含 这两个头文件 输入信号经A D转换后 利用DMA通道2进行传输进入DSP处理 而滤 波后的信号输出利用了DMA通道3进行传输进入D A转换器等输出 因此需要对DMA通 道2和通道3进行初始化配置 2 A D和D A转换器 本实验要用到A D和D A转换器 A D转换器能够将接收的语音信号 模拟信号 转化为数字信号 供CPU进行处理 D A转换器能够将数字信号转换为语音信号送 SPEAKER端口输出 要使用A D和D A转换器 必须首先对A D和D A转换器进行初始化设置 即设置 A D转换器的工作模式 15 1bit模式 16bit模式 输入增益 0dB 6Db 12dB 以 及抽样频率 8000Hz 16000Hz 等 2 回波去噪部分 初始化FIR延迟输出数组dbuffer h FIR输出数组 自适应滤波器系数矢量 coff w 和自适应滤波器的输出数组out w 以及DSK板之后 采集输入的语音信号 根据模式的不同进行不同的处理以输出不同的信号来进行效果的比较 我们的做法 语音噪声滤波 9 是利用设置参数mode来改变板子的功能 mode 1时信号通过FIR滤波器后产生回声 为使现象更明显可以附加一个延迟 mode 2时用自适应滤波器逼近FIR滤波器以使 之输出近似的信号 用信号通过两个系统产生的信号之差 即剩余回声 来调整自适 应滤波器的系数 使剩余回声逐渐收敛于0 1 自适应滤波器的基本原理 自适应滤波自适应滤波原原理理 利利用用前前一一时时刻刻获获得得的的滤滤波波结结果果 自自动动调调节节现现时时刻刻的的滤滤波波器器 参参数数 以以适适应应信信号号和和噪噪声声的的未未知知特特性性 从从而而实实现现最最优优滤滤波波 自适应滤波器主要由系数可调的数字滤波器和调整滤波器系数的自适应算法两 部分构成 自适应滤波器的一般结构如图l所示 自适应滤波其最重要的性能是能 有效地在未知环境中跟踪时变的输入信号 使输出信号达到最优 因而在电信 雷 达 声纳 实时控制以及图像处理等领域都有成功的应用 常规滤波器具有特定的特性 对于输入信号根据这个滤波器特性产生相应的输 出 也就是 先有了滤波器构成的权系数 然后决定相应输出值 但有些实际应用 往往是反过来要求的 即对滤波器输出的要求是明确的 而滤波器特性是无法预先 知道的 例如长话系统 回波相消器的理想输出是无回波信号 这个要求是明确的 而系统本身却不能一开始就确定下来 因为它取决于长话系统话路传输条件的变化 像这样的应用技术就必须依赖自适应滤波技术 图l中d n 为期望响应 x n 为自适应滤波器的输入 y n 为自适应滤波器的 输出 e n 为估计误差 P n x n y n 前置级完成跟踪信号的选择 确定是 信号还是噪声 后置级根据前置级的不同选择对数字滤波器输出作不同的处理 以 语音噪声滤波 10 得到信号输出 自适应滤波器的滤波器系数受误差信号e n 控制 根据e n 的值和 自适应算法自动调整 2 回声消除器的基本原理 回声消除的基本原理是采用一个自适应滤渡器自动识别回声通道 通过自适 应滤波算法的调整 使其冲激响应与实际回声路径逼近 从而得到回声预测信号 y n 再将预测信号从近端采样的语音信号d n 中减去 即可实现回声消除 自适 应算法要求收敛速度快 计算复杂度低 稳定性好和失调误差小 虽然许多自适应 算法在理论上实现回声消除都是可行的 但通常采用的是较简单的算法 例如广泛 应用的LMS自适应算法 3 LMS 算法 本设计中自适应算法是根据最小均方误差判据来设计的 即理想信号与滤波器 输出之差的平方值的期望值最小 并且根据这个判据来修改权系数 均方误差 表示为 E e2 n E d n y n 2 对于横向结构滤波器 代入 y n 的表达式 有 E d2 n WT n RW n 2 WT n P 语音噪声滤波 11 其中 R E X n XT n 是 N N 的自相关矩阵 它是输入信号采样值间的相关性 矩阵 P E d n X n 为 N 1 互相关矢量 代表理想信号 d n 与输入矢量的相 关性 在均方误差 达到最小时 得到最佳权系数 W w0 w1 w2 wN 1 T 它应满足下列方程 0 nW WnW 即 R W P 0 显然 x m x n x n m 是 x n 的自相关值 xd R E x n d n k 是 x n 与 d n 的互相关值 在有些应用中 把输入信号的采样值分成相同的段 每 段称为一帧 再求出 R 和 P 估计值 以得到每帧的最佳权系数 这种方法称为块 对块自适应算法 如语音信号的线性预测编码 LPC 就是把语音信号分成帧进行处 理的 R 和 P 的计算 要求出期望值 E 在实际运算中不易实现 为此 可通过下 式进行估计 xd 1 0 1 mK i imndinx mK xd 1 0 1 mK i imnxinx mK 用以上方法获得最佳 W 的运算量很大 对于一些在线或实时应用的场合 无法满 足其时间要求 大多数场合使用迭代算法 对每次采样值求出较佳权系数 称为采样值对采样值迭 代算法 迭代算法可以避免复杂的 R 1 和 P 的运算 又能实时求得式的近似解 因 而切实可行 LMS 算法是以最快下降法为原则的迭代算法 即 W n 1 矢量是 W n 矢量 按均方误差性能平面的负斜率大小调节相应一个增量 W n 1 W n u n 这个 u 是由系统稳定性和迭代运算收敛速度来决定的自适应步长 n 为 n 语音噪声滤波 12 次迭代的梯度 对于 LMS 算法 n 是 E e2 n 的斜率 2 2 nXneE nW neE 由式 W n 1 W n u n 产生了求解最佳权系数的两种方法 一种是 最陡梯度法 其思路为 设定初始权系数 用上式迭代公式计算 直到 W n 1 与 W n 误差小于规定范围 其中 n 的 E 计算 可用估计值表达式 1 0 1 k i inXine K nXneE 式中 K 的取值应该足够大 如果用瞬时 2e n X n 来代替上式对 2E e n X n 的估计运算 就产生了另一种算法 随机梯度法 即 Widrow Hoff 的 LMS 算法 此时迭代公式为 W n 1 W n 2u e n X n 以上讨论的自适应算法都是基于 Widrow Hoff 的 LMS 算法 上式的迭代公式 假定滤波器结构为横向结构 对于对称横向型结构 也可推出类似的迭代公式 W n 1 W n 2u e n X n X n N 1 其中 X n T Nnxnxnx12 1 而 X n N 1 T NnxNnxNnx2 2 1 LMS算法流程图 语音噪声滤波 13 自自适适应应控控制制 自适应控制可以看作是一个能根据环境变化智能调节自身特性的反馈控制系 统以使系统能按照一些设定的标准工作在最优状态 一般地说 自适应控制在 航空 导弹和空间飞行器的控制中很成功 可以得出结论 传统的自适应控制 适合 1 没有大时间延迟的机械系统 2 对设计的系统动态特性很清楚 但在工业过程控制应用中 传统的自适应控制并不如意 PID 自整定方案可能 是最可靠的 广泛应用于商业产品 但用户并不怎么喜欢和接受 传统的自适 应控制方法 要么采用模型参考要么采用自整定 一般需要辨识过程的动态特 性 它存在许多基本问题 1 需要复杂的离线训练 2 辨识所需的充分激 励信号和系统平稳运行的矛盾 3 对系统结构假设 4 实际应用中 模 型的收敛性和系统稳定性无法保证 另外 传统自适应控制方法中假设系统结 构的信息 在处理非线性 变结构或大时间延迟时很难 一言以蔽之 一言以蔽之 就是利用就是利用LMSLMS的方式使以前的波形信息为反馈提供给适合的参数已达到滤去噪声的的方式使以前的波形信息为反馈提供给适合的参数已达到滤去噪声的 作用 作用 3 脉冲式滤波 我们的方式先求个点的平均值 然后根据实际 大于这个平均值的 5 倍以上的信 号幅度进行衰减 这样可以在时域直接进行处理 进而得到需要的声音 将乱入的 声音滤掉 保护听者 4 小创意 变调 音调转移使用同一个存储的声音片断 可以帮助产生其他频率的音符 正弦信号的频率与周期成反比 所以抽样间隔变大的话 就相当于频率变大 运用此原理 我们对dma256数据进行抽样 若抽样间隔大于 则抽样 256 1 频率提高 声调提高 若间隔小于 则抽样频率降低 声调降低 256 1 语音噪声滤波 14 四 程序设计 调试与结果分析 四 程序设计 调试与结果分析 1 调试过程 a 首先设计FIR滤波器 FIR滤波器的算法可以由MATLAB来设计 打开MATLAB 在命令窗中输入FDAtool 打开滤波器设计与分析工具 因为语音 信号的频率成分主要分布在300Hz到3400Hz 所以我们只要设计4000Hz的低通FIR滤 波器就可以实现对语音信号中掺杂的噪声的滤除 在FDA中选择带低通FIR滤波器 阶数选择15 抽样频率选择16kHz 就可以设计所要的滤波器了 然后将设计好的 结果导出为fir c文件 设计好滤波器后 还要进行对A D和D A以及DMA的初始化 并编写主程序和中 断服务程序 以及控制调用中断时程序流向的中断向量表 详细内容请见程序清单 由于DSK5402板上存储器分配方式基本相同 所以 cmd文件可以采用其他程序中的 cmd文件 b 信号滤波部分 1 通过MIC向计算机输入语音信号 但此种方式不能很好的听出声音到底有什么 变化 因为其实板子的噪声即不准 所以最好是用输入正弦波再利用CCS看图形的 方式 可是 咱们的板子本身有问题 经过板子后会加上噪音图形无法分辨 可是 咱们的板子本身有问题 经过板子后会加上噪音图形无法分辨 2 编译滤波工程之前先在CCS下选择Tools Linker Configuration 出现连接器 配置对话框 选择Use the Visual Linker 然后再对程序进行编译 3 编译通过则会产生Firlab out文件 并可执行文件Firlab out下载到DSP中 4 在中断服务程序dmac2isr c中的有效行上设置断点 以便观察图形 5 选择Debug Animate 激活程序 Animate Run Halt Run 6 在CCS中选择View Graph Time Frequency 出现图形属性对话框 图形属性 对话框中 Start Adress设置为输入变量名 Acquisition Buffer Size为十进制 256 Display Data Size 为十六进制 DSP Data Type为16位有符号整形数 其它 设置不变 确定后出现如下图所示时域波形 c 扩展回波对消部分 1 由麦克将产生的语音信号输入到J5端口 J6端口接入音响或耳机 对比处理 语音噪声滤波 15 前后的语音信号 2 编译滤波工程之前先在CCS下选择Tools Linker Configuration 出现连接器 配置对话框 选择Use the text Linker 然后再对程序进行编译 3 通过设置mode的值 对不同算法处理过的信号分别观察 0代表产生输入原声 1代表产生带回波噪声的声音 2代表用自适应消除回波后的声音 3代表产生添 加正弦频率噪音的信号 4代表用自适应方法滤除正弦噪音后的声音 5代表音调降 低 6代表近音调升高 7代表滤除脉冲噪音 4 选择Debug Animate 激活程序 Animate Run Halt Run 5 在程序运行过程中 输入语音信号分别进行语音输出观察 2 结果分析 1 理论上老师给的滤波输入输出信号 我们的 语音噪声滤波 16 女变男 明显看出有失真 五 设计 安装 与调试的体会 五 设计 安装 与调试的体会 感想 这次的 dsp 实验我们可以用辛酸来形容 500 多人排不到 20 块 板子 必须要起个大早才可以用到板子 所以我们的用板时间真的不 是太多 当然有我们前几天的大意这方面的因素 后来当我们把理论 知识研究到一定深度的准备实践的时候 实验室已经门可罗雀了 唉 我们的辛酸的借板子的历程就开始了 虽然资源不够 但这同 样给与了我们提高 锻炼了我们非常娴熟的调试技术 可以用神速来 语音噪声滤波 17 形容我们俩生成工程的速度 所以 什么样的情况都是一种经历 这 种艰苦的经历对于我们更是一种锻炼和提高 对于我们这种从小没 怎么吃苦的孩子们也是一次额外的经历 也许到了我们老了 还会想 起交大小学期排板子的经历 那时我们俩要是一起聊天 一定会相视 一笑的 因为本课题的基本语音滤波部分杨老师在课上给予了我们讲 解 因此我们就在原本的基础上进行改善和增加拓展 因为课题 要求是 进行语音滤波 因此我们一开始从 通道的初 始化使能着手 然后了解到整个程序模板中真正对 采集到 的音频信号进行滤波的是中断服务程序 这与我们学得单片机有 惊人的类似 所以这方面的初始化 我们还是掌握的不错的 但是 dma寄存器实在是太多了 我们只能照着书一点一点的翻 一点一点 的写 当然书上的初始化程序还是给的很细 我们也借鉴了很多 但我 们想 这些都是死的 我们没有必要在这上面浪费很多时间 还是以理 解为主吧 之后就是研究中断中具体的滤波程序了 我们是从噪声的种类 角度下手 一点一点的进行的 考虑了很多噪声 这在报告的前面部分 中也都提到了 然后我们就研究具体的解决办法 一步一步地下手 再 查找具体的滤波函数的时候 我们也发现我们的数学水平真的还欠 缺 或者说我们很强的耐心看很长的数学公式 这在日后的学习过程 中还待加强阿 接着 我们在原来的基础上 想到了变声 我们最初想对实 时滤波处理过后的 个语音样本点间的距离进行适当的拉长 和压短 这样应该就会产生一定的变声 因为女生普遍比男生发 语音噪声滤波 18 生的频率高 这样音调高 所以对语音样本点间的距离进行压缩 后 就能将一段男声近似变成 女声 同理 对语音样本点间的 距离进行拉长后 这样频率变低 就相应地实现女声变 男声 最后经过反复实验 我们做出了近似变声功能 然后 我们用自适应滤波器滤除回波 比对了几种自适应滤 波器后 我们最终决定采用 滤波器进行滤波 最后我们 用了将近一天的时间 的参数使用和定义搞清楚 一开始 我们遇到了不小的麻烦 不管怎么样都不出声 最后我们想到参 考资料上介绍的是用 采集方式 数据一个一个的采集 而 我们用的是 传输 是一串一串的采集 所以我们猜想是不 是自适应滤波器的步长参数设置得过低 使得其自适应的过程中 容量不够 因此我们尝试着将步长由原来的 该为 最后一试还真的实现了回波消除 用 板的一个语音输入端模拟一方的电话用户 而再用 软件产生一个接近 的正弦信号模拟另一端用户传来的语 音 将这两端传来的信号叠加在一起后就类似于我们日常通话中 能听到自己回声的现象 再采用 自适应滤波 滤除一方 信号后就能实现回声消除 最后我们自己模仿了脉冲噪音的形式 自己录制了一段声音 然后想在MODE7中应用阈值滤波法滤波 但是因为时间有限 主 要是因为板子太少 在我们答辩以前 我俩还没有利用板子尝试 过 但是我们的原理很清晰 并准备在答辩时现场尝试 语音噪声滤波 19 综上 就是我们对这次实验的感想 最后我们表达一下对小学期 的情感 虽然说这小学期比上课还要累 但我们从理论逐步向实践过 渡了 把两门信号处理的大课的知识结合到实践中去做了 我们不再 是只会算题的学生了 更像是两个工程师 虽然研究的东西不太高端 但对我们应经是受益匪浅了 用一句玩笑来形容就是 这些实践为我 们回去和朋友吹嘘自己在大学学到了什么提供了很强的说服力 最 后的最后 感谢杨老师为我们上课打下的最原始的基础 感谢那些借 我们板子的可爱的同学们 更要感谢学院开设这么有意义的课 六 源程序代码六 源程序代码 1 1 FIRlab CFIRlab C FIRlab C AIC McBSP DMA initialization for FIR lab Filter Goal This code performs the following functions toggle the three LEDs on the DSK setup AIC CODEC parameters initialize DMA Channel CH2 input turn on interrupts run forever waiting for DMA interrupts to transfer data 语音噪声滤波 20 Author Scott Bland Date 03 20 2000 Include Files include include include include include include include include timer h include include Function Prototypes void delay s16 period extern void DMAC2ISR Global Variables 语音噪声滤波 21 HANDLE hHandset unsigned int dmsefc dmmcr dmctr src addr dst addr unsigned int dmpre dmsrcp dmdstp dmidx0 dmidx1 dmfri0 dmfri1 dmgsa dmgda dmgcr dmgfr Create specific data section for buffer symbol section name pragma DATA SECTION inp buffer audio buffer int inp buffer 0 x200 Create specific data section for buffer symbol section name pragma DATA SECTION out buffer outt buffer int out buffer 0 x200 Create specific data section for coeffiecients pragma DATA SECTION coeffs coefficients Low Pass Filter fs 16000 fc 4000Hz int coeffs 16 79 136 312 654 1244 2280 4501 14655 14655 4501 2280 1244 654 312 136 79 High Pass Filter int coeffs 16 120 5245 3421 2451 11216 40 24657 29610 29610 24657 40 11216 2451 3421 5245 120 Band Pass Filter int coeffs 16 921 2494 137 3654 2485 2063 9015 16165 16165 9015 2063 2485 3654 137 2494 921 Band Stop Filter int coeffs 16 491 165 2159 772 6697 10044 648 12297 12297 648 10044 6697 772 2159 165 491 All Pass Filter int coeffs 16 32767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 int highpass 16 848 1129 1496 2000 2754 4053 6980 21279 21279 6980 4053 2754 2000 1496 1129 848 Create specific data section for delay buffer pragma DATA SECTION delaybuff delayb int delaybuff 16 0 int delaybuff1 16 0 语音噪声滤波 22 declare and initialize two variables for DMAC ISRs int frame 0 int flag 0 int temp int a b int bf1 0 x3000 0 delayptr holds the address of the start of the delay buffer int delayptr1 int delayptr2 interrupt void DMAC2ISR MAIN void main s16 cnt 2 a 8 b 6 These are the items that BIOS will set when we use it BSCR 0 x8806 XPC 0 PMST 0 xA0 brd set cpu freq 100 TIMER HALT 0 brd set wait states 7 7 9 TIMER RESET 0 IMR 0 禁止所有中断 语音噪声滤波 23 if brd init bios return while cnt brd led toggle BRD LED0 切换LED指示灯的显示状态 delay 1000 brd led toggle BRD LED1 切换LED指示灯的显示状态 delay 1000 brd led toggle BRD LED2 切换LED指示灯的显示状态 delay 1000 Open Handset Codec hHandset codec open HANDSET CODEC Acquire handle to codec Set codec parameters codec dac mode hHandset CODEC DAC 15BIT DAC in 15 bit mode codec adc mode hHandset CODEC ADC 15BIT ADC in 15 bit mode codec ain gain hHandset CODEC AIN 6dB 6dB gain on analog input to ADC codec aout gain hHandset CODEC AOUT MINUS 6dB 6dB gain on analog output from DAC codec sample rate hHandset SR 16000 16KHz sampling rate Clear IFR INTR CLR FLAG DMAC2 Reset all DMA channels 语音噪声滤波 24 dma reset all Initialize DMA channel 2 dmsefc DSYNC REVT1 12 DMA与McBSP1接收事件同步 dmmcr AUTOINIT ENABLE 15 DINM ENABLE 14 IMOD HALFBLOCK 13 CTMOD DEC 12 INDEXMODE NOMOD 8 SPACE DATA 6 INDEXMODE INC 2 SPACE DATA 设置传输控制模式寄存器DMMCR 15bit AUTOINIT ENABLE 1 使能自动初始化 14bit DINM ENABLE 1 根据IMOD位产生中断 13bit IMOD HALFBLOCK 1 帧和块结束时都产生中断 12bit CTMOD DEC 0 减量计数模式 多帧模式 10 8bit INDEXMODE NOMOD 000 源地址模式No modify 7 6bit SPACE DATA 01 源地址空间为数据空间 4 2bit INDEXMODE INC 01 目的地址模式 传输之后加 1 0bit SPACE DATA 01 目的地址空间为数据空间 dmctr 0 xFF 单元记数 期望传输数据减1 src addr DRR1 ADDR HANDSET CODEC 将MCBSP1的接收寄存器设为源地址 dst addr unsigned int 目的地址为数组inp buffer 即 接收到的数据存放在inp buffer中 dma init DMA CH2 dmsefc dmmcr dmctr SPACE DATA src addr SPACE DATA dst addr Set number of frames for channel 2 DMA FRAMECOUNT DMA CH2 1 Set up global autoinit registers for DMA CH2 Input dmgsa src addr 将通道源地址赋给全局源地址重载寄存器 dmgda dst addr 将通道目的地址赋给全局目的地址重载寄存器 dmgcr 0 xFF 将通道单元记数寄存器的值赋给全局单元记数重载寄存器 dmgfr 1 将通道帧记数寄存器的值赋给全局帧记数重载寄存器 Set up global priority and enable control register for Ch2 语音噪声滤波 25 dmpre HIGH PRIORITY 10 INTSEL 01 6 DMA通道优先级最 高 中断分配控制位给DMA2 dmsrcp SPACE DATA 源地址为数据空间 dmdstp SPACE DATA 目的地址为数据空间 dmidx0 0 给单元地址索引寄存器赋值 dmidx1 0 给单元地址索引寄存器赋值 dmfri0 0 给帧地址索引寄存器赋值 dmfri1 0 给帧地址索引寄存器赋值 dma global init dmpre dmsrcp dmdstp dmidx0 dmidx1 dmfri0 dmfri1 dmgsa dmgda dmgcr dmgfr Enable channel 2 DMA ENABLE DMA CH2 prime the serial port to begin input buffer stream temp volatile u16 DRR1 ADDR HANDSET CODEC Enable DMAC2 interrupt INTR ENABLE DMAC2 Enable Global Interrupts INTR GLOBAL ENABLE Endless loop waiting for DMAC2 interrupt for interrupt void timer0 isr void a interrupt void timer1 isr void b 语音噪声滤波 26 void interrupt init void IFR 0 x0ffff clear all interrupt flag IMR 0 x0003 enable timer0 interrupt PMST PMST set IPTR PMST 0 x4020 set IPTR asm RSBX INTM enable all interrupt delay void delay s16 period int i j for i 0 i period i for j 0 j period j 2 2 dmac2isr c d

温馨提示

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

评论

0/150

提交评论