计算机视觉与智能语音处理融合套件初体验(语音部分)

本次实验我们使用的是EAIDK计算机视觉+语音处理套件试验箱进行实验

套件介绍

套件简介

EAIDK计算机视觉+语音实验箱以嵌入式人工智能开发套件EAIDK-610为核心,具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;预装Linux操作系统与嵌入式深度学习框架Tengine,支持视觉处理与分析、语音识别与语义分析、SLAM等应用的基础平台和主流开源算法,可满足嵌入式人工智能教学与科研、AI算法应用与开发、AI产品原型开发验证等应用场景。

视觉套件包含 计算机视觉ARM嵌入式人工智能语音处理三个部分:

  • 视觉部分包括两个功能:
  • 人脸属性
  • 人脸识别
  • 嵌入式部分主要包含 3个传感器2个电子执行器
  • 传感器:
    • 红外感应器
    • 超声波测距
    • NFC磁卡读取器
  • 电子执行器
    • 风扇(含继电器,电机)
    • LED发光二极管
  • 人工智能语音处理包含:
  • 语音处理
  • 语音识别
  • 语音合成
  • 智能对话

本次实验中,由于对箱子的功能不尽了解,时间也相对有限,所以我只完成了以下几个简单的实验:

  • 语音部分:
  • 录音实验
  • 播放实验
  • 语音变速实验
  • 降噪实验
  • 回声消除实验
  • 语音活性检测实验
  • 视觉部分:
  • 图像采集
  • 图像处理
  • 背景提取
  • 视频跟踪

语音部分实验

1.录音实验:

录音流程:

计算机视觉与智能语音处理融合套件初体验(语音部分)
实验过程:

进入 /home/openailab/cases/record/case/speech/record 文件夹中

计算机视觉与智能语音处理融合套件初体验(语音部分)
  • CMakeLists.txt 是控制程序编译的文件,会根据此文件生成Makefile以及编译。
  • compile.sh为编译本案例的脚本
  • main.cpp是录音的C++源码
  • README.txt为运行本案例的指导文档
  • record.json为控制ESP平台编译的json文件

首先,我们需要编译平台。进入/home/openailab/cases/record/platform/release目录下

计算机视觉与智能语音处理融合套件初体验(语音部分)
在该目录下,用./ninja.sh编译平台
计算机视觉与智能语音处理融合套件初体验(语音部分)
成功编译后,我们回到案例目录/home/openailab/cases/record/case/speech/record。进入该目录之后,我们可以用./compile.sh命令编译工程
计算机视觉与智能语音处理融合套件初体验(语音部分)
编译之后,我们在案例目录下会得到一个build目录,进入build目录内,首先使用arecord -l 查看有哪些播放设备
计算机视觉与智能语音处理融合套件初体验(语音部分)
如上图所示,Microphone [USB FS Microphone] 新版套件所提供的V2版本麦克风(黑色)

Audio [Sabine Array Audio]新版套件所提供的V1版本麦克风(绿色)

如果是V1版麦克风,则使用./record hw:Audio进行录音

同理,V2版麦克风,则使用./record hw:Microphone进行录音

V3版麦克风,则使用./record hw:MicArray进行录音

运行此命令之后录音便会开始,我们可以按回车停止录音,录音结束后按ctrl+c退出案例。此时build目录下会显示一个save.pcm的录音文件,正如文件的后缀显示,是一个pcm格式的音频。

; 2.播放实验:

播放案例代码放于/home/openailab/cases/play/case/speech/play目录下。目录主要文件包含如下图

计算机视觉与智能语音处理融合套件初体验(语音部分)
  • CMakeLists.txt 是控制程序编译的文件,会根据此文件生成Makefile以及编译
  • compile.sh为编译本案例的脚本
  • esp_demo.wav为案例播放音频
  • main.cpp是播放案例的C++源码
  • play.json为控制ESP平台编译的json文件
  • README.txt为运行本案例的指导文档

首先,我们需要编译平台。进入/home/openailab/cases/play/platform/release目录下

计算机视觉与智能语音处理融合套件初体验(语音部分)
在该目录下,用./ninja.sh编译平台,成功编译后,

