Skip to content

Support extra languages in multi-lang kokoro tts#2303

Merged
csukuangfj merged 7 commits into
k2-fsa:masterfrom
csukuangfj:kokoro-multi-lang
Jun 20, 2025
Merged

Support extra languages in multi-lang kokoro tts#2303
csukuangfj merged 7 commits into
k2-fsa:masterfrom
csukuangfj:kokoro-multi-lang

Conversation

@csukuangfj

Copy link
Copy Markdown
Collaborator

With this PR, kokoro-multi-lang-v1_0.tar.bz2 can support multiple languages now.

Example 1: French

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=fr \
  --sid=30 \
  --output-filename="./30.wav" \
  "Ce n'est pas à un vieux singe qu'on apprend à faire des grimaces. Qui court deux lièvres à la fois, n’en prend aucun"
30.mov

Example 2: American English

(Refer to https://k2-fsa.github.io/sherpa/onnx/tts/all/Chinese-English/kokoro-multi-lang-v1_0.html for speaker IDs corresponding to American accents)

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=en \
  --sid=0 \
  --output-filename="./0.wav" \
  "Today as always, men fall into two groups: slaves and free men. Whoever does not have two-thirds of his day for himself, is a slave, whatever he may be, a statesman, a businessman, an official, or a scholar."
0.mov

Example 3: British English

(Refer to https://k2-fsa.github.io/sherpa/onnx/tts/all/Chinese-English/kokoro-multi-lang-v1_0.html for speaker IDs corresponding to British accents)

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=en \
  --sid=22 \
  --output-filename="./22.wav" \
  "Today as always, men fall into two groups: slaves and free men. Whoever does not have two-thirds of his day for himself, is a slave, whatever he may be, a statesman, a businessman, an official, or a scholar."
22.mov

Example 4: Spanish

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=es \
  --sid=28 \
  --output-filename="./28.wav" \
  "Hoy, como siempre, los hombres se dividen en dos grupos: esclavos y libres. Quien no dispone de dos tercios de su día para sí mismo, es esclavo, sea quien sea: estadista, empresario, funcionario o erudito."
28.mov

Example 5: Chinese + English

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-lexicon=./kokoro-multi-lang-v1_0/lexicon-zh.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=en \
  --sid=48 \
  --output-filename="./48.wav" \
  "This model supports both Chinese and English. 小米的核心价值观是什么? 答案是真诚热爱. I am learning 机器学习. 我在研究 machine learning. What do you think 中英文说的如何呢?"
48.mov

Example 6: Chinese + English

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-lexicon=./kokoro-multi-lang-v1_0/lexicon-zh.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=en \
  --sid=2 \
  --output-filename="./2.wav" \
  "This model supports both Chinese and English. 小米的核心价值观是什么? 答案是真诚热爱. I am learning 机器学习. 我在研究 machine learning. What do you think 中英文说的如何呢?"
2.mov

(You can combine Chinese with French, or Chinese with Spanish, or Chinese with Italian, or Chinese with Hindi, etc.)

Example 7: Italian

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=it \
  --sid=35 \
  --output-filename="./35.wav" \
  "Oggi come sempre, gli uomini si dividono in due gruppi: schiavi e uomini liberi. Chi non ha due terzi della giornata per sé è uno schiavo, qualunque cosa sia, uno statista, un uomo d'affari, un funzionario o uno studioso."
35.mov

Example 8: Hindi

build/bin/sherpa-onnx-offline-tts \
  --kokoro-model=./kokoro-multi-lang-v1_0/model.onnx \
  --kokoro-voices=./kokoro-multi-lang-v1_0/voices.bin \
  --kokoro-tokens=./kokoro-multi-lang-v1_0/tokens.txt \
  --kokoro-data-dir=./kokoro-multi-lang-v1_0/espeak-ng-data \
  --kokoro-dict-dir=./kokoro-multi-lang-v1_0/dict \
  --kokoro-lang=hi \
  --sid=32 \
  --output-filename="./32.wav" \
  "आज भी हमेशा की तरह लोग दो समूहों में बंटे हुए हैं: गुलाम और आज़ाद आदमी। जो कोई भी अपने दिन का दो-तिहाई हिस्सा खुद के लिए नहीं निकालता, वह गुलाम है, चाहे वह कोई भी हो, राजनेता, व्यापारी, अधिकारी या विद्वान।"
32.mov

@csukuangfj csukuangfj merged commit 6982b86 into k2-fsa:master Jun 20, 2025
14 of 220 checks passed
@csukuangfj csukuangfj deleted the kokoro-multi-lang branch June 20, 2025 03:22
@sitatec

sitatec commented Jul 7, 2025

Copy link
Copy Markdown

Hi @csukuangfj, Thanks for the great work.
All the Chinese examples above are mixed with English, can I also use Chinese only e.g: --kokoro-lang=zh?

It would be helpful if we could load the multilingual model without specifying language and provide a lang parameter at inference to the Generate function. This would enable switching language without reloading the model. I don't know if this is possible with other languages, but with dart it isn't.

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

@sitatec

please see #2303

@sitatec

sitatec commented Jul 8, 2025

Copy link
Copy Markdown

@csukuangfj The pull request you linked is the one we commenting on right now and I have already checked it.

My request was to be able to do this in dart:

  final kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig(
    model: model,
    voices: voices,
    tokens: tokens,
    dataDir: dataDir,
    lengthScale: 1 / speed,
    dictDir: dictDir,
    // Initialize without lexicon or lang
  );
  // Create config...
  final tts = sherpa_onnx.OfflineTts(config);
 
  // Then generate in english
  final audio = tts.generate(text: text, sid: sid, speed: speed, lang="en-us");

  // Later generate in French
  final audio = tts.generate(text: text, sid: sid, speed: speed, lang="fr");

  // Later generate in Chinese
  final audio = tts.generate(text: text, sid: sid, speed: speed, lang="zh");

Currently whenever I want to switch from english to french, I need to reinitialized Kokoro right?

@csukuangfj

csukuangfj commented Jul 9, 2025

Copy link
Copy Markdown
Collaborator Author

Currently whenever I want to switch from english to french, I need to reinitialized Kokoro right?

Yes, you are right. The design of the TTS class supports many different models but not all models are multi-lingual.

The interface you proposed is great, but it is difficult to change the code to support it.


How about embedding the language info inside the text, e.g., if the text is hello world, you use

  • For English, en-us||hello world
  • For French, fr||Bonjour le monde
  • For Chinese, zh||你好世界.

If you don't specify anything with ||, then it defaults to using the language used to initialize the TTS object.

@sitatec

sitatec commented Jul 9, 2025

Copy link
Copy Markdown

That can work without changing the API. I suppose it will require a lot of work to change the api to provide language to the generate method even if we are still required to provide language at initialization?

Something else we can do is to just pass the voice(sid) to the generate method, and check language of the voice on c/c++ side. This will work for models like kokoro because the voices are language-specific.

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

Something else we can do is to just pass the voice(sid) to the generate method, and check language of the voice on c/c++ side. This will work for models like kokoro because the voices are language-specific.

A voice can speak different languages. For instance, someone may want synthesize Chinese in a British accent.

@sitatec

sitatec commented Jul 9, 2025

Copy link
Copy Markdown

The fr||Bonjour le monde option seems to be the way for now. But there are some very very rare edge cases where the user input may start with or contain fr||..., zh||..., etc.


Off topic, but still wanted to ask:

I saw that you have started integrating Nvidia's Canary STT model. When will the dart api for it be available? I would like to use the canary-180m-flash model in Dart.

Thanks again for all the hard work.

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

When will the dart api for it be available? I would like to use the canary-180m-flash model in Dart

Already supported. Pleast check the latest version.

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

But there are some very very rare edge cases where the user input may start with or contain fr||..., zh||..., etc.

Yes, you are right. We can select a different string other than ||.

@sitatec

sitatec commented Jul 10, 2025

Copy link
Copy Markdown

Already supported. Pleast check the latest version.

Waou, thanks for the quick action.


Yes, you are right. We can select a different string other than ||.

A common pattern in multilingual gen AI is <lang-code>Content... e.g: <en>This is an english sentence.... But me personally I prefer using <[en]> or <|en|> because they are less likely to be in text that need to be transcribed but <> and <<>> are common in some languages like french.

Also, if the text to be synthesized content html or xml tags e.g: "The html element to add a new line is <br>" or "<fr> is the xml tag used to configure...". That's why I prefer <[en]> or <|en|>. Personally I used <[en]> in one of my project but both <[en]> and <|en|> or similar can work.

What do you think?

@ctop007

ctop007 commented Aug 9, 2025

Copy link
Copy Markdown

@csukuangfj
Hi,First of all, I’d like to say that this library has been a huge help to my work, and I truly appreciate all the effort you’ve put into developing and maintaining it.

I noticed that the Kokoro-82M model on Hugging Face includes Japanese voices.
Could you please let me know how I can configure my Kokoro setup to successfully generate Japanese TTS audio?

Thank you very much for your time and support!

--
voices:https://huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

@csukuangfj Hi,First of all, I’d like to say that this library has been a huge help to my work, and I truly appreciate all the effort you’ve put into developing and maintaining it.

I noticed that the Kokoro-82M model on Hugging Face includes Japanese voices. Could you please let me know how I can configure my Kokoro setup to successfully generate Japanese TTS audio?

Thank you very much for your time and support!

-- voices:https://huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md

The C++ frontend for converting Japanese text into token IDs is the main issue.

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

I noticed that the Kokoro-82M model on Hugging Face includes Japanese voices

The voice means accent.

You can let a Japanese person speak English, Chinese, or whatever, with a Japanese accent.

@ctop007

ctop007 commented Aug 9, 2025

Copy link
Copy Markdown

I noticed that the Kokoro-82M model on Hugging Face includes Japanese voices

The voice means accent.

You can let a Japanese person speak English, Chinese, or whatever, with a Japanese accent.

Thanks for the clarification! I see, so those “Japanese voices” refer to accent styles rather than actual Japanese language support.

May I ask if Kokoro currently supports generating TTS in Japanese (native Japanese text input)?
If not, could you recommend any open-source TTS models—Kokoro-based or otherwise—that can generate natural Japanese speech?
Also, are there any plans to provide a Japanese TTS model in sherpa-onnx in the future?

Thanks again for your help and for taking the time to explain this!

@csukuangfj

Copy link
Copy Markdown
Collaborator Author

could you recommend any open-source TTS models—Kokoro-based or otherwise—that can generate natural Japanese speech?

Please see https://github.com/hexgrad/kokoro
and
https://github.com/hexgrad/misaki/blob/main/misaki/ja.py


Also, are there any plans to provide a Japanese TTS model in sherpa-onnx in the future?

Sorry, not in the near future.

@jasonmiller93

Copy link
Copy Markdown

flutter app crashes when generating with kokoro, multi language, why? any fixes?

model.dart

import "dart:io";
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
import 'package:wave_studio_pro/Helpers/Utils.dart';

Future<sherpa_onnx.OfflineTts> createOfflineTts() async {

  await copyAllAssetFiles();

  sherpa_onnx.initBindings();


  String modelDir = 'kokoro-en';
  String modelName = 'model.onnx';
  String voices = 'voices.bin';
  String ruleFsts = '';
  String ruleFars = '';
  String lexicon = '';
  String dataDir = 'kokoro-en/espeak-ng-data';
  String dictDir = '';


  if (modelName == '') {
    throw Exception(
        'You are supposed to select a model by changing the code before you run the app');
  }

  final Directory directory = await getApplicationCacheDirectory();
  modelName = p.join(directory.path, modelDir, modelName);

  if (ruleFsts != '') {
    final all = ruleFsts.split(',');
    var tmp = <String>[];
    for (final f in all) {
      tmp.add(p.join(directory.path, f));
    }
    ruleFsts = tmp.join(',');
  }

  if (ruleFars != '') {
    final all = ruleFars.split(',');
    var tmp = <String>[];
    for (final f in all) {
      tmp.add(p.join(directory.path, f));
    }
    ruleFars = tmp.join(',');
  }

  if (lexicon != '') {
    lexicon = p.join(directory.path, modelDir, lexicon);
  }

  if (dataDir != '') {
    dataDir = p.join(directory.path, dataDir);
  }

  if (dictDir != '') {
    dictDir = p.join(directory.path, dictDir);
  }

  final tokens = p.join(directory.path, modelDir, 'tokens.txt');
  if (voices != '') {
    voices = p.join(directory.path, modelDir, voices);
  }

  late final sherpa_onnx.OfflineTtsVitsModelConfig vits;
  late final sherpa_onnx.OfflineTtsKokoroModelConfig kokoro;

  if (voices != '') {
    vits = sherpa_onnx.OfflineTtsVitsModelConfig();
    kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig(
      model: modelName,
      voices: voices,
      tokens: tokens,
      dataDir: dataDir,
      dictDir: dictDir,
      lang: 'multi',  // Set multi-language mode for kokoro
      lengthScale: 1.0
    );
  } else {
    vits = sherpa_onnx.OfflineTtsVitsModelConfig(
      model: modelName,
      lexicon: lexicon,
      tokens: tokens,
      dataDir: dataDir,
      dictDir: dictDir,
    );

    kokoro = sherpa_onnx.OfflineTtsKokoroModelConfig();
  }

  final modelConfig = sherpa_onnx.OfflineTtsModelConfig(
    vits: vits,
    kokoro: kokoro,
    numThreads: 2,
    debug: true,
    provider: 'cpu',
  );

  final config = sherpa_onnx.OfflineTtsConfig(
    model: modelConfig,
    ruleFsts: ruleFsts,
    ruleFars: ruleFars,
    maxNumSenetences: 1,
  );


  final tts = sherpa_onnx.OfflineTts(config);
  print('tts created successfully');

  return tts;
}


Warning: Lexicon file not found for language: multi
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\c-api\c-api.cc:GetOfflineTtsConfig:1247 OfflineTtsConfig(model=OfflineTtsModelConfig(vits=OfflineTtsVitsModelConfig(model="", lexicon="", tokens="", data_dir="", dict_dir="", noise_scale=0.667, noise_scale_w=0.8, length_scale=1), matcha=OfflineTtsMatchaModelConfig(acoustic_model="", vocoder="", lexicon="", tokens="", data_dir="", dict_dir="", noise_scale=0.667, length_scale=1), kokoro=OfflineTtsKokoroModelConfig(model="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\suno_multi_lang\suno_multi_lang.onnx", voices="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\suno_multi_lang\voices.bin", tokens="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\suno_multi_lang\tokens.txt", lexicon="", data_dir="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\suno_multi_lang\espeak-ng-data", dict_dir="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\suno_multi_lang\dict", length_scale=1, lang="multi"), zipvoice=OfflineTtsZipvoiceModelConfig(tokens="", text_model="", flow_matching_model="", vocoder="", data_dir="", pinyin_dict="", feat_scale=0.1, t_shift=0.5, target_rms=0.1, guidance_scale=1), kitten=OfflineTtsKittenModelConfig(model="", voices="", tokens="", data_dir="", length_scale=1), num_threads=2, debug=True, provider="cpu"), rule_fsts="", rule_fars="", max_num_sentences=1, silence_scale=0.2)

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-tts-kokoro-model.cc:Init:136 ---kokoro model---
id2speaker=0->af_alloy,1->af_aoede,2->af_bella,3->af_heart,4->af_jessica,5->af_kore,6->af_nicole,7->af_nova,8->af_river,9->af_sarah,10->af_sky,11->am_adam,12->am_echo,13->am_eric,14->am_fenrir,15->am_liam,16->am_michael,17->am_onyx,18->am_puck,19->am_santa,20->bf_alice,21->bf_emma,22->bf_isabella,23->bf_lily,24->bm_daniel,25->bm_fable,26->bm_george,27->bm_lewis,28->ef_dora,29->em_alex,30->ff_siwis,31->hf_alpha,32->hf_beta,33->hm_omega,34->hm_psi,35->if_sara,36->im_nicola,37->jf_alpha,38->jf_gongitsune,39->jf_nezumi,40->jf_tebukuro,41->jm_kumo,42->pf_dora,43->pm_alex,44->pm_santa,45->zf_xiaobei,46->zf_xiaoni,47->zf_xiaoxiao,48->zf_xiaoyi,49->zm_yunjian,50->zm_yunxi,51->zm_yunxia,52->zm_yunyang
version=2
model_type=kokoro
has_espeak=1
style_dim=510,1,256
language=multi-lang, e.g., English, Chinese
sample_rate=24000
voice=en-us
n_speakers=53
speaker2id=af_alloy->0,af_aoede->1,af_bella->2,af_heart->3,af_jessica->4,af_kore->5,af_nicole->6,af_nova->7,af_river->8,af_sarah->9,af_sky->10,am_adam->11,am_echo->12,am_eric->13,am_fenrir->14,am_liam->15,am_michael->16,am_onyx->17,am_puck->18,am_santa->19,bf_alice->20,bf_emma->21,bf_isabella->22,bf_lily->23,bm_daniel->24,bm_fable->25,bm_george->26,bm_lewis->27,ef_dora->28,em_alex->29,ff_siwis->30,hf_alpha->31,hf_beta->32,hm_omega->33,hm_psi->34,if_sara->35,im_nicola->36,jf_alpha->37,jf_gongitsune->38,jf_nezumi->39,jf_tebukuro->40,jm_kumo->41,pf_dora->42,pm_alex->43,pm_santa->44,zf_xiaobei->45,zf_xiaoni->46,zf_xiaoxiao->47,zf_xiaoyi->48,zm_yunjian->49,zm_yunxi->50,zm_yunxia->51,zm_yunyang->52
speaker_names=af_alloy,af_aoede,af_bella,af_heart,af_jessica,af_kore,af_nicole,af_nova,af_river,af_sarah,af_sky,am_adam,am_echo,am_eric,am_fenrir,am_liam,am_michael,am_onyx,am_puck,am_santa,bf_alice,bf_emma,bf_isabella,bf_lily,bm_daniel,bm_fable,bm_george,bm_lewis,ef_dora,em_alex,ff_siwis,hf_alpha,hf_beta,hm_omega,hm_psi,if_sara,im_nicola,jf_alpha,jf_gongitsune,jf_nezumi,jf_tebukuro,jm_kumo,pf_dora,pm_alex,pm_santa,zf_xiaobei,zf_xiaoni,zf_xiaoxiao,zf_xiaoyi,zm_yunjian,zm_yunxi,zm_yunxia,zm_yunyang
model_url=https://github.com/thewh1teagle/kokoro-onnx/releases/tag/model-files
see_also=https://huggingface.co/spaces/hexgrad/Kokoro-TTS
see_also_2=https://huggingface.co/hexgrad/Kokoro-82M
maintainer=k2-fsa
comment=This is Kokoro v1.0, a multilingual TTS model, supporting English, Chinese, French, Japanese etc.
----------input names----------
0 tokens
1 style
2 speed
----------output names----------
0 audio
1 onnx::Shape_3623


D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-tts-kokoro-model.cc:Init:161 
0->af_alloy, 1->af_aoede, 2->af_bella, 3->af_heart, 4->af_jessica, 5->af_kore, 6->af_nicole, 7->af_nova, 8->af_river, 9->af_sarah, 10->af_sky, 11->am_adam, 12->am_echo, 13->am_eric, 14->am_fenrir, 15->am_liam, 16->am_michael, 17->am_onyx, 18->am_puck, 19->am_santa, 20->bf_alice, 21->bf_emma, 22->bf_isabella, 23->bf_lily, 24->bm_daniel, 25->bm_fable, 26->bm_george, 27->bm_lewis, 28->ef_dora, 29->em_alex, 30->ff_siwis, 31->hf_alpha, 32->hf_beta, 33->hm_omega, 34->hm_psi, 35->if_sara, 36->im_nicola, 37->jf_alpha, 38->jf_gongitsune, 39->jf_nezumi, 40->jf_tebukuro, 41->jm_kumo, 42->pf_dora, 43->pm_alex, 44->pm_santa, 45->zf_xiaobei, 46->zf_xiaoni, 47->zf_xiaoxiao, 48->zf_xiaoyi, 49->zm_yunjian, 50->zm_yunxi, 51->zm_yunxia, 52->zm_yunyang, 


D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:192 Raw text: गूगल की यह सेवा, जो निःशुल्क उपलब्ध है, शब्दों, वाक्यांशों और वेब पेजों का अंग्रेजी तथा अन्य भाषाओं में तुरन्त अनुवाद करती है।
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:206 In bytes (hex):
e0 a4 97 e0 a5 82 e0 a4 97 e0 a4 b2 20 e0 a4 95 e0 a5 80 20 e0 a4 af e0 a4 b9 20 e0 a4 b8 e0 a5 87 e0 a4 b5 e0 a4 be 2c 20 e0 a4 9c e0 a5 8b 20 e0 a4 a8 e0 a4 bf e0 a4 83 e0 a4 b6 e0 a5 81 e0 a4 b2 e0 a5 8d e0 a4 95 20 e0 a4 89 e0 a4 aa e0 a4 b2 e0 a4 ac e0 a5 8d e0 a4 a7 20 e0 a4 b9 e0 a5 88 2c 20 e0 a4 b6 e0 a4 ac e0 a5 8d e0 a4 a6 e0 a5 8b e0 a4 82 2c 20 e0 a4 b5 e0 a4 be e0 a4 95 e0 a5 8d e0 a4 af e0 a4 be e0 a4 82 e0 a4 b6 e0 a5 8b e0 a4 82 20 e0 a4 94 e0 a4 b0 20 e0 a4 b5 e0 a5 87 e0 a4 ac 20 e0 a4 aa e0 a5 87 e0 a4 9c e0 a5 8b e0 a4 82 20 e0 a4 95 e0 a4 be 20 e0 a4 85 e0 a4 82 e0 a4 97 e0 a5 8d e0 a4 b0 e0 a5 87 e0 a4 9c e0 a5 80 20 e0 a4 a4 e0 a4 a5 e0 a4 be 20 e0 a4 85 e0 a4 a8 e0 a5 8d e0 a4 af 20 e0 a4 ad e0 a4 be e0 a4 b7 e0 a4 be e0 a4 93 e0 a4 82 20 e0 a4 ae e0 a5 87 e0 a4 82 20 e0 a4 a4 e0 a5 81 e0 a4 b0 e0 a4 a8 e0 a5 8d e0 a4 a4 20 e0 a4 85 e0 a4 a8 e0 a5 81 e0 a4 b5 e0 a4 be e0 a4 a6 20 e0 a4 95 e0 a4 b0 e0 a4 a4 e0 a5 80 20 e0 a4 b9 e0 a5 88 e0 a5 a4 

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:76 After converting to lowercase:
गूगल की यह सेवा, जो निःशुल्क उपलब्ध है, शब्दों, वाक्यांशों और वेब पेजों का अंग्रेजी तथा अन्य भाषाओं में तुरन्त अनुवाद करती है।
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:90 After replacing punctuations and merging spaces:
गूगल की यह सेवा, जो निःशुल्क उपलब्ध है, शब्दों, वाक्यांशों और वेब पेजों का अंग्रेजी तथा अन्य भाषाओं में तुरन्त अनुवाद करती है।
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:127 Non-Chinese: गूगल की यह सेवा, जो निःशुल्क उपलब्ध है, शब्दों, वाक्यांशों और वेब पेजों का अंग्रेजी तथा अन्य भाषाओं में तुरन्त अनुवाद करती है।
Lost connection to device.

@csukuangfj

Copy link
Copy Markdown
Collaborator Author
  lang: 'multi',  // Set multi-language mode for kokoro

what is multi here?

@rodgerz-star

Copy link
Copy Markdown

kokoro crash when chinese

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: kokoro at line 1:kokoro k ˈ O k ə ɹ O. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: misaki at line 2:misaki m i s ˈ ɑ k i. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: aahing at line 3:aahing ˈ ɑ ː ɹ ɪ ŋ. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: aaron at line 5:aaron ˈ ɛ ː ɹ ə n. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: aaronic at line 6:aaronic ɛ ː ɹ ˈ ɒ n ɪ k. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: ab at line 7:ab ˈ a b. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: abactor at line 8:abactor ə b ˈ a k t ə. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: abaddon at line 9:abaddon ə b ˈ a d ᵊ n. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: abalienating at line 10:abalienating ə b ˈ A l ɪ ə n ˌ A t ɪ ŋ. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:OfflineTtsKokoroImpl:46 rule fst: C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\date-zh.fst
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:OfflineTtsKokoroImpl:46 rule fst: C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\number-zh.fst
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:OfflineTtsKokoroImpl:46 rule fst: C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\phone-zh.fst
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:192 Raw text: 谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:206 In bytes (hex):
e8 b0 b7 e6 ad 8c e7 9a 84 e8 bf 99 e9 a1 b9 e5 85 8d e8 b4 b9 e6 9c 8d e5 8a a1 e5 8f af e4 bb a5 e5 8d b3 e6 97 b6 e5 9c a8 e8 8b b1 e8 af ad e5 92 8c 20 31 30 30 20 e5 a4 9a e7 a7 8d e5 85 b6 e4 bb 96 e8 af ad e8 a8 80 e4 b9 8b e9 97 b4 e7 bf bb e8 af 91 e5 8d 95 e8 af 8d e3 80 81 e7 9f ad e8 af ad e5 92 8c e7 bd 91 e9 a1 b5 e3 80 82

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:217 After normalizing: 谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:217 After normalizing: 谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:217 After normalizing: 谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:76 After converting to lowercase:
谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:90 After replacing punctuations and merging spaces:
谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词,短语和网页.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:122 Chinese: 谷歌的这项免费服务可以即时在英语和
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertChineseToTokenIDs:219 After jieba processing:
谷歌_的_这项_免费_服务_可以_即时_在_英语_和
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertChineseToTokenIDs:254
0 53 63 169 53 140 171 62 140 23 140 173 77 52 43 173 112 55 52 86 169 56 48 47 51 173 48 63 172 63 173 53 162 140 169 51 169 21 51 172 130 101 172 20 43 51 173 51 171 112 67 169 66 140 172 0

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:127 Non-Chinese:
Application finished.

@rodgerz-star

Copy link
Copy Markdown

try to generate audio using kokoro v1.0

text to generate
谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。

dont know why, engine crashes immediately all the time

@rodgerz-star

Copy link
Copy Markdown
Performing hot restart...
Syncing files to device Windows...
Restarted application in 1,287ms.
media_kit: NativeReferenceHolder: Located 3049732190304
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\c-api\c-api.cc:GetOfflineTtsConfig:1252 OfflineTtsConfig(model=OfflineTtsModelConfig(vits=OfflineTtsVitsModelConfig(model="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\ashan_ta_in\ashan_ta_in.onnx", lexicon="", tokens="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\ashan_ta_in\tokens.txt", data_dir="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\ashan_ta_in\espeak-ng-data", dict_dir="", noise_scale=0.667, noise_scale_w=0.8, length_scale=1), matcha=OfflineTtsMatchaModelConfig(acoustic_model="", vocoder="", lexicon="", tokens="", data_dir="", dict_dir="", noise_scale=0.667, length_scale=1), kokoro=OfflineTtsKokoroModelConfig(model="", voices="", tokens="", lexicon="", data_dir="", dict_dir="", length_scale=1, lang=""), zipvoice=OfflineTtsZipvoiceModelConfig(tokens="", text_model="", flow_matching_model="", vocoder="", data_dir="", pinyin_dict="", feat_scale=0.1, t_shift=0.5, target_rms=0.1, guidance_scale=1), kitten=OfflineTtsKittenModelConfig(model="", voices="", tokens="", data_dir="", length_scale=1), num_threads=2, debug=True, provider="cpu"), rule_fsts="", rule_fars="", max_num_sentences=1, silence_scale=0.2)

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-tts-vits-model.cc:Init:151 ---vits model---
model_type=vits
url=https://huggingface.co/facebook/mms-tts/tree/main
comment=mms
frontend=characters
add_blank=1
language=unknown
n_speakers=0
sample_rate=16000
----------input names----------
0 x
1 x_length
2 noise_scale
3 length_scale
4 noise_scale_w
----------output names----------
0 y


Starting audio generation with 1 segments
Processing segment 0: {voice: one_wave, text: 谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。, speed: 1.0, sid: 45, language: zh, index: 0}
Processing TTS segment: voice=one_wave, text=谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。, speed=1.0, sid=45
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\c-api\c-api.cc:GetOfflineTtsConfig:1252 OfflineTtsConfig(model=OfflineTtsModelConfig(vits=OfflineTtsVitsModelConfig(model="", lexicon="", tokens="", data_dir="", dict_dir="", noise_scale=0.667, noise_scale_w=0.8, length_scale=1), matcha=OfflineTtsMatchaModelConfig(acoustic_model="", vocoder="", lexicon="", tokens="", data_dir="", dict_dir="", noise_scale=0.667, length_scale=1), kokoro=OfflineTtsKokoroModelConfig(model="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\one_wave.onnx", voices="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\voices.bin", tokens="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\tokens.txt", lexicon="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\lexicon-us-en.txt,C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\lexicon-gb-en.txt,C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\lexicon-zh.txt", data_dir="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\espeak-ng-data", dict_dir="C:\Users\admin\AppData\Local\uk.nexusdev.ttsstudio\wave_studio_pro\voices\one_wave\dict", length_scale=1, lang="zh"), zipvoice=OfflineTtsZipvoiceModelConfig(tokens="", text_model="", flow_matching_model="", vocoder="", data_dir="", pinyin_dict="", feat_scale=0.1, t_shift=0.5, target_rms=0.1, guidance_scale=1), kitten=OfflineTtsKittenModelConfig(model="", voices="", tokens="", data_dir="", length_scale=1), num_threads=2, debug=True, provider="cpu"), rule_fsts="C:/Users/admin/AppData/Local/uk.nexusdev.ttsstudio/wave_studio_pro/voices/one_wave/date-zh.fst,C:/Users/admin/AppData/Local/uk.nexusdev.ttsstudio/wave_studio_pro/voices/one_wave/number-zh.fst,C:/Users/admin/AppData/Local/uk.nexusdev.ttsstudio/wave_studio_pro/voices/one_wave/phone-zh.fst", rule_fars="", max_num_sentences=1, silence_scale=0.2)

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-tts-kokoro-model.cc:Init:136 ---kokoro model---
id2speaker=0->af_alloy,1->af_aoede,2->af_bella,3->af_heart,4->af_jessica,5->af_kore,6->af_nicole,7->af_nova,8->af_river,9->af_sarah,10->af_sky,11->am_adam,12->am_echo,13->am_eric,14->am_fenrir,15->am_liam,16->am_michael,17->am_onyx,18->am_puck,19->am_santa,20->bf_alice,21->bf_emma,22->bf_isabella,23->bf_lily,24->bm_daniel,25->bm_fable,26->bm_george,27->bm_lewis,28->ef_dora,29->em_alex,30->ff_siwis,31->hf_alpha,32->hf_beta,33->hm_omega,34->hm_psi,35->if_sara,36->im_nicola,37->jf_alpha,38->jf_gongitsune,39->jf_nezumi,40->jf_tebukuro,41->jm_kumo,42->pf_dora,43->pm_alex,44->pm_santa,45->zf_xiaobei,46->zf_xiaoni,47->zf_xiaoxiao,48->zf_xiaoyi,49->zm_yunjian,50->zm_yunxi,51->zm_yunxia,52->zm_yunyang
version=2
model_type=kokoro
has_espeak=1
style_dim=510,1,256
language=multi-lang, e.g., English, Chinese
sample_rate=24000
voice=en-us
n_speakers=53
speaker2id=af_alloy->0,af_aoede->1,af_bella->2,af_heart->3,af_jessica->4,af_kore->5,af_nicole->6,af_nova->7,af_river->8,af_sarah->9,af_sky->10,am_adam->11,am_echo->12,am_eric->13,am_fenrir->14,am_liam->15,am_michael->16,am_onyx->17,am_puck->18,am_santa->19,bf_alice->20,bf_emma->21,bf_isabella->22,bf_lily->23,bm_daniel->24,bm_fable->25,bm_george->26,bm_lewis->27,ef_dora->28,em_alex->29,ff_siwis->30,hf_alpha->31,hf_beta->32,hm_omega->33,hm_psi->34,if_sara->35,im_nicola->36,jf_alpha->37,jf_gongitsune->38,jf_nezumi->39,jf_tebukuro->40,jm_kumo->41,pf_dora->42,pm_alex->43,pm_santa->44,zf_xiaobei->45,zf_xiaoni->46,zf_xiaoxiao->47,zf_xiaoyi->48,zm_yunjian->49,zm_yunxi->50,zm_yunxia->51,zm_yunyang->52
speaker_names=af_alloy,af_aoede,af_bella,af_heart,af_jessica,af_kore,af_nicole,af_nova,af_river,af_sarah,af_sky,am_adam,am_echo,am_eric,am_fenrir,am_liam,am_michael,am_onyx,am_puck,am_santa,bf_alice,bf_emma,bf_isabella,bf_lily,bm_daniel,bm_fable,bm_george,bm_lewis,ef_dora,em_alex,ff_siwis,hf_alpha,hf_beta,hm_omega,hm_psi,if_sara,im_nicola,jf_alpha,jf_gongitsune,jf_nezumi,jf_tebukuro,jm_kumo,pf_dora,pm_alex,pm_santa,zf_xiaobei,zf_xiaoni,zf_xiaoxiao,zf_xiaoyi,zm_yunjian,zm_yunxi,zm_yunxia,zm_yunyang
model_url=https://github.com/thewh1teagle/kokoro-onnx/releases/tag/model-files
see_also=https://huggingface.co/spaces/hexgrad/Kokoro-TTS
see_also_2=https://huggingface.co/hexgrad/Kokoro-82M
maintainer=k2-fsa
comment=This is Kokoro v1.0, a multilingual TTS model, supporting English, Chinese, French, Japanese etc.
----------input names----------
0 tokens
1 style
2 speed
----------output names----------
0 audio
1 onnx::Shape_3623


D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\offline-tts-kokoro-model.cc:Init:161 
0->af_alloy, 1->af_aoede, 2->af_bella, 3->af_heart, 4->af_jessica, 5->af_kore, 6->af_nicole, 7->af_nova, 8->af_river, 9->af_sarah, 10->af_sky, 11->am_adam, 12->am_echo, 13->am_eric, 14->am_fenrir, 15->am_liam, 16->am_michael, 17->am_onyx, 18->am_puck, 19->am_santa, 20->bf_alice, 21->bf_emma, 22->bf_isabella, 23->bf_lily, 24->bm_daniel, 25->bm_fable, 26->bm_george, 27->bm_lewis, 28->ef_dora, 29->em_alex, 30->ff_siwis, 31->hf_alpha, 32->hf_beta, 33->hm_omega, 34->hm_psi, 35->if_sara, 36->im_nicola, 37->jf_alpha, 38->jf_gongitsune, 39->jf_nezumi, 40->jf_tebukuro, 41->jm_kumo, 42->pf_dora, 43->pm_alex, 44->pm_santa, 45->zf_xiaobei, 46->zf_xiaoni, 47->zf_xiaoxiao, 48->zf_xiaoyi, 49->zm_yunjian, 50->zm_yunxi, 51->zm_yunxia, 52->zm_yunyang, 


D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: kokoro at line 1:kokoro k ˈ O k ə ɹ O. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: misaki at line 2:misaki m i s ˈ ɑ k i. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: aahing at line 3:aahing ˈ ɑ ː ɹ ɪ ŋ. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: aaron at line 5:aaron ˈ ɛ ː ɹ ə n. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: aaronic at line 6:aaronic ɛ ː ɹ ˈ ɒ n ɪ k. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: ab at line 7:ab ˈ a b. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: abactor at line 8:abactor ə b ˈ a k t ə. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: abaddon at line 9:abaddon ə b ˈ a d ᵊ n. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:InitLexicon:490 Duplicated word: abalienating at line 10:abalienating ə b ˈ A l ɪ ə n ˌ A t ɪ ŋ. Ignore it.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:OfflineTtsKokoroImpl:46 rule fst: C:/Users/admin/AppData/Local/uk.nexusdev.ttsstudio/wave_studio_pro/voices/one_wave/date-zh.fst
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:OfflineTtsKokoroImpl:46 rule fst: C:/Users/admin/AppData/Local/uk.nexusdev.ttsstudio/wave_studio_pro/voices/one_wave/number-zh.fst
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:OfflineTtsKokoroImpl:46 rule fst: C:/Users/admin/AppData/Local/uk.nexusdev.ttsstudio/wave_studio_pro/voices/one_wave/phone-zh.fst
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:192 Raw text: 谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:206 In bytes (hex):
e8 b0 b7 e6 ad 8c e7 9a 84 e8 bf 99 e9 a1 b9 e5 85 8d e8 b4 b9 e6 9c 8d e5 8a a1 e5 8f af e4 bb a5 e5 8d b3 e6 97 b6 e5 9c a8 e8 8b b1 e8 af ad e5 92 8c 20 31 30 30 20 e5 a4 9a e7 a7 8d e5 85 b6 e4 bb 96 e8 af ad e8 a8 80 e4 b9 8b e9 97 b4 e7 bf bb e8 af 91 e5 8d 95 e8 af 8d e3 80 81 e7 9f ad e8 af ad e5 92 8c e7 bd 91 e9 a1 b5 e3 80 82 

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:217 After normalizing: 谷歌的这项免费服务可以即时在英语和 100 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:217 After normalizing: 谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx/csrc/offline-tts-kokoro-impl.h:Generate:217 After normalizing: 谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:76 After converting to lowercase:
谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词、短语和网页。
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:90 After replacing punctuations and merging spaces:
谷歌的这项免费服务可以即时在英语和 一百 多种其他语言之间翻译单词,短语和网页.
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:122 Chinese: 谷歌的这项免费服务可以即时在英语和
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertChineseToTokenIDs:219 After jieba processing:
谷歌_的_这项_免费_服务_可以_即时_在_英语_和
D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertChineseToTokenIDs:254 
0 53 63 169 53 140 171 62 140 23 140 173 77 52 43 173 112 55 52 86 169 56 48 47 51 173 48 63 172 63 173 53 162 140 169 51 169 21 51 172 130 101 172 20 43 51 173 51 171 112 67 169 66 140 172 0

D:\a\sherpa-onnx\sherpa-onnx\sherpa-onnx\csrc\kokoro-multi-lang-lexicon.cc:ConvertTextToTokenIds:127 Non-Chinese:  
Lost connection to device.
../../runtime/bin/thread.cc: 20: error: Could not start thread dart:io ReadFile: 13 (The data is invalid.
)
version=3.9.2 (stable) (Wed Aug 27 03:49:40 2025 -0700) on "windows_x64"
pid=9504, thread=12168, isolate_group=main(0000016868317410), isolate=main(000001686831F4D0)
os=windows, arch=x64, comp=no, sim=no
isolate_instructions=1686ab20000, vm_instructions=7ff778819b00
fp=3e5cdfe4e0, sp=3e5cdfe498, pc=7ff778acca93
  pc 0x00007ff778acca93 fp 0x0000003e5cdfe4e0 Dart_DetectNullSafety+0x2aaa23
-- End of DumpStackTrace
  pc 0x0000000000000000 fp 0x0000003e5cdfeb70 sp 0x0000000000000000 [Stub] CallAutoScopeNative
  pc 0x000001686ac04ce2 fp 0x0000003e5cdfebb8 sp 0x0000003e5cdfeb80 [Unoptimized] _NativeSocket@15069316._nativeRead@15069316
  pc 0x000001686ac04552 fp 0x0000003e5cdfec28 sp 0x0000003e5cdfebc8 [Unoptimized] _NativeSocket@15069316.read
  pc 0x000001686ac04082 fp 0x0000003e5cdfeca0 sp 0x0000003e5cdfec38 [Unoptimized] _RawSocket@15069316.read
  pc 0x000001686abe3539 fp 0x0000003e5cdfece8 sp 0x0000003e5cdfecb0 [Unoptimized] _Socket@15069316._onData@15069316
  pc 0x000001686abe38c3 fp 0x0000003e5cdfed28 sp 0x0000003e5cdfecf8 [Unoptimized] _Socket@15069316._onData@15069316
  pc 0x00000168770b072f fp 0x0000003e5cdfedc8 sp 0x0000003e5cdfed38 [Optimized] _rootRunUnary@5048458
  pc 0x00000168770ae932 fp 0x0000003e5cdfee20 sp 0x0000003e5cdfedd8 [Optimized] _rootRunUnary@5048458
  pc 0x000001686abce406 fp 0x0000003e5cdfeeb8 sp 0x0000003e5cdfee30 [Unoptimized] _CustomZone@5048458.runUnary
  pc 0x000001686abce57a fp 0x0000003e5cdfef40 sp 0x0000003e5cdfeec8 [Unoptimized] _CustomZone@5048458.runUnaryGuarded
  pc 0x000001687522e3fb fp 0x0000003e5cdfef90 sp 0x0000003e5cdfef50 [Optimized] _BufferingStreamSubscription@5048458._sendData@5048458
  pc 0x00000168770b0286 fp 0x0000003e5cdfefd8 sp 0x0000003e5cdfefa0 [Optimized] _BufferingStreamSubscription@5048458._add@5048458
  pc 0x000001686abcefec fp 0x0000003e5cdff018 sp 0x0000003e5cdfefe8 [Unoptimized] _SyncStreamController@5048458._sendData@5048458
  pc 0x000001686abd02cb fp 0x0000003e5cdff058 sp 0x0000003e5cdff028 [Unoptimized] _StreamController@5048458._add@5048458
  pc 0x000001686abd072a fp 0x0000003e5cdff098 sp 0x0000003e5cdff068 [Unoptimized] _StreamController@5048458.add
  pc 0x000001686abd0845 fp 0x0000003e5cdff0d8 sp 0x0000003e5cdff0a8 [Unoptimized] new _RawSocket@15069316..<anonymous closure>
  pc 0x000001686ac47423 fp 0x0000003e5cdff130 sp 0x0000003e5cdff0e8 [Unoptimized] _NativeSocket@15069316.issueReadEvent.issue
  pc 0x00000168770b0458 fp 0x0000003e5cdff170 sp 0x0000003e5cdff140 [Optimized] _microtaskLoop@5048458
  pc 0x000001686ad6a83f fp 0x0000003e5cdff1b0 sp 0x0000003e5cdff180 [Unoptimized] _startMicrotaskLoop@5048458
  pc 0x000001686ad6aaa3 fp 0x0000003e5cdff1d8 sp 0x0000003e5cdff1c0 [Unoptimized] _startMicrotaskLoop@5048458
  pc 0x000001686abc1e25 fp 0x0000003e5cdff218 sp 0x0000003e5cdff1e8 [Unoptimized] _runPendingImmediateCallback@1026248
  pc 0x000001686ad92853 fp 0x0000003e5cdff258 sp 0x0000003e5cdff228 [Unoptimized] _RawReceivePort@1026248._handleMessage@1026248
  pc 0x000001686b2830df fp 0x0000003e5cdff380 sp 0x0000003e5cdff268 [Stub] InvokeDartCode

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants