Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
sherpaonnx
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Fangjun Kuang
2025-02-10 19:05:53 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-02-10 19:05:53 +0800
Commit
ad883d44fe6366da133fdf8a065903642513c2bf
ad883d44
1 parent
d5da9430
Support specifying voice in espeak-ng for kokoro tts models. (#1836)
显示空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
10 行增加
和
5 行删除
sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc
sherpa-onnx/csrc/offline-tts-kokoro-impl.h
sherpa-onnx/csrc/offline-tts-kokoro-model-meta-data.h
sherpa-onnx/csrc/offline-tts-kokoro-model.cc
sherpa-onnx/csrc/kokoro-multi-lang-lexicon.cc
查看文件 @
ad883d4
...
...
@@ -104,7 +104,8 @@ class KokoroMultiLangLexicon::Impl {
// https://en.cppreference.com/w/cpp/regex
// https://stackoverflow.com/questions/37989081/how-to-use-unicode-range-in-c-regex
std
::
string
expr
=
"([;:,.?!'
\"
…
\\
(
\\
)“”])|([
\\
u4e00-
\\
u9fff]+)|([
\\
u0000-
\\
u007f]+)"
;
"([;:,.?!'
\"
…
\\
(
\\
)“”])|([
\\
u4e00-
\\
u9fff]+)|([äöüßÄÖÜ
\\
u0000-
\\
u007f]+"
")"
;
auto
ws
=
ToWideString
(
text
);
std
::
wstring
wexpr
=
ToWideString
(
expr
);
...
...
@@ -127,7 +128,7 @@ class KokoroMultiLangLexicon::Impl {
if
(
debug_
)
{
SHERPA_ONNX_LOGE
(
"Non-Chinese: %s"
,
ms
.
c_str
());
}
ids_vec
=
ConvertEnglishToTokenIDs
(
ms
);
ids_vec
=
ConvertEnglishToTokenIDs
(
ms
,
meta_data_
.
voice
);
}
else
{
if
(
debug_
)
{
SHERPA_ONNX_LOGE
(
"Chinese: %s"
,
ms
.
c_str
());
...
...
@@ -257,7 +258,7 @@ class KokoroMultiLangLexicon::Impl {
}
std
::
vector
<
std
::
vector
<
int32_t
>>
ConvertEnglishToTokenIDs
(
const
std
::
string
&
text
)
const
{
const
std
::
string
&
text
,
const
std
::
string
&
voice
)
const
{
std
::
vector
<
std
::
string
>
words
=
SplitUtf8
(
text
);
if
(
debug_
)
{
std
::
ostringstream
os
;
...
...
@@ -315,7 +316,7 @@ class KokoroMultiLangLexicon::Impl {
piper
::
eSpeakPhonemeConfig
config
;
config
.
voice
=
"en-us"
;
config
.
voice
=
voice
;
std
::
vector
<
std
::
vector
<
piper
::
Phoneme
>>
phonemes
;
...
...
sherpa-onnx/csrc/offline-tts-kokoro-impl.h
查看文件 @
ad883d4
...
...
@@ -221,7 +221,7 @@ class OfflineTtsKokoroImpl : public OfflineTtsImpl {
}
std
::
vector
<
TokenIDs
>
token_ids
=
frontend_
->
ConvertTextToTokenIds
(
text
,
"en-us"
);
frontend_
->
ConvertTextToTokenIds
(
text
,
meta_data
.
voice
);
if
(
token_ids
.
empty
()
||
(
token_ids
.
size
()
==
1
&&
token_ids
[
0
].
tokens
.
empty
()))
{
...
...
sherpa-onnx/csrc/offline-tts-kokoro-model-meta-data.h
查看文件 @
ad883d4
...
...
@@ -18,6 +18,8 @@ struct OfflineTtsKokoroModelMetaData {
int32_t
version
=
1
;
int32_t
has_espeak
=
1
;
int32_t
max_token_len
=
0
;
std
::
string
voice
;
};
}
// namespace sherpa_onnx
...
...
sherpa-onnx/csrc/offline-tts-kokoro-model.cc
查看文件 @
ad883d4
...
...
@@ -138,6 +138,8 @@ class OfflineTtsKokoroModel::Impl {
SHERPA_ONNX_READ_META_DATA_WITH_DEFAULT
(
meta_data_
.
version
,
"version"
,
1
);
SHERPA_ONNX_READ_META_DATA
(
meta_data_
.
num_speakers
,
"n_speakers"
);
SHERPA_ONNX_READ_META_DATA
(
meta_data_
.
has_espeak
,
"has_espeak"
);
SHERPA_ONNX_READ_META_DATA_STR_WITH_DEFAULT
(
meta_data_
.
voice
,
"voice"
,
"en-us"
);
if
(
config_
.
debug
)
{
std
::
vector
<
std
::
string
>
speaker_names
;
...
...
请
注册
或
登录
后发表评论