Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tts: add more available voices. #626

Merged
merged 1 commit into from
Nov 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/BasisModule/Components/tts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ os.environ["APPBUILDER_TOKEN"] = "..."
| speed | Integer | 否 | 语音语速,默认是5中等语速,取值范围在0~15之间,仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 5 |
| pitch | Integer | 否 | 语音音调,默认是5中等音调,取值范围在0~15之间,仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 5 |
| volume | Integer | 否 | 语音音量,默认是5中等音量,取值范围在0~15之间,,仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 5 |
| person | Integer | 否 | 语音人物特征,默认是0(度小美),普通音库可选值包括: 0(度小美)、1(度小宇)、3(度逍遥-基础)、4(度丫丫);精品音库包括:5003(度逍遥-精品)、 5118(度小鹿) 、106(度博文)、 110(度小童)、 111(度小萌)、 103(度米朵)、 5(度小娇),仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 0 |
| person | Integer | 否 | 语音人物特征,默认是0(度小美),普通音库可选值包括: 0(度小美)、1(度小宇)、3(度逍遥-基础)、4(度丫丫);精品音库包括:5003(度逍遥-精品)、5118(度小鹿)、106(度博文)、110(度小童)、111(度小萌)、103(度米朵)、5(度小娇);臻品音库包括:4003(度逍遥-情感男声)、4106(度博文-专业男主播)、4115(度小贤-电台男主播)、4119(度小鹿-甜美女声)、4105(度灵儿-清激女声)、4117(度小乔-活泼女声)、4100(度小雯-活力女主播)、4103(度米朵-可爱女声)、4144(度姗姗-娱乐女声)、4278(度小贝-知识女主播)、4143(度清风-配音男声)、4140(度小新-专业女主播)、4129(度小彦-知识男主播)、4149(度星河-广告男声)、4254(度小清-广告女声)、4206(度博文-综艺男声)、4226(南方-电台女主播)。仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 0 |
| audio_type | String | 否 | 音频文件格式,如果使用`baidu-tts`模型可选`mp3`, `wav`; 如果使用`paddlespeech-tts`模型非流式返回,参数只能设为`wav`;如果使用`paddlespeech-tts`模型流式返回,参数只能设为`pcm` | wav |
| stream | Bool | 否 | 默认是False, 目前`paddlespeech-tts`模型支持流式返回,`baidu-tts`模型不支持流式返回 | False |
| retry | Integer | 否 | HTTP重试次数 | 3 |
Expand Down
2 changes: 1 addition & 1 deletion python/core/components/tts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ os.environ["APPBUILDER_TOKEN"] = "..."
| speed | Integer | 否 | 语音语速,默认是5中等语速,取值范围在0~15之间,仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 5 |
| pitch | Integer | 否 | 语音音调,默认是5中等音调,取值范围在0~15之间,仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 5 |
| volume | Integer | 否 | 语音音量,默认是5中等音量,取值范围在0~15之间,,仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 5 |
| person | Integer | 否 | 语音人物特征,默认是0(度小美),普通音库可选值包括: 0(度小美)、1(度小宇)、3(度逍遥-基础)、4(度丫丫);精品音库包括:5003(度逍遥-精品)、 5118(度小鹿) 、106(度博文)、 110(度小童)、 111(度小萌)、 103(度米朵)、 5(度小娇),仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 0 |
| person | Integer | 否 | 语音人物特征,默认是0(度小美),普通音库可选值包括: 0(度小美)、1(度小宇)、3(度逍遥-基础)、4(度丫丫);精品音库包括:5003(度逍遥-精品)、5118(度小鹿)、106(度博文)、110(度小童)、111(度小萌)、103(度米朵)、5(度小娇);臻品音库包括:4003(度逍遥-情感男声)、4106(度博文-专业男主播)、4115(度小贤-电台男主播)、4119(度小鹿-甜美女声)、4105(度灵儿-清激女声)、4117(度小乔-活泼女声)、4100(度小雯-活力女主播)、4103(度米朵-可爱女声)、4144(度姗姗-娱乐女声)、4278(度小贝-知识女主播)、4143(度清风-配音男声)、4140(度小新-专业女主播)、4129(度小彦-知识男主播)、4149(度星河-广告男声)、4254(度小清-广告女声)、4206(度博文-综艺男声)、4226(南方-电台女主播)。仅当模型为`baidu-tts`参数有效,如果模型为`paddlespeech-tts`,参数自动失效 | 0 |
| audio_type | String | 否 | 音频文件格式,如果使用`baidu-tts`模型可选`mp3`, `wav`; 如果使用`paddlespeech-tts`模型非流式返回,参数只能设为`wav`;如果使用`paddlespeech-tts`模型流式返回,参数只能设为`pcm` | wav |
| stream | Bool | 否 | 默认是False, 目前`paddlespeech-tts`模型支持流式返回,`baidu-tts`模型不支持流式返回 | False |
| retry | Integer | 否 | HTTP重试次数 | 3 |
Expand Down
11 changes: 9 additions & 2 deletions python/core/components/tts/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,15 @@ def run(self,
volume (int, 音量): 语音音量,默认是5中等音量,取值范围在0~15之间,
如果选择模型为paddlespeech-tts,参数自动失效。
person (int, 可选): 语音人物特征,默认是0,
可选值包括度小宇=1 度小美=0 度逍遥(基础)=3 度丫丫=4 度逍遥(精品)=5003
度小鹿=5118 度博文=106 度小童=110 度小萌=111 度米朵=103 度小娇=5,
可选值包括:
度小宇=1 度小美=0 度逍遥(基础)=3 度丫丫=4 度逍遥(精品)=5003
度小鹿=5118 度博文=106 度小童=110 度小萌=111 度米朵=103 度小娇=5
度逍遥-情感男声=4003 度博文-专业男主播=4106 度小贤-电台男主播=4115
度小鹿-甜美女声=4119 度灵儿-清激女声=4105 度小乔-活泼女声=4117
度小雯-活力女主播=4100 度米朵-可爱女声=4103 度姗姗-娱乐女声=4144
度小贝-知识女主播=4278 度清风-配音男声=4143 度小新-专业女主播=4140
度小彦-知识男主播=4129 度星河-广告男声=4149 度小清-广告女声=4254
度博文-综艺男声=4206 南方-电台女主播=4226,
如果选择模型为paddlespeech-tts,参数自动失效。
audio_type (str, 可选): 音频文件格式,默认是`mp3`,
如果选择`paddlespeech-tts`模型,参数只能设为`wav`。
Expand Down
18 changes: 14 additions & 4 deletions python/core/components/tts/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

from pydantic import BaseModel


class TTSRequest(proto.Message):
r"""文本转语音请求参数.

Expand All @@ -32,7 +31,14 @@ class TTSRequest(proto.Message):
pit(int, 可选): 语音音调,默认是5中等音调,取值范围在0~15之间,如果选择模型为paddlespeech-tts,参数自动失效.
vol(int, 音量): 语音音量,默认是5中等音量,取值范围在0~15之间,如果选择模型为paddlespeech-tts,参数自动失效.
per(int, 可选): 语音人物特征,默认是0,可选值包括度小宇=1 度小美=0 度逍遥(基础)=3 度丫丫=4 度逍遥(精品)=5003
度小鹿=5118 度博文=106 度小童=110 度小萌=111 度米朵=103 度小娇=5,如果选择模型为paddlespeech-tts,参数自动失效.
度小鹿=5118 度博文=106 度小童=110 度小萌=111 度米朵=103 度小娇=5
度逍遥-情感男声=4003 度博文-专业男主播=4106 度小贤-电台男主播=4115
度小鹿-甜美女声=4119 度灵儿-清激女声=4105 度小乔-活泼女声=4117
度小雯-活力女主播=4100 度米朵-可爱女声=4103 度姗姗-娱乐女声=4144
度小贝-知识女主播=4278 度清风-配音男声=4143 度小新-专业女主播=4140
度小彦-知识男主播=4129 度星河-广告男声=4149 度小清-广告女声=4254
度博文-综艺男声=4206 南方-电台女主播=4226,
如果选择模型为paddlespeech-tts,参数自动失效.
aue(int, 可选): 语音格式, 默认是3(mp3) 4(pcm-16k) 5(pcm-8k) 6-wav.
tp_project_id(str): paddlespeech-tts项目ID
tp_per_id(str): paddlespeech-tts音频ID
Expand Down Expand Up @@ -110,9 +116,13 @@ def __validate(self):
def validate_baidu_tts(self):
"""检查baidu-tts模型请求参数"""
self.__validate()
if self.per not in {0, 1, 3, 4, 5, 103, 106, 110, 111, 5003, 5118}:

_BAIDU_VALID_PER = {0, 1, 3, 4, 5, 103, 106, 110, 111, 4003, 4106, 4115, 4119,
4105, 4117, 4100, 4103, 4144, 4278, 4143, 4140, 4129, 4149, 4254, 4206, 4226, 5003, 5118}

if self.per not in _BAIDU_VALID_PER:
raise ValueError(
f"per value is illegal, exepcted in {0, 1, 3, 4, 5, 103, 106, 110, 111, 5003, 5118}, got {self.per}"
f"per value is illegal, expected in {_BAIDU_VALID_PER}, got {self.per}"
)
if self.aue == 0:
self.aue = 3
Expand Down