基于
SpeechBrain
识别
语音
问答
中的
应用
探索
李丹
图源网络1 概述语 音 识 别 技 术,也 称 自 动语音识别 Automatic Speech Recognition(ASR),是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言,从而把语音信号转变为相应的文本或命令,是实现人机交互的重要桥梁。语音识别包括两个步骤:训练和识别。训练是指对收集到的海量语音数据集通过信号处理和知识挖掘获取“声学模型”和“语言模型”过程。识别则是通过进行端点检测、降噪、特征提取,利用训练好的“声学模型”和“语言模型”对用户说话的特征向量进行统计模式识别,也称为解码过程,从而得到语音中包含的文字信息。基于 SpeechBrain 的语音识别在语音问答中的应用探索李丹1,2(1 桂林师范高等专科学校,广西 桂林 541199;2 桂林信息科技学院,广西 桂林 541004)作者简介:李丹,硕士,高级实验师,研究方向为计算机应用技术。基金项目:2019 年度广西高校中青年教师科研基础能力提升项目(2019KY1032)。语音识别技术方案大多都是以语音为基础的,包括发音模型,声学模型和语言模型等。语音识别模型历经三个阶段,从最初的基于 GMM-HMM 的模型,发展到基于 DNN-HMM 深度神经网络模型,再到现在的端到端语音识别模型。常见的端对端模型有 CTC、RNN-T、atttention-based encoder-decoder、LAS 等模型。语音识别技术的发展,是人工智能改变大众生活的重要一环,其识别率越来越高,应用领域也越来越广泛。文章基于SpeechBrain 语音识别在语音问答中的应用进行探索,取得一定效果。2 SpeechBrain 语 音识别简介开 发 者 常 用 的 语 音 工 具 主 要 有 Kaldi、ESPNet、CMU Sphinx、HTK 等,它们各有各的不足之处。比如 Kaldi 依赖大量的脚本语言,其核心算法是用 C+编写的,当需要改变各种神经网络结构时,开发者往往调试起来非常困难和复杂。秉承着让语音开发够简单、够灵活、对用户友好的宗旨,SpeechBrain 诞生了。SpeechBrain 是一个基于 PyTorch的开源和一体化语音工具包。在语音识别技术上,支持端到端的语音识别的方法,支持具有微调功能的 wav2vec 2.0 预 训 练 模 型。它 具 有 易 于 定 制的 神 经 网 络 模 型,包 括 RNNLM 和TransformerLM 模 型,具 有 混 合 连接时序分类 CTC 和注意力机制的端到端自动语音识别 ASR。除了提供从头开 始 训 练 模 型 外,SpeechBrain 还 在语音识别把语音信号转变为相应的文本或命令,是实现人机交互的重要桥梁,文章探索性使用了基于 SpeechBrain 的语音识别,结合语音唤醒、语音录制和文字转语音技术,实现了一个简易的语音问答系统,并取得一定效果。34科技视界Science&Technology Vision APPLICATION OF NEW TECHNOLOGY 新技术应用HuggingFace 上提供了预先训练的模型,其中包含有中文预训练模型,数据集为 AISHELL(MANDARIN)的即为中文普通话语音数据库。3 语音问答中的应用用 户 的 语 音 输 入,经 过 语 音 识 别和搜索过程,获得对应的语音输出,是人机交互的一个重要应用。本文利用SpeechBrain 语音识别模型进行语音识别,开发一个简易的语音问答系统。首先需要进行语音唤醒,然后通过麦克风录制语音问题进行语音识别,将语音问题转换成文字后,到数据集中进行答案搜索,找到后将对应问题的答案通过文字转语音技术完成语音回答,实现一个完整的人机对话过程。3.1 语音唤醒语音交互前把设备从休眠状态叫醒到工作状态就叫唤醒,语音唤醒能力主要依赖于语音唤醒模型,唤醒模型主要负责在听到唤醒词后马上切换为工作状态。所以第一步需要定义唤醒词,本文采用 pocketsphinx 库的 LiveSpeech 来实现。LiveSpeech 是一个迭代器类,可以从文件中连续识别或搜索关键字。定义的唤醒词为英文“LULU”,这里为提高唤醒的灵敏度,多加了几个发音相近的词,一起写进一个 txt 文件,然后利用 Sphinx 在线生成语言模型和词典的工具 Sphinx 知识 库 工 具 lmtool,对 唤 醒 词 进 行编译,创建解码器所必须的语言模型和词典模型。将生成的压缩文件下载下来放入工程文件夹并解压,其中文件类型为.lm 文件为语言模型,文件类型为.dic 文件为词典模型。然 后 从 pocketsphinx 库 导 入LiveSpeech,get_model_path。在 LiveSpeech()方 法 中,传 入 自己的模型和字典信息,其中参数 lm为语言模型,设置为前面下载解压的.lm 文件,参数 dic 为词典模型,设置为前面解压的.dic 文件,返回结果后循环比较判断是否在唤醒词列表中。3.2 语音录制语音唤醒成功后,就可以开始人机对话了。对话的第一步,需要获取用户的语音输入。这里使用 Python的 speech_recognition 库 来 进 行 语音录制,使用这个的好处是,它会在用户说话结束时,自动停止语音获取。首 先 导 入 speech_recognition,然 后 实 例 化 Recognize(),通 过Microphone()打开麦克风,设置好采样率,listen 函数进行录音,get_wav_data()函数得到采集的音频字节流数据,通过 write 函数以 wav 格式写进文件中保存。3.3 语音识别在 获 得 用 户 输 入 的 语 音 数 据 后,本 文 采 用 SpeechBrain 提 供 的 asr-transformer-aishell 中文预训练模型,进行了语音转文字。首先需要在官网下载该模型,下载后可以根据官网提供教程进行训练使用。得到模型后,将模型文件放进工程目录下,通过导入 speechbrain.pretrained 的 EncoderDecoderASR 模块,调用from_hparams()函数加载模型信息。该功能还需导入 torch 和 torchaudio 库。通过 torchaudio 的 load 函数加载用户录入的语音文件,使用 torch.tensor 函数生成张量,模型的 transcribe_batch()函数实现了语音转文字,这里需要传入前面加载过的语音信息和张量。一 开 始,本 人 采 用 了 Python 自带 的 一 个 用 于 语 音 识 别 的 库 speech_recognition,其 recognize_sphinx()函数可实现简单的语音识别,但是发现识别正确率极其低。表 1 为两者识别情况的比较结果。35科技视界Science&Technology Vision APPLICATION OF NEW TECHNOLOGY 新技术应用表 1 不同语音识别方法比较 原语音内容 识别结果对比牙齿疼怎么办99-92 连续 8 个整数请打开百度数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程speech_recognition 库那 是 他们 怎么 办 不这 是 着 九十八 五 正 是 七一 救市 了 这 事务 九十四 了 九十三 就 是 二 部开办 都会出去 慢性 元 市值 突遭 高手 令 中国 算法 搜索 隐藏 于 其中 信息 的 过称 被困SpeechBrain 语音识别模型牙齿糖怎么办九十九 九十八九十七 九十六九十五 九十四九十三 九十二请打开百度数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程从表 1 中可以看出,相比 speech_recognition 库极差的识别率,采用 SpeechBrain 语音识别模型的识别正确率很高,经过多次测试,SpeechBrain 语音识别模型均能得到很好地识别效果,满足需求。3.4 答案搜索经过语音识别获得用户语音对应的文字之后,接下来就该找寻匹配的答案进行输出了。这里本文从网上采集了人身体各部位出现疼痛时的一些医生答疑信息,将身体部位和回答信息两列一起存在 Excel 中。当用户提问比如“我牙齿疼怎么办?”时,通过语音识别后,将用户的问题和数据集里边的问题列的所有身体部位进行模糊查询比较,如果符合,则将对应的医生答疑信息通过文字转语音“说”出来。具体实现时,首先导入pandas 库,通过 read_excel 方法读入数据集,然后调用上一步的语音识别模块,得到用户提问问题的文字。遍历数据集中的问题列,采取模糊匹配方法,只要用户的提问中含有一个以上的字出现在了数据集的问题中,就表示问题匹配,则可获得该问题对应的回答。如果没有满足条件的,则输出提示信息,进入下一次问答。3.5 文字转语音要完成一个完整对话,当然少不了终端“说”的功能了。当经过答案搜索获得了匹配的问题回复后,这里使用 pyttsx3来实现文字转语音的功能。pyttsx3 是一个文本朗读库,通过调用此库,很容易就可以让程序“开口说话”。首先导入该库,通过 init()函数完成初始化,调用 say 函数实现朗读,图源网络36科技视界Science&Technology Vision APPLICATION OF NEW TECHNOLOGY 新技术应用应用于语音问答中,从而取得一定效果,但是整体在延迟和识别正确率上还需要进一步改进提高,未来需要结合聊天机器人技术如图灵机器等,以获得更高效的智能问答效果。参考文献1 马晗,唐柔冰,张义,等.语音识别研究综述 J.计算机系统应用,2022,31(1):1-10.2 黄清,方木云.一种基于 HMM 算法改进的语音识别系统 J.重庆工商大学学报(自然科学版),2022,39(5):56-61.3 许鸿奎,卢江坤,张子枫,等.结合 Conformer 与 N-gram的中文语音识别J.计算机系统应用,2022,31(7):194-202.4 李荪,曹峰.智能语音技术端到端框架模型分析和趋势研究J.计算机科学,2022,49(S1):331-336.5 陈瑞,郑恭明.DNN 神经网络在语音助手的应用分析 J.电子世界,2021,(19):27-28.关键词:语音识别;SpeechBrain;语音问答runAndWait()方法用于等待语音播报完毕。该库支持设置语音参数来获得不同的播放效果,如音量、发音语速等信息,调用getProperty 和 setProperty 函数进行相应设置即可。4 测试结果本文在数据集包含提问问题答案的前提下,进行了 30 次的随机问题提问,其中能够得到有效的语音回答的为 24 次,6 次识别错误未能得到有效回答,平均约有 3 s 左右的延迟问题。从测试结果来看,基于 SpeechBrain 语音识别技术在语音问答中的应用探索上取得一定的效果,但还需进一步改进提高。5 结语本文简单概述了语音识别流程和发展过程以及 SpeechBrain特点,探索性采用了基于 SpeechBrain 的语音识别模型并将其图源网络图源网络37科技视界Science&Technology Vision APPLICATION OF NEW TECHNOLOGY 新技术应用