{"id":13454305,"url":"https://github.com/huakunyang/SummerTTS","last_synced_at":"2025-03-24T05:33:38.059Z","repository":{"id":154171098,"uuid":"630367963","full_name":"huakunyang/SummerTTS","owner":"huakunyang","description":"SummerTTS 是一个基于C++的独立编译的中文和英文语音合成项目，可以本地运行不需要网络，而且没有额外的依赖，一键编译完成即可用于中文和英文的语音合成。SummerTTS is a  standalone Chinese and English speech synthesis(TTS) project that has almost no dependency and could be easily used for Chinese TTS with just one key build out","archived":false,"fork":false,"pushed_at":"2024-12-14T01:10:08.000Z","size":5288,"stargazers_count":414,"open_issues_count":33,"forks_count":74,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-12-14T02:18:12.364Z","etag":null,"topics":["cplusplus","no-dependencies","speech-synthesis","standalone","tts","vits"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/huakunyang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-20T08:27:28.000Z","updated_at":"2024-12-14T01:10:12.000Z","dependencies_parsed_at":"2024-01-13T17:38:57.331Z","dependency_job_id":null,"html_url":"https://github.com/huakunyang/SummerTTS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huakunyang%2FSummerTTS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huakunyang%2FSummerTTS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huakunyang%2FSummerTTS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huakunyang%2FSummerTTS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/huakunyang","download_url":"https://codeload.github.com/huakunyang/SummerTTS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245217398,"owners_count":20579291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cplusplus","no-dependencies","speech-synthesis","standalone","tts","vits"],"created_at":"2024-07-31T08:00:52.889Z","updated_at":"2025-03-24T05:33:38.033Z","avatar_url":"https://github.com/huakunyang.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# SummerTTS 用于纪念2023年即将到来和终将逝去的夏天\n\n# 说明\n- SummerTTS 是一个独立编译的语音合成程序(TTS)。可以本地运行不需要网络，而且没有额外的依赖，一键编译完成即可用于中文和英文的语音合成。\n- SummerTTS 的底层计算库使用Eigen，Eigen是一套模板定义的函数，大部分情况下，只需要包含头文件即可，所以本项目没有其他依赖，在C++环境下可以独立编译和运行。\n- 本项目使用Eigen提供的矩阵库实现了神经网络的算子，不需要依赖例如pytorch，tensorflow, ncnn 等其他NN运行环境。\n- 本项目在 Ubuntu 上编译运行通过，其他类Linux平台，如Android，树莓派等，也应该没啥大问题，在Window上没有测试过，可能需要少许改动。\n- 本项目的模型基于语音合成算法 vits, 在其基础上进行了基于C++的工程化\n- 本项目适用MIT License，基于本项目的开发，使用人员或机构，请遵循 MIT License: https://mit-license.org\n\n# 更新日志\n- 2024-12-14: 添加License 信息为 MIT License: https://mit-license.org\n- 2023-06-16: 更新添加一个更快的英文语音合成模型:single_speaker_english_fast.bin, 还是在如下网盘中，速度要快一些，合成的音质下降不明显:  \n  链接: https://pan.baidu.com/s/1rYhtznOYQH7m8g-xZ_2VVQ?pwd=2d5h 提取码: 2d5h\n- 2023-06-15: 支持纯英文的语音合成，需要同步最新的代码，使用下列网盘中的模型文件: single_speaker_english.bin, 以下面的方式合成英文语音：  \n  ./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav  \n  网盘路径如下，之前的中文语音合成和用法不受影响，需要说明的是本次更新只支持纯英文的语音合成，中文混合英文的暂时不支持。  \n  链接: https://pan.baidu.com/s/1rYhtznOYQH7m8g-xZ_2VVQ?pwd=2d5h 提取码: 2d5h\n- 2023-06-09: 新增了一个中等大小的单说话人模型: single_speaker_mid.bin  ，速度比之前的模型稍慢，但合成的音质似乎要好点（本人耳朵不算敏感，感觉要好点，也许是心理作用：P ），代码不需要更新，只需要在之前的网盘中下载 single_speaker_mid.bin 并使用即可. \n- 2023-06-08: 修改test/main.cpp, 支持换行和整篇文本的合成\n- 2023-06-03: Fix 了昨天的版本中的一个错误，感谢热心网友Telen提供测试和线索，只有代码更新，模型不需要更新。 \n- 2023-06-02: 大幅度提升了多音字发音合成的准确性，需要在百度网盘中获取新的模型，才能使用改善后的多音字发音和文本正则化（Text Normalization），今天更新的代码不能使用之前的模型，否则可能导致crash\n- 2023-05-30: 集成 WeTextProcessing 作为前端文本正则化（Text Normalization）模块，极大的改善了对数字，货币，温度，日期等的正确发音合成。需要在下面的百度网盘中获取新的模型\n- 2023-5-23： 使用新的算法大幅度提升了单说话人的语音合成速度。\n- 2023-4-21： 初始创建\n\n\n# 使用说明\n- 将本项目的代码克隆到本地，最好是Ubuntu Linux 环境\n- 从以下的百度网盘地址下载模型，放入本项目的model目录中：\n  链接: https://pan.baidu.com/s/1rYhtznOYQH7m8g-xZ_2VVQ?pwd=2d5h 提取码: 2d5h\n    \n  模型文件放入后，models目录结构如下：    \n  models/  \n  ├── multi_speakers.bin  \n  ├── single_speaker_mid.bin  \n  ├── single_speaker_english.bin  \n  ├── single_speaker_english_fast.bin  \n  └── single_speaker_fast.bin  \n  \n\n- 进入Build 目录，执行以下命令：  \n  cmake ..  \n  make  \n- 编译完成后，会在Build 目录中生成 tts_test 执行程序  \n- 运行下列命令，测试中文语音合成（TTS）：  \n  ./tts_test ../test.txt ../models/single_speaker_fast.bin out.wav   \n- 运行下列命令，测试英文语音合成（TTS）：  \n  ./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav  \n\n  该命令行中：  \n  第一个参数为是文本文件的路径，该文件包含需要被合成语音的文本。  \n  第二个参数是前面提到的模型的路径，文件名开头的single 和 multi 表示模型包含了单个说话人还是多个说话人。推荐单说话人模型：single_speaker_fast.bin, 合成的速度较快，合成的音质也还行。\n  第三个参数是合成的音频文件，程序运行完之后生成该文件，可以用播放器打开。\n    \n- 以上的测试程序实现在 test/main.cpp 中，具体合成的接口定义在 include/SynthesizerTrn.h， 如下：  \n  int16_t * infer(const string \u0026 line, int32_t sid, float lengthScale, int32_t \u0026 dataLen)  \n\n  该接口的：  \n  第一个参数是待合成的语音的字符串。  \n  第二个参数指定说话人的id 用于合成语音，该参数对多说话人模型有效，对单说话人模型，固定为0。说话人的个数可由接口 int32_t getSpeakerNum() 返回，有效id 为 0 到 该接口返回的说话人数量减1。  \n  第三个参数 lengthScale 表示合成语音的语速，其值越大表示语速越慢。  \n- 待合成的文本中可以包含阿拉伯数字和标点，但因为本项目的 文本正则化(TN) 模块还很粗糙，对于英文字符，会直接忽略。也因为文本正则化(TN) 模块还很粗糙，对不同语境下的多音字发音有时候会不准确。\n\n# 后续开发\n- 后续将开放模型训练和转化脚本\n- 后续将尝试训练和提供音质更好的模型\n\n# 联系作者\n- 有进一步的问题或需要可以发邮件到 120365182@qq.com , 或添加微信: hwang_2011, 本人尽量回复。\n  \n# License\n- 本项目适用MIT License，基于本项目的开发，使用人员或机构，请遵循 MIT License: https://mit-license.org\n\n# 感谢\n本项目在源代码和算法方面使用了下列方案，在此表示感谢, 若可能引发任何法律问题，请及时联系我协调解决\n- Eigen  \n- vits (https://github.com/jaywalnut310/vits)  \n- vits_chinese (https://github.com/UEhQZXI/vits_chinese)\n- MB-iSTFT-VITS (https://github.com/MasayaKawamura/MB-iSTFT-VITS)\n- WeTextProcessing (https://github.com/wenet-e2e/WeTextProcessing)\n- glog (https://github.com/google/glog)\n- gflags (https://github.com/gflags/gflags)\n- openfst (https://github.com/kkm000/openfst)\n- 汉字转拼音（https://github.com/yangyangwithgnu/hanz2piny）\n- cppjieba (https://github.com/yanyiwu/cppjieba)\n- g2p_en(https://github.com/Kyubyong/g2p)\n- English-to-IPA(https://github.com/mphilli/English-to-IPA)\n- 本项目的中文单说话人模型基于开源标贝数据集训练，多说话人模型基于开源数据集 aishell3 训练，英文单说话人模型基于LJ Speech 数据集。  \n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuakunyang%2FSummerTTS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuakunyang%2FSummerTTS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuakunyang%2FSummerTTS/lists"}