语音TTS 识别全链路过程
一次完整的语音交互,包含:唤醒→ASR→NLP→TTS→Skill的流程
本地录音 =》 ASR识别 =》请求后台语义 =》语义落域分发返回 =》 本地仲裁处理落域分发 =》 TTS播报
下面是语音链路的一些基本思路
录音 :Android基本录音为48K的采样率 语音这边需要做降采样处理 降采样为16K。通过Android原生录音将音频给到引擎
唤醒:一般唤醒都是做本地唤醒,所有wakeup唤醒引擎。也可以通过唤醒引擎做一些免唤醒功能
行为下发,唤醒,打开导航
标定:音频根据我们以及厂商对接的标准(两方联调)定制,降噪,音频
,
前置条件:声学前端处理,先开录音机,录音机根据标准的参数,采样率,降噪率。
开始录音,在开始之前需要 初始化,注册一个open,识别加唤醒,用识别引擎注册,例如欢迎词“你好,叮当”,语音识别,识别分为两种:
3.1 离线识别,走本地识别引擎
- 优点:识别快
- 缺点:需要精准识别,并不能做太多泛化处理。对音频要求比较高
- 识别引擎存在本地,识别有限,模型放在本地,简单的识别,识别处了模型,跟云端一样的模型,放在本地,但是不能放太多,内存太大,影响性能影响识别,识别的模型加载的内存有限
3.2 在线识别,走云端识别引擎
- 把这个我们录音的pcm文件,音频流(信号处理)把处理完了上传到云端做识别,给云端,云端去处理,给一个结果下发到语音,语音再次中转
通过aidl调起导航(第三方应用)。
导航注册的一个service
,语音去维护这个skill
技能,匹配上了,打开导航,刚好有一个open
,在线识别返回的时候,tts
播报,云端把目的地 - 优点 :可以模糊匹配,多泛化
- 缺点 :网路查的情况下识别很慢
- 云端与离线云端技能分发
TTS播报:由云端或本地接收文本进行语音音频合成。进行播报
语音的tts来播放比较准确,地图也有tts
叮当语音属于双通道机制: 主驾副驾,声源定位,doa
,主驾副驾,后排左右,后排中间,收音的麦,麦在头顶,方向是一个扇形结构,区域就是你了,方向源来算法叮当语音