前言
VTX316是北京宇音天下科技有限公司最新推出的一款更具性价比的中文TTS语音合成芯片,采用QFN32(4*4mm)封装,体积更加精巧,文本合成一次高达500字节数据(250个汉字),支持8种发音风格,支持低功耗模式(2uA)等等……
但大家在开发过程中,往往还会忽略一些比较实用的小技巧,认识这些将给您的开发带来极大的便利,下面给大家细致讲解。
一、芯片回传数据
回传数据是TTS语音合成芯片主动或被动告诉上位机自己当前所处的状态,方便开发者根据这些数据来判断要执行的任务。
但很多开发者对于数据回传理解不是很透彻,造成语音合成芯片不能按照设计执行下一步任务。
1、初始化回传:0x4A
芯片在上电或是复位后,会主动回传带有”0x4A“的数据,只有接收到该数据,表示语音芯片已经初始化完成,可以开始执行任务了。
注意:当MCU没有收到TTS芯片回传的“0x4A”数据时,芯片是不会执行任何指令的!
2、命令接收成功回传:0x41
当上位机给TTS语音芯片发送指令后,会主动回传一个单字节数据“0x41”,代表命令接收成功,开始执行。
3、命令接收失败回传:0x45
如TTS芯片接收到错误命令帧时,会主动回传一个单字节数据“0x45”,这时就需要开发者们查看命令帧是否准确了,或是因其它干扰因素影响,需要重新发送指令。
4、芯片状态回传:0x4E、0x4F
VTX316 TTS语音合成芯片有2种工作状态:空闲状态、忙时状态,可通过软件“芯片忙闲查询命令”,进行查询。
命令帧:0xFD 0x00 0x01 0x21
忙时状态:指芯片正在合成播音中,任务还未结束,此时查询状态会回传一个单字节数据“0x4E”。
注意:芯片在忙时状态下,用户很容易犯这样一个错误
例如:当前TTS芯片正在合成播音,此时MCU向TTS芯片发送一条指令,语音芯片会立即中断当前的合成任务,从而执行刚刚发来的新任务。为避免此类事件的发生,可以在发送指令前先查询一下芯片的状态,如回传“0x4F”(代表芯片处于空闲状态)再发送下一条指令。
空闲状态:也称待机状态,此时查询状态会回传一个单字节的数据“0x4F”。
注意:当合成播音结束时,也会主动回传一个单字节数据“0x4F”,表示合成完毕,进入待机状态了。
另外也可通过硬件查询TTS芯片第6引脚“R/B”的电平来判断语音合成芯片的忙闲状态。
忙时状态:“R/B”为高电平。
空闲状态:“R/B”为低电平。
二、低功耗模式
对于要求极低功耗的应用场景,开发者可选择将TTS语音芯片进入低功耗模式。
1、物理断电
通常情况下开发者会
采用上位机通过电源管理芯片控制语音合成芯片的供电脚“VCC”的通断电(即工作完断电,工作前上电)方案。
注意:采用此方案时需注意,芯片VCC管脚断电后,要防止电流倒灌现象;另外,还要注意芯片上电后,待接收到TTS芯片回传的“0x4A”后,再开始执行任务。
2、DeepSleep模式
针对于上位机IO紧张的情况下,开发者也可以采用让芯片进入DeepSleep模式(睡眠模式),该模式下芯片功耗为2uA。
命令帧:FD 00 01 22
注意:TTS芯片进入睡眠模式后,需先将芯片唤醒才能正常工作
唤醒方法有2种:
软唤醒:唤醒命令帧0xFD 0x00 0x01 0xFF,其它指令也可以将语音合成芯片唤醒
硬唤醒:芯片15引脚(WAKEUP)下降沿信号唤醒
注意:芯片在睡眠时,可能因串口抖动,造成误唤醒;同样还要注意芯片上电后,待接收到TTS芯片回传的“0x4A”后,再开始执行任务。
三、配置参数实时存储
VTX316语音合成芯片的合成参数配置是实时存储在芯片内部的(掉电不会丢失),开发者们无需每次开机都重新配置其参数,只需配置一次即可。
四、特殊参数配置
特殊参数配置是应对不同功放芯片时序差异,解决上电和断电时产生的POP杂音和句首丢音的问题。
本语音合成芯片支持修改3个特殊参数:
1、去上电POP音延时参数
遇到上电有POP杂音时,可增加此延时参数去除。
默认值为0,调整范围:0~200,即0~200ms。
注意:数值越小,芯片启动越快。
2、去句首丢音延时参数
遇到句首丢音时,可增加此延时参数解决。
默认值为0,调整范围:0~250,即0~250ms。
注意:数值越小,出音响应越快。
3、去句尾POP音延时参数
遇到句尾有POP杂音时,可通过增加此延时参数去除。
默认值为50,调整范围:0~300,即0~300ms。
注意:值越小,合成播音完毕返回“0x4F”(空闲状态)越快。
五、提示音连播
VTX316TTS语音芯片预置多首提示音效(有些开发者称为铃声),
提示音效一般用于在语音播报前,起到前导提示的作用。
而大多的提示音效时长较短,
我们可以通过多次播放同一提示音来实现一个较长提示音的效果,例如:“sound901”提示音,音效为蜂鸣器“滴”,时长为50ms。
如果我们想实现先播报3次“滴”,每次间隔100ms,再播报其它内容,可以这样做:
发送文本内容:sound901[p100]sound901[p100]sound901,欢迎使用宇音天下语音合成芯片
注意:[p100]=100ms
希望这些小技巧能帮助广大开发者们更好地理解和应用VTX316 TTS语音合成芯片。如果有任何疑问或需要进一步帮助,请随时告诉我们。