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-07 15:39:03 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-02-07 15:39:03 +0800
Commit
ae32dfaa56702333b70fb61ab714d7032a8e8638
ae32dfaa
1 parent
e1a88a79
Add C# API for Kokoro TTS 1.0 (#1805)
显示空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
74 行增加
和
2 行删除
.github/scripts/test-dot-net.sh
dotnet-examples/kokoro-tts/Program.cs
dotnet-examples/kokoro-tts/run-kokoro-en.sh → dotnet-examples/kokoro-tts/run-kokoro.sh
scripts/dotnet/OfflineTtsKokoroModelConfig.cs
.github/scripts/test-dot-net.sh
查看文件 @
ae32dfa
...
...
@@ -3,7 +3,7 @@
cd
dotnet-examples/
cd
./kokoro-tts
./run-kokoro
-en
.sh
./run-kokoro.sh
ls -lh
cd
../offline-tts
...
...
dotnet-examples/kokoro-tts/Program.cs
查看文件 @
ae32dfa
...
...
@@ -14,6 +14,63 @@ class OfflineTtsDemo
{
static
void
Main
(
string
[]
args
)
{
TestZhEn
();
TestEn
();
}
static
void
TestZhEn
()
{
var
config
=
new
OfflineTtsConfig
();
config
.
Model
.
Kokoro
.
Model
=
"./kokoro-multi-lang-v1_0/model.onnx"
;
config
.
Model
.
Kokoro
.
Voices
=
"./kokoro-multi-lang-v1_0/voices.bin"
;
config
.
Model
.
Kokoro
.
Tokens
=
"./kokoro-multi-lang-v1_0/tokens.txt"
;
config
.
Model
.
Kokoro
.
DataDir
=
"./kokoro-multi-lang-v1_0/espeak-ng-data"
;
config
.
Model
.
Kokoro
.
DictDir
=
"./kokoro-multi-lang-v1_0/dict"
;
config
.
Model
.
Kokoro
.
Lexicon
=
"./kokoro-multi-lang-v1_0/lexicon-us-en.txt,./kokoro-multi-lang-v1_0/lexicon-zh.txt"
;
config
.
Model
.
NumThreads
=
2
;
config
.
Model
.
Debug
=
1
;
config
.
Model
.
Provider
=
"cpu"
;
var
tts
=
new
OfflineTts
(
config
);
var
speed
=
1.0f
;
var
text
=
"中英文语音合成测试。This is generated by next generation Kaldi using Kokoro without Misaki. 你觉得中英文说的如何呢?"
;
var
sid
=
50
;
var
MyCallback
=
(
IntPtr
samples
,
int
n
,
float
progress
)
=>
{
float
[]
data
=
new
float
[
n
];
Marshal
.
Copy
(
samples
,
data
,
0
,
n
);
// You can process samples here, e.g., play them.
// See ../kokoro-tts-playback for how to play them
Console
.
WriteLine
(
$
"Progress {progress*100}%"
);
// 1 means to keep generating
// 0 means to stop generating
return
1
;
};
var
callback
=
new
OfflineTtsCallbackProgress
(
MyCallback
);
var
audio
=
tts
.
GenerateWithCallbackProgress
(
text
,
speed
,
sid
,
callback
);
var
outputFilename
=
"./generated-kokoro-zh-en.wav"
;
var
ok
=
audio
.
SaveToWaveFile
(
outputFilename
);
if
(
ok
)
{
Console
.
WriteLine
(
$
"Wrote to {outputFilename} succeeded!"
);
}
else
{
Console
.
WriteLine
(
$
"Failed to write {outputFilename}"
);
}
}
static
void
TestEn
()
{
var
config
=
new
OfflineTtsConfig
();
config
.
Model
.
Kokoro
.
Model
=
"./kokoro-en-v0_19/model.onnx"
;
config
.
Model
.
Kokoro
.
Voices
=
"./kokoro-en-v0_19/voices.bin"
;
...
...
@@ -54,7 +111,7 @@ class OfflineTtsDemo
var
audio
=
tts
.
GenerateWithCallbackProgress
(
text
,
speed
,
sid
,
callback
);
var
outputFilename
=
"./generated-kokoro-
0
.wav"
;
var
outputFilename
=
"./generated-kokoro-
en
.wav"
;
var
ok
=
audio
.
SaveToWaveFile
(
outputFilename
);
if
(
ok
)
...
...
dotnet-examples/kokoro-tts/run-kokoro
-en
.sh → dotnet-examples/kokoro-tts/run-kokoro.sh
查看文件 @
ae32dfa
#!/usr/bin/env bash
set
-ex
if
[
! -f ./kokoro-multi-lang-v1_0/model.onnx
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/kokoro-multi-lang-v1_0.tar.bz2
tar xf kokoro-multi-lang-v1_0.tar.bz2
rm kokoro-multi-lang-v1_0.tar.bz2
fi
if
[
! -f ./kokoro-en-v0_19/model.onnx
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/kokoro-en-v0_19.tar.bz2
tar xf kokoro-en-v0_19.tar.bz2
...
...
scripts/dotnet/OfflineTtsKokoroModelConfig.cs
查看文件 @
ae32dfa
...
...
@@ -15,6 +15,9 @@ namespace SherpaOnnx
DataDir
=
""
;
LengthScale
=
1.0F
;
DictDir
=
""
;
Lexicon
=
""
;
}
[
MarshalAs
(
UnmanagedType
.
LPStr
)]
public
string
Model
;
...
...
@@ -29,5 +32,11 @@ namespace SherpaOnnx
public
string
DataDir
;
public
float
LengthScale
;
[
MarshalAs
(
UnmanagedType
.
LPStr
)]
public
string
DictDir
;
[
MarshalAs
(
UnmanagedType
.
LPStr
)]
public
string
Lexicon
;
}
}
...
...
请
注册
或
登录
后发表评论