查看:
1633
|
回复:
1
|
乐鑫语音之文字转语音(TTS)
|
|
发表于2022-05-31 10:14:58
|
只看该作者
1#
电梯直达
今天,我们来研究乐鑫的语音助手框架ESP-Skainet其中的中文语音合成的例程。 编译原例程 1.首先需要clone例程 该工程内部自带一个idf,是运行的最佳版本,不过你任然可以使用自己的idf。
cd esp-skainet/examples/chinese_tts 3.理论上设置好了芯片型号为esp32s3后自动调用sdkconfig.defaults.esp32s3配置文件。 但是实际上好像没有,所以这里加一个步骤确保能使用上默认配置。 cp sdkconfig.defaults.esp32s3 sdkconfig.defaults 4.设置芯片为esp32s3 idf.py set-target esp32s3 5.进入menuconfig idf.py menuconfig修改Audio Media Hal -> Audio Hardware board 改成ESP32-S3-Korvo-1 6.编译烧录程序 idf.py flash monitor -p /dev/ttyUSB0 运行原例程 运行后,可以看到如下打印 欢迎使用乐鑫语音合成 I (266) tts_parser: unicode:0x6b22 -> huan1 I (266) tts_parser: unicode:0x8fce -> ying2 I (276) tts_parser: unicode:0x4f7f -> shi3 I (276) tts_parser: unicode:0x7528 -> yong4 I (286) tts_parser: unicode:0x4e50 -> le4 I (286) tts_parser: unicode:0x946b -> xin1 I (296) tts_parser: unicode:0x8bed -> yu3 I (296) tts_parser: unicode:0x97f3 -> yin1 I (306) tts_parser: unicode:0x5408 -> he2 I (306) tts_parser: unicode:0x6210 -> cheng2 请输入短语: 简化原例程并分析 原例程大致分为两个功能,第一个功能是阅读“乐鑫语音合成”这句话,还有一个功能是朗读串口输入的文字。 第二部分经常会有bug,所以咱们简化例程,重心分析第一个功能。简化例程如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_tts.h" #include "esp_tts_voice_xiaole.h" #include "esp_board_init.h" int app_main() { ESP_ERROR_CHECK(esp_board_init(AUDIO_HAL_16K_SAMPLES, 1, 16)); // 初始化codec芯片,配置好采样率、声道数、采样大小 esp_tts_voice_t *voice = (esp_tts_voice_t *)&esp_tts_voice_xiaole; // 配置tts的声音配置文件,来自libvoice_set_xiaole esp_tts_handle_t *tts_handle = esp_tts_create(voice); // 创建tts对象 char *prompt1 = "你好我是启明云端"; // 需要转换的文字 if (esp_tts_parse_chinese(tts_handle, prompt1)) // 文字解析成拼音 { int len[1] = {0}; do { short *pcm_data = esp_tts_stream_play(tts_handle, len, 3); // 拼音转换成pcm音频 esp_audio_play(pcm_data, len[0] * 2, portMAX_DELAY); //播放音频 } while (len[0] > 0); } esp_tts_stream_reset(tts_handle); // 重置 tts 流并清除 TTS 实例的所有缓存 return 0; }这里音频的tts来自静态库libvoice_set_xiaole中,目前也只有这一个音色可供使用,其余的tts相关函数则是属于静态库libesp_tts_chinese。 总结 |
|
发表于2023-05-05 23:13:03
|
只看该作者
2#
这个效果太难听了,还是用mp3播放吧
|
|