我们回到案例目录/home/openailab/cases/play/case/speech/play。进入该目录之后,我们可以用./compile.sh命令编译工程

计算机视觉与智能语音处理融合套件初体验(语音部分)
编译之后,我们在案例目录下会得到一个build目录。
计算机视觉与智能语音处理融合套件初体验(语音部分)
进入build目录内,用./play命令运行案例,运行此命令之后播放便会开始。

3.语音变速实验

语音变速变调案例文件放在/home/openailab/cases/vcs/case/speech/vcs目录下

计算机视觉与智能语音处理融合套件初体验(语音部分)
  • CMakeLists.txt 是控制程序编译的文件,会根据此文件生成Makefile以及编译
  • compile.sh为编译本案例的脚本
  • esp_raw.wav为变速变调处理前的音频文件
  • main.cpp是变速变调案例的C++源码
  • README.txt为运行本案例的指导文档
  • vcs.json为控制ESP平台编译的json文件

首先,我们需要编译平台。进入/home/openailab/cases/vcs/platform/release目录下

计算机视觉与智能语音处理融合套件初体验(语音部分)
在该目录下,用./ninja.sh编译平台

成功编译后,我们回到案例目录/home/openailab/cases/vcs/case/speech/vcs。进入该目录之后,我们可以用./compile.sh命令编译工程

计算机视觉与智能语音处理融合套件初体验(语音部分)
编译之后,我们在案例目录下会得到一个build目录,进入build目录内,用./vcs命令运行案例
计算机视觉与智能语音处理融合套件初体验(语音部分)
运行此命令后,变速变调处理开始,处理结束,build目录内会生成根据esp_raw.wav文件处理后的esp_vcs.wav文件。我们用 play esp_vcs.wav播放此音频文件,即可听到处理后的音频。
计算机视觉与智能语音处理融合套件初体验(语音部分)

; 4.降噪实验

首先是一些基础知识的储备:

噪声估计的越准确得到的结果就越好。估计噪声的方法有如下几种:

  • 基于VAD检测的噪声估计,VAD对Y进行检测,如果检测没有语音,则认为噪声
  • 基于全局幅度最小原理,该估计认为幅度谱最小的情况必然对应没有语音的时候
  • 基于矩阵奇异值分解原理估计噪声的
  • 对似然比函数进行改进,将多个语音/噪声分类特征合并到一个模型中形成一个多特征综合概率密度函数,对输入的每帧频谱进行分析。其可以有效控制风扇/办公室设备等噪声

对接收到的每一帧带噪语音信号,以对该帧的初始噪声估计为前提,定义语音概率函数,测量每一帧带噪信号的分类特征,使用测量出来的分类特征,计算每一帧基于多特征的语音概率,在对计算出的语音概率进行动态因子(信号分类特征和阈值参数)加权,根据计算出的每帧基于特征的语音概率,修改多帧中每一帧的语音概率函数,以及使用修改后每帧语音概率函数,更新每帧中的初始噪声(连续多帧中每一帧的分位数噪声)估计。

这里噪声抑制算法的核心是采用维纳滤波器来抑制估计出来的噪声。维纳滤波(wiener filtering) 一种基于最小均方误差准则、对平稳过程的最优估计器。这种滤波器的输出与期望输出之间的均方误差为最小,因此,它是一个最佳滤波系统。它可用于提取被平稳噪声所污染的语音信号。

降噪工程位于/home/openailab/cases/ns/case/speech/ns目录下

计算机视觉与智能语音处理融合套件初体验(语音部分)
  • CMakeLists.txt是用于生成Makefile,控制编译的文件
  • compile.sh为编译程序的脚本
  • dr_mp3.h是本案例所用到的处理mp3文件的库
  • dr_wav.h是本案例所用到的处理wav文件的库
  • esp_demo.wav为案例音频文件
  • main.c为案例主程序文件
  • noise_suppression.c为降噪功能源码
  • noise_suppression.h为降噪功能头文件
  • ns.json为控制程序编译的json文件
  • timing.h为程序使用到的计时头文件

进入案例目录之后,我们可以用./compile.sh命令编译工程

