TTS 文本 vs SSML

给个例子:

MRCP/2.0 246 SPEAK 1
Channel-Identifier: b227c392d70b478e@speechsynth
Content-Type: text/plain
Voice-Name: xx
Content-Length: 11

How are you

其中 Content-Type 是文本

那么 FreeSWITCH 能不能让 Content-Type 变成 ssxml 呢?

官方文档说可以,就是这一句:

mod_unimrcp supports plain text and Speech Synthesis Markup Language (SSML). TTS can be sent using either speak or playback (if prefixed with say:unimrcp:[optional voice]:<TTS text>).

我没试过(目前没有环境),但估计要这样配置:


  <profile name="my-mrcp2" version="2">
    <!--param name="client-ext-ip" value="auto"-->
    <param name="client-ip" value="auto"/>
    <param name="client-port" value="5090"/>
    <param name="server-ip" value="10.5.5.152"/>
    <param name="server-port" value="5060"/>
    <!--param name="force-destination" value="1"/-->
    <param name="sip-transport" value="udp"/>
    <!--param name="ua-name" value="FreeSWITCH"/-->
    <!--param name="sdp-origin" value="FreeSWITCH"/-->
    <!--param name="rtp-ext-ip" value="auto"/-->
    <param name="rtp-ip" value="auto"/>
    <param name="rtp-port-min" value="4000"/>
    <param name="rtp-port-max" value="5000"/>
    <!-- enable/disable rtcp support -->
    <param name="rtcp" value="1"/>
    <!-- rtcp bye policies (rtcp must be enabled first)
             0 - disable rtcp bye
             1 - send rtcp bye at the end of session
             2 - send rtcp bye also at the end of each talkspurt (input)
    -->
    <param name="rtcp-bye" value="2"/>
    <!-- rtcp transmission interval in msec (set 0 to disable) -->
    <param name="rtcp-tx-interval" value="5000"/>
    <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) -->
    <param name="rtcp-rx-resolution" value="1000"/>
    <!--param name="playout-delay" value="50"/-->
    <!--param name="max-playout-delay" value="200"/-->
    <!--param name="ptime" value="20"/-->
    <param name="codecs" value="PCMU PCMA L16/96/8000"/>


    <param name="ssml-mime-type" value="application/ssml+xml"/>


    <!-- Add any default MRCP params for SPEAK requests here -->
    <synthparams>
    </synthparams>

    <!-- Add any default MRCP params for RECOGNIZE requests here -->
    <recogparams>
      <!--param name="start-input-timers" value="false"/-->
    </recogparams>
  </profile>

其实就是多了个 ssml-mime-type 参数

有机会的可以试试下面这段 lua 代码:

session:set_tts_parms("unimrcp", "voice");
session:speak("<?xml >Hello, <emphasis level='strong'>John</emphasis> how are you?</>");
 

其中, Hello, John (重音),  how are you?

支持更多的变化

关于 ssml 的资料可以参考这里:

https://www.w3.org/TR/speech-synthesis/

华裔居多

关于 mrcpv2 asr 的协议细节可参考这里:

https://cloud.tencent.com/developer/article/2397548

文章写的极好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动云电脑手机端3.0全新升级,畅享个人便捷管理,筑牢安全管控防线

在当今数字化飞速发展的时代&#xff0c;企业对于高效、便捷且安全的办公模式需求日益迫切。移动云电脑手机端3.0全新升级&#xff0c;迎来科技领域的又一突破。其基于企业管理平台为企业客户提供管理能力&#xff0c;实现对用户、终端、资源的全方位集中管控&#xff0c;助力提…

探索GitLab:从搭建到高效使用的实用指南

企业里为什么喜欢使用GitLab 一、GitLab简介二、搭建GitLab三、GitLab的权限管理3.1、用户注册3.2、创建用户组3.3、为用户组添加用户3.4、为工程添加访问权限 四、GitLab的code review五、团队知识管理六、总结 一、GitLab简介 GitLab是利用 Ruby on Rails 一个开源的版本管理…

Go开发桌面客户端软件小试:网站Sitemap生成

在前一篇【手把手教你用Go开发客户端软件&#xff08;使用Go HTML&#xff09;】中&#xff0c;我们详细介绍了如何通过Go语言开发一个简单的桌面客户端软件。本次&#xff0c;我们将继续这个系列&#xff0c;使用Go语言结合Sciter的Go绑定库——go-sciter&#xff0c;实战开发…

Linux虚拟机磁盘管理-新分区磁盘挂载

挂载mount 注意&#xff1a;挂载前一定要对磁盘进行文件系统创建&#xff0c;否则无法挂载磁盘 比如mkfs.ext4系统文件 磁盘挂载前和挂载后&#xff1a; linux系统重启后磁盘挂载没有了怎么办(不建议&#xff0c;哪怕输错一个字系统起不来&#xff0c;自己操作的时候出现过起不…

大语言模型-PDF文档解析

PDF解析能够提升大语言模型系统的信息处理能力和应用范围&#xff0c;为用户提供更加便捷、高效、个性化的服务体验。本文介绍三种常用的pdf解析方式&#xff1a;Open Parse、pdfplumber、PyMuPD。 一、Open Parse Open Parse是一个能够直观地识别文档布局并有效地对其进行分…

GitFlow的四个分支

