Freeswitch智能语音开发之TTS

TTS是Text to Speech的缩写,即文本转语音,作为AI语音交互,TTS是必不可少的一个环节。

一、freeswitch如何使用tts

freeswitch播放tts的app有speak,phrase中的宏speak-text,phrase可以嵌套在playback中。

speak  <engine>|<voice>|<text>

engine:引擎名称

voice:发言人

text:文本内容

如果不指定engine和voice,可以通过通道变量tts_engine和tts_voice来指定引擎和发言人。

如果需要设置语速、语调、音量可以在text前设置

 比如:{speed=50,volume=100,pitch=30}你好,中国

二、如何实现一个自定义的tts模块

可以通过fs的tts接口来实现

speech_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_SPEECH_INTERFACE);
	speech_interface->interface_name = "fastcall_tts";
	speech_interface->speech_open = fastcall_speech_open;
	speech_interface->speech_close = fastcall_speech_close;
	speech_interface->speech_feed_tts = fastcall_speech_feed_tts;
	speech_interface->speech_read_tts = fastcall_speech_read_tts;
	speech_interface->speech_flush_tts = fastcall_speech_flush_tts;
	speech_interface->speech_text_param_tts = fastcall_text_param_tts;
	speech_interface->speech_numeric_param_tts = fastcall_numeric_param_tts;
	speech_interface->speech_float_param_tts = fastcall_float_param_tts;

其中feed_tts是传送文件到引擎,read_tts是读取媒体流给speak播放。

三、软件架构设计

 1、mod_AI通过自定义协议发送需要转换的文本到tts_server,同时指定需要使用的引擎和发言人;

2、编写具有插件功能的TTS_Server系统,生成接口

struct fsl_tts_interface {
	/*! the name of the interface */
	const char *interface_name;
	int (*tts_open) (fsl_tts_handle_t *sh, char* param);
	int (*tts_close) (fsl_tts_handle_t*);
	int (*tts_start_session) (fsl_tts_handle_t* sh, int rate, char* param);
	int (*tts_stop_session) (fsl_tts_handle_t* sh);
    //给引擎喂文本
	int (*tts_feed) (fsl_tts_handle_t*sh, char *text);
    //获取语音流,其中synthStatus标识语音流状态
	int (*tts_read) (fsl_tts_handle_t *sh, void *data, fsl_size_t *datalen, int *synthStatus);
	fsl_thread_rwlock_t *rwlock;
	int refs;
	fsl_mutex_t *reflock;
	fsl_loadable_module_interface_t *parent;
	struct fsl_tts_interface *next;
};

3、分别编写阿里,讯飞,百度模块提供TTS引擎功能

4、TTS_Server通过mod_AI传送过来的参数interface_name来调用对应的模块文本转语音,并把语音返回给mod_AI模块;

希望对您有所帮助,更多探讨请加Freeswitch qq群640880657。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值