169
为满足企业内网Web智能问答系统中语音识别需求,充分利用网络资源和客户端资源,提高用户体验,论文设计并实现了一种适应于企业内网的语音识别方案,解决了多款浏览器的语音识别兼容问题,并提供了针对不同行业术语的优化方法。该方案已成功应用到电力行业智
能问答系统中,语音识别准确率明显高于其他同类系统。0 引言
与机器进行语音交流,让机器明白人们说什么,这是人们长期以来梦寐以求的事情[1]。随着科学技术的不断发
展,语音识别技术的出现,使人类的这一理想得以实现。语音识别技术是让机器通过识别和理解将语音信号转变为相应的文本或命令的智能技术[2]。语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面[3]。语音识别正逐步成为信息系统中人机交互的关键技术。语音识别技术与语音合成技术的结合,使人们能够甩
掉键盘,通过语音进行人机互动[4]。语音技术的应用已经
成为一个具有竞争性的新兴高技术产业。
1 语音识别
语音识别技术也被称为自动语音识别(Automatic
Speech Recognition,ASR)、电脑语音识别(Computer
收稿日期:2021-09-29
*基金项目:地区调度业务联系及处置辅助机器人研究(J2021094)
作者简介:张大林(1982—),男,湖北十堰人,硕士,副高级工程师,研究方向:电力系统运行。
图1 语音录入
Fig.1  Speech record
企业内网系统语音识别技术的设计与实现*
国网江苏省电力有限公司镇江供电分公司 张大林 任萱 徐艺敏 笪涛 于晓蒙
中图分类号:TP311
文献标识码:A
文章编号:1007-9416(2021)12-0169-04
DOI:10.19695/jki12-1369.2021.12.55
. All Rights Reserved.
第  39  卷                      数字技术与应用    www.szjsyyy
170
Speech Recognition)或语音转文本识别(Speech To Text,STT),其目标是利用计算机自动将人类的语音内容转换为相应的文字。语音识别通常分为两个技术过程,即语音录入和通过识别模型识别语音。企业内网系统语音识别技术基于js-audio-recorder,实现录音和音频格式转换,使用VOSK来实现语音识别。
2 语音录入
利用js-audio-recorder插件实现语音的录入,还支持录音、暂停、恢复播报等功能。目前系统考虑常用音频内容的大小,将音频参数设置为8kHz(采样率)、单声道,16Bit(采样位数)。
常规的音频录入会伴随一些环境杂音,以及音频前后部分都会有“空白”出现,所以系统的音频录入保留了裁剪操作,即截取音频的中间部分作为最终识别的对象。语音录入过程如下:
先获取录音权限然后自动开启录音(如图1所示),监听到语音录入结束3s后自动结束并转为WAV格式音频,
并且自动过滤无效识别内容,环境噪声也会被过滤。自动结束通过判断音量比实现,音量比低于10%则默认当前无语音录入。
3 FileReader技术
利用FileReader以安全方式从远程系统中读取文件内容,它允许Web应用程序异步读取存储文件或原始数据缓冲区,指定要读取的文件或数据。
4 语音识别的设计
使用的SDK是半成品化的VOSK语音识别模型,主要用于识别中文对象,其能够基本满足日常化的语音识别使用需求。
由于应用场景的不同,更多情况下会使用固定的特殊词,比如在电力公司[5]
,更多的是调度命令词、动作命令词
等[6]
。在满足基本使用的前提下,还需要对词典进行优化,
根据同音词、同音字、近音词或近音字等来对词典进行修改,将低识别率的词语或字替换成行业专用的词或字(比如同音、谐音词的替换),优化VOSK语音识别模块,语音识别率能得到有效的提高[7]。  5 语音录入的实现
const audioContext=newAudioContext({sample Rate: 8000});
const fileReader=newFileReader();
// Set up file reader on loaded end load= (e) => {
const arrayBuffer=sult as ArrayBuffer;// Convert array buffer into audio buffer audioContext.decodeAudioData(arrayBuffer,(audioBuffer) => {
const channels=audioBuffer.numberOfChannels;const rate=audioBuffer.sampleRate;// 截取前后空白
const startOffset=voice.current.start*rate<0?0:voice.current.start*rate;
const endOffset= (isAuto.current?d-3:d) *rate;
// 对应的帧数
letf rameCount=endOffset-startOffset;if (voice.current.start<0) {frameCount=0;}
// 创建同样采用率、同样声道数量,长度是符合音量比的audioBuffer
const newAudioContext=new AudioContext();const ate Buffer(channels, endOffset-startOffset,
rate,);
// 创建临时的Array存放复制的buffer数据const anotherArray=newFloat32Array(frame Count);
// 声道的数据的复制和写入const offset=0;
. All Rights Reserved.
2021年第 12 期
171
0, offset);
const blob=bufferToWave(newAudioBuffer, frame Count);
onStop(blob);
clearInterval(timeInterval.current);timeInterval.current=null;newAudioContext.close();})};
6 语音识别的实现
/**
* 对语音文件进行识别*
* @param file 语音文件* @return FinalResultDto */
public FinalResultDto speechRecognition(Multipart
File file)
throws IOException, UnsupportedAudioFile Exception {
try (Model model=new Model("model");AudioInputStream ais=
Recognizer recognizer=new Recognizer(model,8000);
AudioInputStream inputStream=handleSimpleRate
(ais)) {
int nbytes;
byte[] b=new byte[4096];
StringBuilder result=new StringBuilder();while ((nbytes =ad(b)) >=0) {if (recognizer.acceptWaveForm(b, nbytes)) {VoskResultDto voskResultDto=
result.Text());} else {
log.debug("partialResult : {}", PartialResult());
}}
log.debug("result : {} , length : {}", result,result.length());
FinalResultDto finalResultDto=
String Text();
log.debug("finalResult text : {} , length : {}",text,text.length());
String finalResultText=result.length() >text.length() ?String() : text;
String placeAll ("", "");
finalResultDto.setText(finalResultText);
图2 优化语音识别词典
Fig.2  Optimize speech recognition dictionary
张大林 任萱 徐艺敏等:企业内网系统语音识别技术的设计与实现
. All Rights Reserved.
第  39  卷                      数字技术与应用    www.szjsyyy
172
finalResultDto.setContinuousText(continuousText);return finalResultDto;}}
7 语音识别的优化方案
VOSK Model分为三部分:Dictionary、Coustic Model 和Language Mode。通过Kaldi的语言识别技术及其工具,我们可以再次编译VOSK Model。首先准备类似于Kaldi
风格的“新词”词典,以TXT文本格式保存,通过G2P工具
进行音素预测,排除无误后用SRILM进行Perplexity测试,满足需求后与现有的Language Model融合并编译成HCLG.fst文件,最后与现有的模型进行替换即可[8]。
这样就相当于增加了新词的解码,大大提高了语言识别的准确率。例如将原始语音识别词典中的“铡刀”修改成“闸刀”,通过“zhadao”可语音轻松识别出“闸刀”(如图2、图3所示)。
8 结束语及后续研究方向
在下一步的开发中,将会继续优化VOSK Model,包括在消除方言、口音、降噪等方面优化Acoustic Model,90设计网
以及为智能问答系统开发唤醒词功能、将HanLP分词接入语音识别中,实现实时录入新词等。
引用
[1] 何金灿.基于语音识别技术的智能家居现地控制节点设计[J].工业控制计算机,2014,27(3):142-143.
[2] 朱亚迪,吴毅坚,赵文耘.基于代码片段复用的安卓应用组装技术研究[J].计算机应用与软件,2016,33(11):164-168.[3] 朱余启,朱润杭,伞晨峻,等.语音检索在电力调度领域的发展[J].电子技术与软件工程,2021(15):214-216.
[4] 陈芳芳,吴艳,王丹萍.论人工智能技术发展及在电力客服系统的应用[J].电子世界,2021(7):176-177.
[5] 刘宏,郝乾啸,萧嘉荣.人工智能语音交互技术在电力调控领域的应用[J].电子技术与软件工程,2021(4):217-219.[6] 张云翔,李智诚.面向电力行业的热词语音识别技术[J].现代计算机,2020(22):14-17.
[7] 蒋久松,熊富强,毛文奇,等.智能语音识别方法在电力移动作业平台中的应用[J].自动化应用,2017(11):124-127.[8] 李清,许冠中.浅析语音识别技术在电网中的应用[J].计算
机产品与流通,2019(11):148.
图3 语音识别的效果
Fig.3  The effect of speech recognition
. All Rights Reserved.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。