GitFlow中有四个分支&#xff1a; 常规分支&#xff1a;master & develop master主分支储存正式发布的历史&#xff0c;develop开发分支作为功能开发集成分支功能分支&#xff1a;feature 每个feature分支都对应一个要实现的具体功能或者改进点&#xff0c;这样可以保持每…

Qt 系统相关 - 网络与音视频

目录 一、Qt 网络 1. UDP Socket 1.1 核心 API 概览 1.2 回显服务器 1.3 回显客户端 2. TCP Socket 2.1 核心 API 概览 2.2 回显服务器 2.3 回显客户端 3. HTTP Client 3.1 核心 API 3.2 代码示例 二、Qt 音视频 1. Qt 音频 1.1 核心API概览 1.2 示例 2. Qt 视…

cesium 实现批量divpoint气泡,及气泡碰撞测试与自动避让

需求背景解决效果index.vue 需求背景 需要实现一个上百点批量同时存在的 popup 弹框&#xff0c;为了提高用户体验 1.重叠的弹框&#xff0c;需要隐藏下一层级的 popup 2.为了让用户尽可能看到较全的弹框&#xff0c;需要做弹框的自动避让 解决效果 index.vue <!--/** * …

加速网络体验,Squid缓存代理:让浏览如飞,畅享无限网络速度!

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言: squ…

响应式Web设计:纯HTML和CSS的实现技巧

1. 简介 1.1. 概述 响应式Web设计(Responsive Web Design,简称RWD)是一种网络页面设计布局,它能够根据访问设备的屏幕尺寸、分辨率和其他特性动态地调整布局、图片和内容,以提供更好的用户体验。这种设计理念的核心在于“移动优先”,即首先考虑移动用户的体验,然后再扩…

Git使用——常见报错及其解决方法

一、报错关键词&#xff1a;OpenSSL、10054 fatal 1、在pull或push项目时&#xff0c;报错&#xff1a; fatal: unable to access https://github.com/../: OpenSSL SSL_read: Connection was reset, errno 10054 2、解决方法&#xff1a;进行解除/禁用Git SSL验证 项目里右…

【时时三省】C语言例题----华为机试题<字符串反转>

目录 1,题目 描述 输入描述: 输出描述: 示例1 2,代码

订单到期关闭如何实现?

目录 一、被动关闭 二、定时任务 三、JDK自带的DelayQueue 四、Netty的时间轮 五、Kafka的时间轮 六、RocketMQ延迟消息 七、RabbitMQ死信队列 八、RabbitMQ插件 九、Redis过期监听 十、Redis的Zset 十一、Redisson 在电商、支付等系统中&#xff0c;一般都是先创建…

详解华为项目管理,附华为高级项目管理内训材料

&#xff08;一&#xff09;华为在项目管理中通过有效的沟通、灵活的组织结构、坚持不懈的努力、细致的管理和科学的考核体系&#xff0c;实现了持续的创新和发展。通过引进先进的管理模式&#xff0c;强调以客户需求为导向&#xff0c;华为不仅优化了技术管理和项目研发流程&a…

【通用】C++ #pragma(特殊指令的预处理指令)

#pragma是一种用于向编译器发出特殊指令的预处理指令。它的作用是提供编译器特定的功能或控制编译行为。虽然 #pragma 不是标准 C 的一部分&#xff0c;但它被许多编译器实现并提供了不同的扩展。以下是一些常见的 #pragma 指令&#xff1a; 常见的 #pragma 指令 #pragma onc…

多重示例详细说明Eureka原理实践

Eureka原理&#xff08;Eureka Principle&#xff09;是指在长时间的思考和积累之后&#xff0c;通过偶然的瞬间获得灵感或发现解决问题的方法的一种认知现象。这个过程通常包括三个主要阶段&#xff1a;准备阶段、潜伏期以及突然的灵感爆发。下面详细说明Eureka原理的实践步骤…

Pyramid学习笔记

Pyramid学习笔记 Static Assets&#xff1a; static assets 指那些非Python原文件&#xff0c;如&#xff1a;图片、css、js、还有目录&#xff08;没有__init__.py文件的目录&#xff09;以及Mako或Chamelon模板文件。 ####理解asset规范&#xff1a; render_to_response(m…

vue3 组合式API

<!-- 深度监听 deep 点击按钮控制台&#xff0c;才输出count变化了: 1, 老值: 0;否则控制台不输出 --> <script setup>import { ref,watch } from vueconst state ref({count:0})const setCount () > {state.count.value}watch(state, () > {console.log(…

基于PHP的文件包含介绍

引言&#xff1a;在实际开发过程中&#xff0c;经常会遇到部分模块功能需要重复使用的情况&#xff0c;比如数据库的增删改查&#xff0c;文件包含通过将需要重复使用的功能模块代码引入其他文件的内容&#xff0c;实现重用代码、分离配置等。然而&#xff0c;如果文件包含操作…

QT中通过TCP协议多线程的文件传输(客户端)

首先&#xff0c;新建一个项目&#xff0c;我命名为了SendFileClient 首先我们要在pro文件中 代码第一行加入network的后缀 一、窗口搭建 如图所示&#xff0c;在第一个QWidget中让客户端输入IP&#xff0c;端口号 连接服务器 第二个Qwidget 设置一个LineEdit,供客户端选择要…