计算机视觉与智能语音处理融合套件初体验(语音部分)
编译之后,我们在案例目录下会得到一个build目录,进入build目录内,用./ns esp_demo.wav命令运行案例
计算机视觉与智能语音处理融合套件初体验(语音部分)
运行此命令之后降噪便会开始,结束后按任意键退出案例运行。此时build目录下会显示一个esp_demo_out.wav的音频文件,此文件为降噪处理后的效果音频。

5.回声消除实验

同样是先学习一些相关的知识储备:

从回声产生的原因看,可以分为声学回声(Acoustic Echo)和线路回声(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancellation,AEC)和线路回声消除(Line Echo Cancellation, LEC)。声学回音是由于在免提或者会议应用中,扬声器的声音多次反馈到麦克风引起的;线路回音是由于物理电子线路的二四线匹配耦合引起的。

尽管回声消除是一项非常复杂的技术,但仍然可以通过相对简单的语言描述这一处理过程:

  1. 房间A的音频会议系统接收到房间B中的声音
  2. 声音被采样,这一采样被称为回声消除参考
  3. 随后声音被送到房间A的音箱和声学回声消除器中
  4. 房间B的声音和房间A的声音一起被房间A的话筒拾取
  5. 声音被送到声学回声消除器,与原始的采样进行比较,移除房间B的声音

工程位于/home/openailab/cases/aecm/case/speech/aecm目录下

计算机视觉与智能语音处理融合套件初体验(语音部分)
  • aecm.c为案例代码的源文件
  • aecm.h为案例需要的头文件
  • aecm.json为控制本案例编译的json文件
  • dr_wav.h为项目需要的头文件
  • CMakeLists.txt为控制本案例编译的CMakeList
  • compile.sh为编译本案例需要的脚本
  • main.c 为c源代码
  • micin.wav为本案例所需的案例音频
  • speaker.wav为本案例所需的案例音频
  • timing.h为项目需要的头文件

进入案例目录之后,我们可以用./compile.sh命令编译工程

计算机视觉与智能语音处理融合套件初体验(语音部分)
编译之后,我们在案例目录下会得到一个build目录,进入build目录内,用./aecm命令运行案例
计算机视觉与智能语音处理融合套件初体验(语音部分)
运行此命令之后回声消除便会开始,结束后按任意键退出案例运行。此时build目录下会显示一个aecm_out.wav的音频文件,此文件为回程消除处理后的效果音频

; 6.语音活性检测实验

VAD(voice activity detection)广泛应用于语音编码和降噪。这里所说的是语音/非语音检测,一个VAD系统通常包括两个部分:

  • 特征提取和语音
  • 非语音判决

常用的特征提取可以分为以下几类:

  1. 基于能量:基于能量的特征常用硬件实现
  2. 频域
  3. 倒谱:倒谱在在低信噪比下可以获得较好的效果
  4. 谐波和长时信息:当信噪比达到0dB时,基于语音谐波和长时语音特征更具有鲁棒性

活性算法集成在/home/openailab/cases/vad/case/speech/vad工程当中

计算机视觉与智能语音处理融合套件初体验(语音部分)
  • Cmakelists.txt为控制案例编译生成Makefile的文件
  • compile.sh为编译案例需要使用的脚本
  • dr_wav.h为处理wav音频的头文件
  • main.c为主程序文件
  • timing.h为计时功能的头文件
  • vad.c为语音活性检测功能的c文件
  • vad.h为语音活性检测功能的头文件
  • vad.h为语音活性检测功能的头文件
  • vad_test.wav为案例音频

进入案例目录之后,我们可以用./compile.sh命令编译工程

计算机视觉与智能语音处理融合套件初体验(语音部分)
编译之后,我们在案例目录下会得到一个build目录,进入build目录内,用./vad vad_test.wav命令运行案例
计算机视觉与智能语音处理融合套件初体验(语音部分)
运行此命令之后语音活性检测便会开始。完成检测后,屏幕上会输出一系列0和1 的数字串,此处0代表该位置无人声,1代表该位置有人声

Original: https://blog.csdn.net/L_superhero/article/details/124856997
Author: 爱摸鱼的伪程序猿
Title: 计算机视觉与智能语音处理融合套件初体验(语音部分)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/515922/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球