刘祥臻 王红梅* 徐明泽 戚成功 张鑫旺 李平武

(东北林业大学交通学院,黑龙江 哈尔滨150040)

1 研究背景与现实意义

随着人工智能汽车的研发和车联网概念的逐步形成,人机交互的时代已经到来。目前,国外一些公司对车载人机交互尤其是车载语音控制的研究走在世界的前列,但他们提供的车载语音控制产品仅面向安装在高端汽车市场,难以普及到大众,而且在我国传统的汽车消费体系中,中低端市场才是打开汽车消费市场的主力军。

因此,研发设计一款可应用于传统家用车的基于安卓平台的车载语音控制智能音乐播放器,通过唤醒语音助手后由语音指令实时控制车载终端智能音乐播放器,大大提高了车载娱乐系统的安全性、娱乐性与便捷性,具有十分重要的意义。

2 系统整体与UI 界面设计

2.1 系统整体功能设计

语音交互过程大致可分为三部分:首先是语音唤醒,在语音唤醒前需要提示打开系统麦克风的使用权限,通过说“输入指令”或者点击屏幕上的唤醒按钮来初始化语音服务,并启动语音助手;然后进行语音识别,如果识别正确,则在语音播报相应结果后执行反馈,如果识别错误,则播报“不好意思,我还听不懂以下指令+识别结果,请联系开发人员添加指令”,提示用户进行修正输入;最后将系统的文本信息转换成标准流畅的语言播报,即语音合成(Text to Speech),下文简称TTS,以自然流畅接近人声的语音进行语音播报。

在该系统实现的整个过程中,要保证系统在不同的噪音环境下对语音指令做出准确响应,并且有较高的交互成功率。

2.2 系统UI 界面设计

软件通过View的显示与隐藏起到页面切换的效果,各个页面具有各自的根LinearLayout,由唯一ID 标识. view_list 为列表界面,view_play 为播放器主界面,view_other 为相关的扩展功能界面。

图1 系统UI 界面设计简图

软件开启时读取相应文件夹下的列表文件(csv 文件),并解析出音乐文件,专辑图片文件,歌词文件的位置,读进列表中。

列表的播放/暂停与播放界面的“播放/暂停”按钮功能完全一样,列表的喜欢与播放界面的“喜欢”按钮功能完全一样,列表栏的排序按钮可按照预设的排序规则对列表进行排序,读入按钮可载入新的列表,并将当前列表备份。

播放界面可显示专辑图片、播放进度、歌词以及实时幅度谱(由FFT 得到)。

3 软件开发与实现

该软件通过百度AI 平台的语音转文字(短语音识别)与文字转语音(语音合成)的API,实现程序的语音交互。

语音识别由自定义类iSpeechRecognition 完成,类设置唤醒词监听管理器WP (WaitListener) 与语音指令监听管理器ASR(SoundListener)。通过iSpeechRecognition()进行类初始化后,start()启动语音输入监听,为节省系统资源与网络资源,完成后WP 处于激活状态(等待监听词输入),ASR 则处于休眠状态。当用户点按语音控制键或者使用唤醒词唤醒后ASR 激活,此时可以使用相应语音指令进行控制。当WP 激活,ASR 休眠时,说话时只有WP 的onEvent()事件响应,此时若说出正确的唤醒词(“输入指令”)且类控制符isWakeUp 为false 时则将音乐播放器音量调整为15% (防止音乐播放声音干扰ASR 识别),并进行语音提示,提示完成后激活ASR,点按语音输入键也有类似效果。当ASR激活时isWakeUp 为true,WP 不响应唤醒词,此时说话由ASR的onEvent()响应,短语音识别完成后获得识别结果keyword 调用OnFinishListen(String keyword)对识别结果进行相应的判断与识别,并执行相关操作。ASR 进行语音识别时需要网络支持,当网络出错时会无法识别出结果从而无法进行正确的反应,此时需要手动关闭语音,并进行网络设置才可用。当一段时间无语音输入时系统调用超时代码,语音提示后休眠ASR,设置isWakeUp 为false,将音量调整为100%,此时WP 重新响应唤醒词。点按语音输入键或说出关闭指令也有类似效果。语音播报由自定义类iTextToSpeech 完成,类设置SpeechSynthesizer ssr。

iTextToSpeech()初始化完成后处于待机状态,当需要使用的时候调用ssr.speak(String)即可播报出String 的内容。播报过程中为防止播报声音由ASR 收录产生套娃现象,当isWakeUp 为true 时ssr 设置的监听器 (SpeechSynthesizerListener) 调用onSynthesizeStart(String s)时休眠ASR,调用onSpeechFinish(String s)时重新激活ASR,因为ssr 进行TTS 需要网络支持,所以当网络出错时会调用onError (String s, SpeechError speechError),无法重新激活ASR 从而产生错误,此时需要手动关闭语音,并进行网络设置才可用。

图2 系统实现流程图

4 结论

本系统按照软件工程开发理论,进行了系统整体架构设计和实际实施测试与开发,发现其满足需求分析与要求,该软件充分挖掘了用户的需求并满足用户的使用体验,且具有安全率高、运行稳定、故障率低等优点,但在防干扰和语音降噪方面还有所不足,识别率和执行率还有待于加强。