2.21 haas506 2.0开发教程 - TTS - Text To Speech (320开发板)

最新案例教程点击下方链接跳转,CSDN已停止更新

点击跳转HaaS506官方最新案例







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

closeplaystopAllsetCallbackgetVolumegetSpeedsetSpeedgetState
关闭TTS功能开始TTS播放停止队列播放注册回调函数获取TTS音量大小获取播放速度设置播放速度获取tts状态
tts.close() - 关闭TTS功能

参数:

返回值:

  • 成功返回整型0,失败返回整型-1。
tts.play(priority, breakin, mode, str) - 开始TTS播放

语音播放,支持优先级0 ~ 4,数字越大优先级越高,每个优先级组可同时最多加入10个播放任务;播放策略说明如下:

  1. 如果当前正在播放任务A,并且允许被打断,此时有高优先级播放任务B,那么会打断当前低优先级播放任务A,直接播放高优先级任务B;

  2. 如果当前正在播放任务A,并且不允许被打断,此时有高优先级播放任务B,那么B播放任务将会加入到播放队列中合适的位置,等待A播放完成,再依次从队列中按照优先级从高到低播放其他任务;

  3. 如果当前正在播放任务A,且不允许被打断,此时来了一个同优先级播放任务B,那么B会被加入到该优先级组播放队列队尾,等待A播放完成,再依次从队列中按照优先级从高到低播放其他任务;

  4. 如果当前正在播放任务A,且允许被打断,此时来了一个同优先级播放任务B,那么会打断当前播放任务A,直接播放任务B;

  5. 如果当前正在播放任务A,且任务A的优先级组播放队列中已经有几个播放任务存在,且该优先级组播放队列最后一个任务N是允许被打断的,此时如果来了一个同样优先级的播放任务B,那么任务B会直接覆盖掉任务N;也就是说,某个优先级组,只有最后一个元素是允许被打断的,即breakin为1,其他任务都是不允许被打断的;

  6. 如果当前正在播放任务A,不管任务A是否允许被打断,此时来了一个优先级低于任务A的请求B,那么将B加入到B对应优先级组播放队列。

  • 参数
参数参数类型参数说明
priorityint播放优先级,支持优先级0 ~ 4,数值越大优先级越高
breakinint打断模式,0表示不允许被打断,1表示允许被打断
modeint1-UTF-8 ; 2-GBK
strstring待播放字符串

返回值:

  • 播放成功返回整型0;
  • 播放失败返回整型-1;
  • 无法立即播放,加入播放队列,返回整型1;
  • 无法立即播放,且该请求的优先级组队列任务已达上限,无法加入播放队列,返回整型-2。
tts.stopAll() - 停止队列播放

停止整个队列的播放,即当前如果正在播放TTS或者音频,并且队列中还有其他待播放内容,调用该接口后,不仅会停止当前播放的内容,还会清除这个队列的内容,不再播放任何内容。如果当前正在播放,且播放队列为空,那么调用该接口效果等同与stop()接口。

参数:

返回值:

  • 成功返回整型0,失败返回整型-1。
tts.setCallback(usrFun) - 注册回调函数

注册用户的回调函数,用于通知用户TTS播放状态。注意,该回调函数中不要进行耗时以及阻塞性的操作,建议只进行简单、耗时短的操作。

参数:

参数参数类型参数说明
usrFunfunction用户回调函数,函数形式见示例

返回值:

  • 注册成功返回整型0,失败返回整型-1。
tts.getVolume() - 获取TTS音量大小

获取当前播放音量大小,音量值为0 ~ 9,0表示静音,默认值4。

参数:

返回值:

  • 成功返回整型音量大小值,失败返回整型-1。

设置播放音量大小。

参数

参数参数类型参数说明
volint音量值,音量值为0 ~ 9,0表示静音

返回值|

  • 成功返回0,失败返回整型-1。
tts.getSpeed() - 获取播放速度

获取当前播放速度,速度值为0 ~ 9,值越大,速度越快,默认值4。

参数:

返回值:

  • 成功返回当前播放速度,失败返回整型-1。
tts.setSpeed(speed) - 设置播放速度

参数

参数参数类型参数说明
speedint速度值,速度值为0 ~ 9,值越大,速度越快

返回值:

  • 成功返回整型0,失败返回整型-1。
tts.getState() - 获取tts状态。

参数:

返回值:

  • 0 – 整型值,表示当前无tts播放;

  • 1 – 整型值,表示当前有tts正在播放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值