2.21 haas506 2.0开发教程 - TTS - Text To Speech (320开发板)
haas506 2.0开发教程 - TTS - Text To Speech
- TTS
- 案例说明
- 准备
- 代码
- 调试
- class - TTS
- tts.close() - 关闭TTS功能
- tts.play(priority, breakin, mode, str) - 开始TTS播放
- tts.stopAll() - 停止队列播放
- tts.setCallback(usrFun) - 注册回调函数
- tts.getVolume() - 获取TTS音量大小
- tts.getSpeed() - 获取播放速度
- tts.setSpeed(speed) - 设置播放速度
- tts.getState() - 获取tts状态。
TTS
TTS是Text To Speech的缩写,即“从文本到语音”。 TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。对文本文件进行实时转换,转换时间之短可以秒计算。
案例说明
1,本案例主要介绍320的TTS接口,使用案例说明TTS接口的用法.
准备
器件 | 数量 |
---|---|
haas320开发板 | 1 |
喇叭 | 1 |
代码
mian.py
# -*- coding: UTF-8 -*-
import TTS as tts
import utime as time
def tts_play_cb(v):
if v==7:
print('play finish...')
elif v==0:
print('play start...')
def tts_test():
global tts_play_cb
print('---------- tts test ----------')
playstr = 'tts test'
playstr1 = '测试'
playstr2 = '优先级测试'
playstr3 = 'pppp'
playstr4 = 'sss'
tts.setCallback(tts_play_cb)
if(1 == tts.getState()):
print('tts is busy')
tts.close()
#音量测试
ret = tts.getVolume()
print('get volume1 : ', ret)
ret = tts.setVolume(1)
print('set volume ret: ', ret)
ret = tts.getVolume()
print('get volume2 : ', ret)
#播放速度测试
ret = tts.getSpeed()
print('get speed1 : ', ret)
ret = tts.setSpeed(6)
print('set speed ret: ', ret)
ret = tts.getSpeed()
print('get speed2 : ', ret)
#play播放测试
#测试停止播放
ret = tts.play(2,0,2,playstr)
if(0 == ret):
print('tts play success')
elif(-1 == ret):
print('tts play failed')
ret = tts.play(2,0,1,playstr1)
if(0 == ret):
print('tts play success')
elif(-1 == ret):
print('tts play failed')
ret = tts.stopAll()
print('stopAll ret : ', ret)
#优先级测试,测试结果播放playstr2 → playstr4 → playstr3
ret = tts.play(1,0,1,playstr2)
if(0 == ret):
print('tts play success')
elif(-1 == ret):
print('tts play failed')
ret = tts.play(2,0,1,playstr3)
if(0 == ret):
print('tts play success')
elif(-1 == ret):
print('tts play failed')
ret =tts.play(4,0,1,playstr4)
if(0 == ret):
print('tts play success')
elif(-1 == ret):
print('tts play failed')
time.sleep_ms(1000)
print('------------------------------------')
if __name__ == '__main__':
tts_test()
调试
串口log,测试结果声音播放顺序playstr2 → playstr4 → playstr3
class - TTS
close | play | stopAll | setCallback | getVolume | getSpeed | setSpeed | getState |
---|---|---|---|---|---|---|---|
关闭TTS功能 | 开始TTS播放 | 停止队列播放 | 注册回调函数 | 获取TTS音量大小 | 获取播放速度 | 设置播放速度 | 获取tts状态 |
tts.close() - 关闭TTS功能
参数:
- 无
返回值:
- 成功返回整型0,失败返回整型-1。
tts.play(priority, breakin, mode, str) - 开始TTS播放
语音播放,支持优先级0 ~ 4,数字越大优先级越高,每个优先级组可同时最多加入10个播放任务;播放策略说明如下:
-
如果当前正在播放任务A,并且允许被打断,此时有高优先级播放任务B,那么会打断当前低优先级播放任务A,直接播放高优先级任务B;
-
如果当前正在播放任务A,并且不允许被打断,此时有高优先级播放任务B,那么B播放任务将会加入到播放队列中合适的位置,等待A播放完成,再依次从队列中按照优先级从高到低播放其他任务;
-
如果当前正在播放任务A,且不允许被打断,此时来了一个同优先级播放任务B,那么B会被加入到该优先级组播放队列队尾,等待A播放完成,再依次从队列中按照优先级从高到低播放其他任务;
-
如果当前正在播放任务A,且允许被打断,此时来了一个同优先级播放任务B,那么会打断当前播放任务A,直接播放任务B;
-
如果当前正在播放任务A,且任务A的优先级组播放队列中已经有几个播放任务存在,且该优先级组播放队列最后一个任务N是允许被打断的,此时如果来了一个同样优先级的播放任务B,那么任务B会直接覆盖掉任务N;也就是说,某个优先级组,只有最后一个元素是允许被打断的,即breakin为1,其他任务都是不允许被打断的;
-
如果当前正在播放任务A,不管任务A是否允许被打断,此时来了一个优先级低于任务A的请求B,那么将B加入到B对应优先级组播放队列。
- 参数
参数 | 参数类型 | 参数说明 |
---|---|---|
priority | int | 播放优先级,支持优先级0 ~ 4,数值越大优先级越高 |
breakin | int | 打断模式,0表示不允许被打断,1表示允许被打断 |
mode | int | 1-UTF-8 ; 2-GBK |
str | string | 待播放字符串 |
返回值:
- 播放成功返回整型0;
- 播放失败返回整型-1;
- 无法立即播放,加入播放队列,返回整型1;
- 无法立即播放,且该请求的优先级组队列任务已达上限,无法加入播放队列,返回整型-2。
tts.stopAll() - 停止队列播放
停止整个队列的播放,即当前如果正在播放TTS或者音频,并且队列中还有其他待播放内容,调用该接口后,不仅会停止当前播放的内容,还会清除这个队列的内容,不再播放任何内容。如果当前正在播放,且播放队列为空,那么调用该接口效果等同与stop()接口。
参数:
- 无
返回值:
- 成功返回整型0,失败返回整型-1。
tts.setCallback(usrFun) - 注册回调函数
注册用户的回调函数,用于通知用户TTS播放状态。注意,该回调函数中不要进行耗时以及阻塞性的操作,建议只进行简单、耗时短的操作。
参数:
参数 | 参数类型 | 参数说明 |
---|---|---|
usrFun | function | 用户回调函数,函数形式见示例 |
返回值:
- 注册成功返回整型0,失败返回整型-1。
tts.getVolume() - 获取TTS音量大小
获取当前播放音量大小,音量值为0 ~ 9,0表示静音,默认值4。
参数:
- 无
返回值:
- 成功返回整型音量大小值,失败返回整型-1。
设置播放音量大小。
参数
参数 | 参数类型 | 参数说明 |
---|---|---|
vol | int | 音量值,音量值为0 ~ 9,0表示静音 |
返回值|
- 成功返回0,失败返回整型-1。
tts.getSpeed() - 获取播放速度
获取当前播放速度,速度值为0 ~ 9,值越大,速度越快,默认值4。
参数:
- 无
返回值:
- 成功返回当前播放速度,失败返回整型-1。
tts.setSpeed(speed) - 设置播放速度
参数
参数 | 参数类型 | 参数说明 |
---|---|---|
speed | int | 速度值,速度值为0 ~ 9,值越大,速度越快 |
返回值:
- 成功返回整型0,失败返回整型-1。
tts.getState() - 获取tts状态。
参数:
- 无
返回值:
-
0 – 整型值,表示当前无tts播放;
-
1 – 整型值,表示当前有tts正在播放。