前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用XSwitch内置的离线ASR及TTS

如何使用XSwitch内置的离线ASR及TTS

作者头像
Seven Du
发布2022-12-12 15:09:37
2.9K0
发布2022-12-12 15:09:37
举报

如何在XSwitch中使用ASR及TTS中提到,XSwitch内置了很多ASR/TTS模块,但大多数的ASR/TTS服务都是云厂商提供的。使用这些服务不仅需要有相应的账号,而且大部分也需要付费才能使用。在开发测试时,有时用起来就不能随心所欲。

为方便大家开发与测试,XSwitch也提供了离线的ASR与TTS。

tts_commandline:

该模块是XSwitch内置的模块,XSwitch提供了配套的espeak-ng,可以支持中文。

在命令行上加载模块:

代码语言:javascript
复制
load mod_tts_commandline

当然,也可以在XUI界面上加载,殊途同归。

到【呼叫】⇨【路由】中,新建一条路由:

  • 名称:tts,也可以随意
  • 被叫字冠:tts,也可以是其它号码,如1234
  • 呼叫源:default
  • 目的地类型:高级功能/系统

新出现的“文本”框中填入以下内容:

代码语言:javascript
复制
answerspeak tts_commandline|zh|你好,欢迎致电烟台小樱桃网络科技有限公司

其中,zh表示是中文。

然后就可以呼叫tts进行测试了。

注意,espeak-ng放出来的声音不好听,但对于开发测试来说,有总比没有好。我们后续会给出一个更“好听”的使用方法,敬请期待。

mod_ai:

XSwitch在mod_ai中提供了一个asr服务,可离线使用,效果还不错。使用开源的Vosk引擎。Vosk引擎比较小,但是模型文件比较大,因而需要单独下载。

首先,进入宿主机上的storage目录,创建vosk目录,如下:

代码语言:javascript
复制
cd storagemkdir vosk

到以下地址下载模型文件,解压后放到刚刚创建的vosk目录。

https://alphacephei.com/vosk/models

目前测试了以下几个模型:

  • vosk-model-cn-0.1 8k
  • vosk-model-small-cn-0.3 16k
  • vosk-model-small-en-us-0.15 16k
  • vosk-model-en-us-daanzu-20200328 16k

然后,到XUI上【AI】⇨【AI】⇨【default】中,配置Asr-Models,启用相应的模型配置。配置完成后【重载】模块。

简单使用:

到【呼叫】⇨【路由】中,新建一条路由:

  • 名称:asr,也可以随意
  • 被叫字冠:asr,也可以是其它号码,如1234
  • 呼叫源:default
  • 目的地类型:高级功能/系统

新出现的“文本”框中填入以下内容:

代码语言:javascript
复制
answerset tts_engine=aliset tts_voice=defaultplay_and_detect_speech say:'你好,请说' detect:asr:ai defaultinfolog err $${detect_speech_result}

打开【高级】⇨【扩展功能】⇨【终端】就可以看到日志。上面使用了err级别的日志是为了红色能显示得更醒目。

上述命令中,也可以通过asr:ai:vosk-model-cn-0.1指定使用的模型。

使用方法:

其中,asr engine参数语法为:

代码语言:javascript
复制
engine[:model]

其中:model可以省略,如果省略,则使用能找到的第一个模型,如:

代码语言:javascript
复制
ai:vosk-model-cn-0.1     # 使用AI模块,8k语音模型asr:ai:vosk-model-cn-0.1 # 使用AI模块,FreeSWITCH兼容模式,8k语音模型

XCC中,不需要asr:前缀,用起来更高效。

代码语言:javascript
复制
asr_engine = 'ai:vosk-model-cn-0.1'params = {	command = "xcc_detect_speech",	data = {		speech = {			engine = asr_engine,			grammar = "default",			no_input_timeout = 5000,			speech_timeout = 8000,			partial_events = true,			params = {				language = 'zh-CN',				-- "interim-results" = "true"			}		}	}}

在Lua中使用:

FreeSWITCH兼容用法(Lua):

代码语言:javascript
复制
session:execute("detect_speech", "asr:ai:vosk-model-cn-0.1 default default default")

其它:

mod_ai模块实现了:

  • AI API:类似mod_httapi,但是用JSON代替XML
  • ai ASR Interface:是一个XCC的ASR,仅用于xcc_detect_speech,不适用于在核心中调用。
  • asr ASR Interface:是一个XCC ASR的包装器,通过使用asr:your-xcc-asr-interface-name可以将XCC ASR包装成系统原生接口使用。

XCC ASR主要是取消了核心状态机,通过以下参数发送事件,事件驱动,而无须核心中的忙等待。

  • asr-result-fire-json-event:发送JSON事件,可以使用JSON Event Channel订阅ai_asr主题获取事件。
  • asr-result-fire-switch-event:发送原生FreeSWITCH Detected Speech事件,可以在ESL中获取。
  • asr-result-fire-session-event:发送Sesion事件,可以在Lua onInputCallback中回调。

XCC ASR由于取消了核心状态机,实现比较简单。

asr ASR Interface实现了一个包装器,通过JSON Event Channel与XCC ASR Interface通信。主题格式为:ai_asr.$channel_uuid,因此,channel-uuid参数是必须的。channel-uuid不一定是真正的Channel UUID,只要是不重复的字符串就行,如果字符串发生重复,结果是未知的。

小结:

本文提供的离线ASR/TTS仅为方便开发测试,效果不如云厂商提供的好,不建议在生产上使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mod_ai:
    • 简单使用:
      • 使用方法:
        • 在Lua中使用:
        • 其它:
        • 小结:
        相关产品与服务
        专用宿主机
        专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档