Fangjun Kuang
Committed by GitHub

Add more Chinese TTS models (Mandarin and Cantonese) (#589)

@@ -29,6 +29,12 @@ jobs: @@ -29,6 +29,12 @@ jobs:
29 with: 29 with:
30 fetch-depth: 0 30 fetch-depth: 0
31 31
  32 + # https://github.com/actions/setup-java
  33 + - uses: actions/setup-java@v4
  34 + with:
  35 + distribution: 'temurin' # See 'Supported distributions' for available options
  36 + java-version: '21'
  37 +
32 - name: ccache 38 - name: ccache
33 uses: hendrikmuhs/ccache-action@v1.2 39 uses: hendrikmuhs/ccache-action@v1.2
34 with: 40 with:
@@ -98,7 +98,7 @@ jobs: @@ -98,7 +98,7 @@ jobs:
98 if: true 98 if: true
99 env: 99 env:
100 HF_TOKEN: ${{ secrets.HF_TOKEN }} 100 HF_TOKEN: ${{ secrets.HF_TOKEN }}
101 - uses: nick-fields/retry@v2 101 + uses: nick-fields/retry@v3
102 with: 102 with:
103 max_attempts: 20 103 max_attempts: 20
104 timeout_seconds: 200 104 timeout_seconds: 200
@@ -94,7 +94,7 @@ jobs: @@ -94,7 +94,7 @@ jobs:
94 if: true 94 if: true
95 env: 95 env:
96 HF_TOKEN: ${{ secrets.HF_TOKEN }} 96 HF_TOKEN: ${{ secrets.HF_TOKEN }}
97 - uses: nick-fields/retry@v2 97 + uses: nick-fields/retry@v3
98 with: 98 with:
99 max_attempts: 20 99 max_attempts: 20
100 timeout_seconds: 200 100 timeout_seconds: 200
@@ -34,6 +34,12 @@ jobs: @@ -34,6 +34,12 @@ jobs:
34 with: 34 with:
35 fetch-depth: 0 35 fetch-depth: 0
36 36
  37 + # https://github.com/actions/setup-java
  38 + - uses: actions/setup-java@v4
  39 + with:
  40 + distribution: 'temurin' # See 'Supported distributions' for available options
  41 + java-version: '21'
  42 +
37 - name: ccache 43 - name: ccache
38 uses: hendrikmuhs/ccache-action@v1.2 44 uses: hendrikmuhs/ccache-action@v1.2
39 with: 45 with:
@@ -89,7 +95,7 @@ jobs: @@ -89,7 +95,7 @@ jobs:
89 if: true 95 if: true
90 env: 96 env:
91 HF_TOKEN: ${{ secrets.HF_TOKEN }} 97 HF_TOKEN: ${{ secrets.HF_TOKEN }}
92 - uses: nick-fields/retry@v2 98 + uses: nick-fields/retry@v3
93 with: 99 with:
94 max_attempts: 20 100 max_attempts: 20
95 timeout_seconds: 200 101 timeout_seconds: 200
@@ -29,6 +29,12 @@ jobs: @@ -29,6 +29,12 @@ jobs:
29 with: 29 with:
30 fetch-depth: 0 30 fetch-depth: 0
31 31
  32 + # https://github.com/actions/setup-java
  33 + - uses: actions/setup-java@v4
  34 + with:
  35 + distribution: 'temurin' # See 'Supported distributions' for available options
  36 + java-version: '21'
  37 +
32 - name: ccache 38 - name: ccache
33 uses: hendrikmuhs/ccache-action@v1.2 39 uses: hendrikmuhs/ccache-action@v1.2
34 with: 40 with:
@@ -63,7 +63,7 @@ jobs: @@ -63,7 +63,7 @@ jobs:
63 if: matrix.python-version == 'cp38' 63 if: matrix.python-version == 'cp38'
64 env: 64 env:
65 HF_TOKEN: ${{ secrets.HF_TOKEN }} 65 HF_TOKEN: ${{ secrets.HF_TOKEN }}
66 - uses: nick-fields/retry@v2 66 + uses: nick-fields/retry@v3
67 with: 67 with:
68 max_attempts: 20 68 max_attempts: 20
69 timeout_seconds: 200 69 timeout_seconds: 200
@@ -87,7 +87,7 @@ jobs: @@ -87,7 +87,7 @@ jobs:
87 if: matrix.python-version == '3.8' 87 if: matrix.python-version == '3.8'
88 env: 88 env:
89 HF_TOKEN: ${{ secrets.HF_TOKEN }} 89 HF_TOKEN: ${{ secrets.HF_TOKEN }}
90 - uses: nick-fields/retry@v2 90 + uses: nick-fields/retry@v3
91 with: 91 with:
92 max_attempts: 20 92 max_attempts: 20
93 timeout_seconds: 200 93 timeout_seconds: 200
@@ -79,7 +79,7 @@ jobs: @@ -79,7 +79,7 @@ jobs:
79 if: matrix.python-version == 'cp38' 79 if: matrix.python-version == 'cp38'
80 env: 80 env:
81 HF_TOKEN: ${{ secrets.HF_TOKEN }} 81 HF_TOKEN: ${{ secrets.HF_TOKEN }}
82 - uses: nick-fields/retry@v2 82 + uses: nick-fields/retry@v3
83 with: 83 with:
84 max_attempts: 20 84 max_attempts: 20
85 timeout_seconds: 200 85 timeout_seconds: 200
@@ -68,7 +68,7 @@ jobs: @@ -68,7 +68,7 @@ jobs:
68 if: matrix.python-version == 'cp38' 68 if: matrix.python-version == 'cp38'
69 env: 69 env:
70 HF_TOKEN: ${{ secrets.HF_TOKEN }} 70 HF_TOKEN: ${{ secrets.HF_TOKEN }}
71 - uses: nick-fields/retry@v2 71 + uses: nick-fields/retry@v3
72 with: 72 with:
73 max_attempts: 20 73 max_attempts: 20
74 timeout_seconds: 200 74 timeout_seconds: 200
@@ -68,7 +68,7 @@ jobs: @@ -68,7 +68,7 @@ jobs:
68 if: matrix.python-version == 'cp38' 68 if: matrix.python-version == 'cp38'
69 env: 69 env:
70 HF_TOKEN: ${{ secrets.HF_TOKEN }} 70 HF_TOKEN: ${{ secrets.HF_TOKEN }}
71 - uses: nick-fields/retry@v2 71 + uses: nick-fields/retry@v3
72 with: 72 with:
73 max_attempts: 20 73 max_attempts: 20
74 timeout_seconds: 200 74 timeout_seconds: 200
@@ -53,7 +53,7 @@ jobs: @@ -53,7 +53,7 @@ jobs:
53 if: matrix.python-version == 'cp38' 53 if: matrix.python-version == 'cp38'
54 env: 54 env:
55 HF_TOKEN: ${{ secrets.HF_TOKEN }} 55 HF_TOKEN: ${{ secrets.HF_TOKEN }}
56 - uses: nick-fields/retry@v2 56 + uses: nick-fields/retry@v3
57 with: 57 with:
58 max_attempts: 20 58 max_attempts: 20
59 timeout_seconds: 200 59 timeout_seconds: 200
@@ -52,7 +52,7 @@ jobs: @@ -52,7 +52,7 @@ jobs:
52 if: matrix.python-version == 'cp38' 52 if: matrix.python-version == 'cp38'
53 env: 53 env:
54 HF_TOKEN: ${{ secrets.HF_TOKEN }} 54 HF_TOKEN: ${{ secrets.HF_TOKEN }}
55 - uses: nick-fields/retry@v2 55 + uses: nick-fields/retry@v3
56 with: 56 with:
57 max_attempts: 20 57 max_attempts: 20
58 timeout_seconds: 200 58 timeout_seconds: 200
@@ -36,7 +36,7 @@ jobs: @@ -36,7 +36,7 @@ jobs:
36 - name: Publish to huggingface (aishell) 36 - name: Publish to huggingface (aishell)
37 env: 37 env:
38 HF_TOKEN: ${{ secrets.HF_TOKEN }} 38 HF_TOKEN: ${{ secrets.HF_TOKEN }}
39 - uses: nick-fields/retry@v2 39 + uses: nick-fields/retry@v3
40 with: 40 with:
41 max_attempts: 20 41 max_attempts: 20
42 timeout_seconds: 200 42 timeout_seconds: 200
@@ -117,14 +117,14 @@ message(STATUS "C++ Standard version: ${CMAKE_CXX_STANDARD}") @@ -117,14 +117,14 @@ message(STATUS "C++ Standard version: ${CMAKE_CXX_STANDARD}")
117 117
118 include(CheckIncludeFileCXX) 118 include(CheckIncludeFileCXX)
119 119
120 -if(UNIX AND NOT APPLE AND NOT SHERPA_ONNX_ENABLE_WASM) 120 +if(UNIX AND NOT APPLE AND NOT SHERPA_ONNX_ENABLE_WASM AND NOT CMAKE_SYSTEM_NAME STREQUAL Android)
121 check_include_file_cxx(alsa/asoundlib.h SHERPA_ONNX_HAS_ALSA) 121 check_include_file_cxx(alsa/asoundlib.h SHERPA_ONNX_HAS_ALSA)
122 if(SHERPA_ONNX_HAS_ALSA) 122 if(SHERPA_ONNX_HAS_ALSA)
123 add_definitions(-DSHERPA_ONNX_ENABLE_ALSA=1) 123 add_definitions(-DSHERPA_ONNX_ENABLE_ALSA=1)
124 else() 124 else()
125 message(WARNING "\ 125 message(WARNING "\
126 Could not find alsa/asoundlib.h ! 126 Could not find alsa/asoundlib.h !
127 -We won't build sherpa-ncnn-alsa 127 +We won't build sherpa-onnx-alsa
128 To fix that, please do: 128 To fix that, please do:
129 (1) sudo apt-get install alsa-utils libasound2-dev 129 (1) sudo apt-get install alsa-utils libasound2-dev
130 (2) rm -rf build 130 (2) rm -rf build
1 #Thu Feb 23 11:09:06 CST 2023 1 #Thu Feb 23 11:09:06 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
1 #Sun Sep 10 18:03:03 CST 2023 1 #Sun Sep 10 18:03:03 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
1 #Thu Feb 23 11:09:06 CST 2023 1 #Thu Feb 23 11:09:06 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
1 #Mon Oct 23 15:40:58 CST 2023 1 #Mon Oct 23 15:40:58 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
1 #Sat Sep 23 10:24:21 CST 2023 1 #Sat Sep 23 10:24:21 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
1 #Sat Sep 23 20:50:52 CST 2023 1 #Sat Sep 23 20:50:52 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
1 #Thu Feb 23 11:09:06 CST 2023 1 #Thu Feb 23 11:09:06 CST 2023
2 distributionBase=GRADLE_USER_HOME 2 distributionBase=GRADLE_USER_HOME
3 -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
4 distributionPath=wrapper/dists 4 distributionPath=wrapper/dists
5 zipStorePath=wrapper/dists 5 zipStorePath=wrapper/dists
6 zipStoreBase=GRADLE_USER_HOME 6 zipStoreBase=GRADLE_USER_HOME
@@ -65,6 +65,8 @@ for arch in arm64-v8a armeabi-v7a x86_64 x86; do @@ -65,6 +65,8 @@ for arch in arm64-v8a armeabi-v7a x86_64 x86; do
65 cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxSpeakerIdentification/app/src/main/jniLibs/$arch/ 65 cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxSpeakerIdentification/app/src/main/jniLibs/$arch/
66 66
67 pushd ./android/SherpaOnnxSpeakerIdentification 67 pushd ./android/SherpaOnnxSpeakerIdentification
  68 + sed -i.bak s/2048/9012/g ./gradle.properties
  69 + git diff ./gradle.properties
68 ./gradlew build 70 ./gradlew build
69 popd 71 popd
70 72
@@ -82,6 +82,8 @@ for arch in arm64-v8a armeabi-v7a x86_64 x86; do @@ -82,6 +82,8 @@ for arch in arm64-v8a armeabi-v7a x86_64 x86; do
82 cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxTtsEngine/app/src/main/jniLibs/$arch/ 82 cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxTtsEngine/app/src/main/jniLibs/$arch/
83 83
84 pushd ./android/SherpaOnnxTtsEngine 84 pushd ./android/SherpaOnnxTtsEngine
  85 + sed -i.bak s/2048/9012/g ./gradle.properties
  86 + git diff ./gradle.properties
85 ./gradlew build 87 ./gradlew build
86 popd 88 popd
87 89
@@ -80,6 +80,8 @@ for arch in arm64-v8a armeabi-v7a x86_64 x86; do @@ -80,6 +80,8 @@ for arch in arm64-v8a armeabi-v7a x86_64 x86; do
80 cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxTts/app/src/main/jniLibs/$arch/ 80 cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaOnnxTts/app/src/main/jniLibs/$arch/
81 81
82 pushd ./android/SherpaOnnxTts 82 pushd ./android/SherpaOnnxTts
  83 + sed -i.bak s/2048/9012/g ./gradle.properties
  84 + git diff ./gradle.properties
83 ./gradlew build 85 ./gradlew build
84 popd 86 popd
85 87
@@ -39,7 +39,8 @@ class TtsModel: @@ -39,7 +39,8 @@ class TtsModel:
39 39
40 def convert_lang_to_iso_639_3(models: List[TtsModel]): 40 def convert_lang_to_iso_639_3(models: List[TtsModel]):
41 for m in models: 41 for m in models:
42 - m.lang_iso_639_3 = Lang(m.lang).pt3 42 + if m.lang_iso_639_3 == "":
  43 + m.lang_iso_639_3 = Lang(m.lang).pt3
43 44
44 45
45 def get_coqui_models() -> List[TtsModel]: 46 def get_coqui_models() -> List[TtsModel]:
@@ -209,54 +210,91 @@ def get_vits_models() -> List[TtsModel]: @@ -209,54 +210,91 @@ def get_vits_models() -> List[TtsModel]:
209 lang="zh", 210 lang="zh",
210 rule_fsts="vits-zh-aishell3/rule.fst", 211 rule_fsts="vits-zh-aishell3/rule.fst",
211 ), 212 ),
212 - # TtsModel(  
213 - # model_dir="vits-zh-hf-doom",  
214 - # model_name="doom.onnx",  
215 - # lang="zh",  
216 - # rule_fsts="vits-zh-hf-doom/rule.fst",  
217 - # ),  
218 - # TtsModel(  
219 - # model_dir="vits-zh-hf-echo",  
220 - # model_name="echo.onnx",  
221 - # lang="zh",  
222 - # rule_fsts="vits-zh-hf-echo/rule.fst",  
223 - # ),  
224 - # TtsModel(  
225 - # model_dir="vits-zh-hf-zenyatta",  
226 - # model_name="zenyatta.onnx",  
227 - # lang="zh",  
228 - # rule_fsts="vits-zh-hf-zenyatta/rule.fst",  
229 - # ),  
230 - # TtsModel(  
231 - # model_dir="vits-zh-hf-abyssinvoker",  
232 - # model_name="abyssinvoker.onnx",  
233 - # lang="zh",  
234 - # rule_fsts="vits-zh-hf-abyssinvoker/rule.fst",  
235 - # ),  
236 - # TtsModel(  
237 - # model_dir="vits-zh-hf-keqing",  
238 - # model_name="keqing.onnx",  
239 - # lang="zh",  
240 - # rule_fsts="vits-zh-hf-keqing/rule.fst",  
241 - # ),  
242 - # TtsModel(  
243 - # model_dir="vits-zh-hf-eula",  
244 - # model_name="eula.onnx",  
245 - # lang="zh",  
246 - # rule_fsts="vits-zh-hf-eula/rule.fst",  
247 - # ),  
248 - # TtsModel(  
249 - # model_dir="vits-zh-hf-bronya",  
250 - # model_name="bronya.onnx",  
251 - # lang="zh",  
252 - # rule_fsts="vits-zh-hf-bronya/rule.fst",  
253 - # ),  
254 - # TtsModel(  
255 - # model_dir="vits-zh-hf-theresa",  
256 - # model_name="theresa.onnx",  
257 - # lang="zh",  
258 - # rule_fsts="vits-zh-hf-theresa/rule.fst",  
259 - # ), 213 + TtsModel(
  214 + model_dir="vits-zh-hf-doom",
  215 + model_name="doom.onnx",
  216 + lang="zh",
  217 + rule_fsts="vits-zh-hf-doom/rule.fst",
  218 + ),
  219 + TtsModel(
  220 + model_dir="vits-zh-hf-echo",
  221 + model_name="echo.onnx",
  222 + lang="zh",
  223 + rule_fsts="vits-zh-hf-echo/rule.fst",
  224 + ),
  225 + TtsModel(
  226 + model_dir="vits-zh-hf-zenyatta",
  227 + model_name="zenyatta.onnx",
  228 + lang="zh",
  229 + rule_fsts="vits-zh-hf-zenyatta/rule.fst",
  230 + ),
  231 + TtsModel(
  232 + model_dir="vits-zh-hf-abyssinvoker",
  233 + model_name="abyssinvoker.onnx",
  234 + lang="zh",
  235 + rule_fsts="vits-zh-hf-abyssinvoker/rule.fst",
  236 + ),
  237 + TtsModel(
  238 + model_dir="vits-zh-hf-keqing",
  239 + model_name="keqing.onnx",
  240 + lang="zh",
  241 + rule_fsts="vits-zh-hf-keqing/rule.fst",
  242 + ),
  243 + TtsModel(
  244 + model_dir="vits-zh-hf-eula",
  245 + model_name="eula.onnx",
  246 + lang="zh",
  247 + rule_fsts="vits-zh-hf-eula/rule.fst",
  248 + ),
  249 + TtsModel(
  250 + model_dir="vits-zh-hf-bronya",
  251 + model_name="bronya.onnx",
  252 + lang="zh",
  253 + rule_fsts="vits-zh-hf-bronya/rule.fst",
  254 + ),
  255 + TtsModel(
  256 + model_dir="vits-zh-hf-theresa",
  257 + model_name="theresa.onnx",
  258 + lang="zh",
  259 + rule_fsts="vits-zh-hf-theresa/rule.fst",
  260 + ),
  261 + TtsModel(
  262 + model_dir="vits-zh-hf-fanchen-wnj",
  263 + model_name="vits-zh-hf-fanchen-wnj.onnx",
  264 + lang="zh",
  265 + rule_fsts="vits-zh-hf-fanchen-wnj/rule.fst",
  266 + ),
  267 + TtsModel(
  268 + model_dir="vits-zh-hf-fanchen-C",
  269 + model_name="vits-zh-hf-fanchen-C.onnx",
  270 + lang="zh",
  271 + rule_fsts="vits-zh-hf-fanchen-C/rule.fst",
  272 + ),
  273 + TtsModel(
  274 + model_dir="vits-zh-hf-fanchen-ZhiHuiLaoZhe",
  275 + model_name="vits-zh-hf-fanchen-ZhiHuiLaoZhe.onnx",
  276 + lang="zh",
  277 + rule_fsts="vits-zh-hf-fanchen-ZhiHuiLaoZhe/rule.fst",
  278 + ),
  279 + TtsModel(
  280 + model_dir="vits-zh-hf-fanchen-ZhiHuiLaoZhe_new",
  281 + model_name="vits-zh-hf-fanchen-ZhiHuiLaoZhe_new.onnx",
  282 + lang="zh",
  283 + rule_fsts="vits-zh-hf-fanchen-ZhiHuiLaoZhe_new/rule.fst",
  284 + ),
  285 + TtsModel(
  286 + model_dir="vits-zh-hf-fanchen-unity",
  287 + model_name="vits-zh-hf-fanchen-unity.onnx",
  288 + lang="zh",
  289 + rule_fsts="vits-zh-hf-fanchen-unity/rule.fst",
  290 + ),
  291 + TtsModel(
  292 + model_dir="vits-cantonese-hf-xiaomaiiwn",
  293 + model_name="vits-cantonese-hf-xiaomaiiwn.onnx",
  294 + lang="cantonese",
  295 + lang_iso_639_3="yue",
  296 + rule_fsts="vits-cantonese-hf-xiaomaiiwn/rule.fst",
  297 + ),
260 # English (US) 298 # English (US)
261 TtsModel(model_dir="vits-vctk", model_name="vits-vctk.onnx", lang="en"), 299 TtsModel(model_dir="vits-vctk", model_name="vits-vctk.onnx", lang="en"),
262 # TtsModel(model_dir="vits-ljs", model_name="vits-ljs.onnx", lang="en"), 300 # TtsModel(model_dir="vits-ljs", model_name="vits-ljs.onnx", lang="en"),