当前位置: 首页 > news >正文

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

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正在播放。

相关文章:

  • Promethues-如何监控容器
  • 测试人生 | 从小团队的业务到独角兽的测开,涨薪超过60%,90后小哥哥凤凰涅槃了
  • 技术门槛高?来看 Intel 机密计算技术在龙蜥社区的实践
  • 532. 数组中的 k-diff 数对
  • 通过mybatis自定义参数类型转换器,进行数据库字段加密脱敏
  • Win10修复IPv6优先访问
  • 盘点市面上七款好用的代码加密混淆工具,你都用过哪款?
  • STC15单片机-按键检测单击或长按(外部中断)
  • 卷积神经网络工作原理图,图卷积神经网络原理
  • 猿创征文 |【C++】C向C++知识的过度(下)
  • 期货行业首批信创试点单位转型实践|信创专题
  • Ambari升级Atlas1.1.0到2.2.0
  • 公众号搜题平台系统
  • 【PTHREAD】线程退出与取消
  • 组件命名报错 “Component name “XXX“ should always be multi-word”的解决方法
  • 【RocksDB】TransactionDB源码分析
  • 2017-08-04 前端日报
  • Babel配置的不完全指南
  • Bytom交易说明(账户管理模式)
  • CentOS从零开始部署Nodejs项目
  • co.js - 让异步代码同步化
  • Invalidate和postInvalidate的区别
  • iOS编译提示和导航提示
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • java8-模拟hadoop
  • PAT A1092
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Redis在Web项目中的应用与实践
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 构造函数(constructor)与原型链(prototype)关系
  • 前端技术周刊 2019-02-11 Serverless
  • 如何进阶一名有竞争力的程序员?
  • 原生Ajax
  • postgresql行列转换函数
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 数据结构
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (06)金属布线——为半导体注入生命的连接
  • (30)数组元素和与数字和的绝对差
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (离散数学)逻辑连接词
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三)elasticsearch 源码之启动流程分析
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (已解决)什么是vue导航守卫
  • (转)一些感悟
  • .bat批处理(六):替换字符串中匹配的子串
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .Net Core和.Net Standard直观理解
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net(C#)中String.Format如何使用
  • .Net面试题4
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @angular/cli项目构建--Dynamic.Form