# tts_demo **Repository Path**: tuisys/tts_demo ## Basic Information - **Project Name**: tts_demo - **Description**: 🔧 TUI `TTS`中文语言合成接口的使用 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-12 - **Last Updated**: 2022-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: tui例子教程 ## README

TUI TTS中文语音合成测试用例

## 描述 TUI *V2.1* 以上版本支持`TTS`中文语音合成,TTS算法只占用ROM空间2.75MB, RAM空间46.6KB。
`TUISYS/tts_demo`仓库提供了gb2312编码转换语音的demo,实际应用要结合`TUISYS/tui_project`仓库里面的tui库文件,在tui内核初始化完成后调用。
直接在应用里面调用sound控件的函数`int tui_sound_set_sound_src_one_hz(tui_obj_t *sound, const char *gb2312_one_zh);`。 ## TTS资源 将仓库里面文件夹`tts_res`内容,通过uistudio工具导入到`其他资源`,TUI就可以调用sound控件,实现文字转语音播报。 ## 接口函数 `int tui_sound_set_sound_src_one_hz(tui_obj_t *sound, const char *gb2312_one_zh);`函数只能播放一个中文汉字,播放完成后会通过控件回调函数,通知应用播放结束,这时候应用就可以设置下个播放汉字了。
测试程序如下: ``` c #include "tui.h" static char *tts_string = "人之初,性本善。性相近,习相远。苟不教,性乃迁。教之道,贵以专。昔孟母,择邻处。子不学,断机杼。窦燕山,有义方。教五子,名俱扬。" "养不教,父之过。教不严,师之惰。子不学,非所宜。幼不学,老何为。玉不琢,不成器。人不学,不知义。为人子,方少时。亲师友,习礼仪。" "香九龄,能温席。孝于亲,所当执。融四岁,能让梨。弟于长,宜先知。首孝悌,次见闻。知某数,识某文。一而十,十而百。百而千,千而万。" "三才者,天地人。三光者,日月星。三纲者,君臣义。父子亲,夫妇顺。曰春夏,曰秋冬。此四时,运不穷。曰南北,曰西东。此四方,应乎中。" "曰水火,木金土。此五行,本乎数。十干者,甲至癸。十二支,子至亥。曰黄道,日所躔。曰赤道,当中权。赤道下,温暖极。我中华,在东北。"; static int tts_cnt = 0; static void tui_tts_sound_cb(tui_obj_t *obj, tui_event_e event) { if (event == TUI_EVENT_SOUND_PLAY_END) { tui_sound_set_sound_src_one_hz(obj, tts_string + tts_cnt); tts_cnt += 2; if (strlen(tts_string) < tts_cnt) tui_obj_del(obj); else tui_sound_play(obj); } } void tui_tts_speak_test(void) { tui_sound_attri_t attri = { 0 };//注意先清空结构体,避免随机值 tui_obj_t * sound; /* 创建对象 */ sound = tui_sound_create(tui_layer_top()); /* 设置属性 */ memset(&attri, 0, sizeof(tui_sound_attri_t)); attri.cb = tui_tts_sound_cb; tui_sound_set_attri(sound, &attri); tui_sound_set_sound_src_one_hz(sound, tts_string + tts_cnt); tts_cnt += 2; tui_sound_play(sound); } ```