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-17 15:17:08 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-02-17 15:17:08 +0800
Commit
b5d89d7bcb549f5802a1749cbdf88d5964d194d2
b5d89d7b
1 parent
b03f6e6e
Add Dart API for FireRedAsr AED Model (#1877)
隐藏空白字符变更
内嵌
并排对比
正在显示
6 个修改的文件
包含
116 行增加
和
7 行删除
.github/scripts/test-dart.sh
dart-api-examples/non-streaming-asr/bin/fire-red-asr.dart
dart-api-examples/non-streaming-asr/run-fire-red-asr.sh
dotnet-examples/offline-decode-files/run-fire-red-asr.sh
flutter/sherpa_onnx/lib/src/offline_recognizer.dart
flutter/sherpa_onnx/lib/src/sherpa_onnx_bindings.dart
.github/scripts/test-dart.sh
查看文件 @
b5d89d7
...
...
@@ -92,6 +92,10 @@ popd
pushd
non-streaming-asr
echo
'----------FireRedAsr----------'
./run-fire-red-asr.sh
rm -rf sherpa-onnx-fire-red-asr-
*
echo
'----------SenseVoice----------'
./run-sense-voice.sh
rm -rf sherpa-onnx-
*
...
...
dart-api-examples/non-streaming-asr/bin/fire-red-asr.dart
0 → 100644
查看文件 @
b5d89d7
// Copyright (c) 2025 Xiaomi Corporation
import
'dart:io'
;
import
'package:args/args.dart'
;
import
'package:sherpa_onnx/sherpa_onnx.dart'
as
sherpa_onnx
;
import
'./init.dart'
;
void
main
(
List
<
String
>
arguments
)
async
{
await
initSherpaOnnx
();
final
parser
=
ArgParser
()
..
addOption
(
'encoder'
,
help:
'Path to the FireRedAsr encoder model'
)
..
addOption
(
'decoder'
,
help:
'Path to FireRedAsr decoder model'
)
..
addOption
(
'tokens'
,
help:
'Path to tokens.txt'
)
..
addOption
(
'input-wav'
,
help:
'Path to input.wav to transcribe'
);
final
res
=
parser
.
parse
(
arguments
);
if
(
res
[
'encoder'
]
==
null
||
res
[
'decoder'
]
==
null
||
res
[
'tokens'
]
==
null
||
res
[
'input-wav'
]
==
null
)
{
print
(
parser
.
usage
);
exit
(
1
);
}
final
encoder
=
res
[
'encoder'
]
as
String
;
final
decoder
=
res
[
'decoder'
]
as
String
;
final
tokens
=
res
[
'tokens'
]
as
String
;
final
inputWav
=
res
[
'input-wav'
]
as
String
;
final
fireRedAsr
=
sherpa_onnx
.
OfflineFireRedAsrModelConfig
(
encoder:
encoder
,
decoder:
decoder
,
);
final
modelConfig
=
sherpa_onnx
.
OfflineModelConfig
(
fireRedAsr:
fireRedAsr
,
tokens:
tokens
,
debug:
false
,
numThreads:
1
,
);
final
config
=
sherpa_onnx
.
OfflineRecognizerConfig
(
model:
modelConfig
);
final
recognizer
=
sherpa_onnx
.
OfflineRecognizer
(
config
);
final
waveData
=
sherpa_onnx
.
readWave
(
inputWav
);
final
stream
=
recognizer
.
createStream
();
stream
.
acceptWaveform
(
samples:
waveData
.
samples
,
sampleRate:
waveData
.
sampleRate
);
recognizer
.
decode
(
stream
);
final
result
=
recognizer
.
getResult
(
stream
);
print
(
result
.
text
);
stream
.
free
();
recognizer
.
free
();
}
...
...
dart-api-examples/non-streaming-asr/run-fire-red-asr.sh
0 → 100755
查看文件 @
b5d89d7
#!/usr/bin/env bash
set
-ex
if
[
! -f ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
tar xvf sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
rm sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
ls -lh sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16
fi
dart pub get
dart run
\
./bin/fire-red-asr.dart
\
--encoder ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx
\
--decoder ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/decoder.int8.onnx
\
--tokens ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/tokens.txt
\
--input-wav ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/test_wavs/0.wav
...
...
dotnet-examples/offline-decode-files/run-fire-red-asr.sh
查看文件 @
b5d89d7
...
...
@@ -2,12 +2,12 @@
set
-ex
if
[
! -f ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
tar xvf sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
rm sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
ls -lh sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16
fi
if
[
! -f ./sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16/encoder.int8.onnx
]
;
then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
tar xvf sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
rm sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16.tar.bz2
ls -lh sherpa-onnx-fire-red-asr-large-zh_en-2025-02-16
fi
dotnet run
\
--num-threads
=
2
\
...
...
flutter/sherpa_onnx/lib/src/offline_recognizer.dart
查看文件 @
b5d89d7
...
...
@@ -68,6 +68,20 @@ class OfflineWhisperModelConfig {
final
int
tailPaddings
;
}
class
OfflineFireRedAsrModelConfig
{
const
OfflineFireRedAsrModelConfig
(
{
this
.
encoder
=
''
,
this
.
decoder
=
''
});
@override
String
toString
()
{
return
'OfflineFireRedAsrModelConfig(encoder:
$encoder
, decoder:
$decoder
)'
;
}
final
String
encoder
;
final
String
decoder
;
}
class
OfflineMoonshineModelConfig
{
const
OfflineMoonshineModelConfig
(
{
this
.
preprocessor
=
''
,
...
...
@@ -135,6 +149,7 @@ class OfflineModelConfig {
this
.
tdnn
=
const
OfflineTdnnModelConfig
(),
this
.
senseVoice
=
const
OfflineSenseVoiceModelConfig
(),
this
.
moonshine
=
const
OfflineMoonshineModelConfig
(),
this
.
fireRedAsr
=
const
OfflineFireRedAsrModelConfig
(),
required
this
.
tokens
,
this
.
numThreads
=
1
,
this
.
debug
=
true
,
...
...
@@ -147,7 +162,7 @@ class OfflineModelConfig {
@override
String
toString
()
{
return
'OfflineModelConfig(transducer:
$transducer
, paraformer:
$paraformer
, nemoCtc:
$nemoCtc
, whisper:
$whisper
, tdnn:
$tdnn
, senseVoice:
$senseVoice
, moonshine:
$moonshine
, tokens:
$tokens
, numThreads:
$numThreads
, debug:
$debug
, provider:
$provider
, modelType:
$modelType
, modelingUnit:
$modelingUnit
, bpeVocab:
$bpeVocab
, telespeechCtc:
$telespeechCtc
)'
;
return
'OfflineModelConfig(transducer:
$transducer
, paraformer:
$paraformer
, nemoCtc:
$nemoCtc
, whisper:
$whisper
, tdnn:
$tdnn
, senseVoice:
$senseVoice
, moonshine:
$moonshine
,
fireRedAsr:
$fireRedAsr
,
tokens:
$tokens
, numThreads:
$numThreads
, debug:
$debug
, provider:
$provider
, modelType:
$modelType
, modelingUnit:
$modelingUnit
, bpeVocab:
$bpeVocab
, telespeechCtc:
$telespeechCtc
)'
;
}
final
OfflineTransducerModelConfig
transducer
;
...
...
@@ -157,6 +172,7 @@ class OfflineModelConfig {
final
OfflineTdnnModelConfig
tdnn
;
final
OfflineSenseVoiceModelConfig
senseVoice
;
final
OfflineMoonshineModelConfig
moonshine
;
final
OfflineFireRedAsrModelConfig
fireRedAsr
;
final
String
tokens
;
final
int
numThreads
;
...
...
@@ -288,6 +304,10 @@ class OfflineRecognizer {
c
.
ref
.
model
.
moonshine
.
cachedDecoder
=
config
.
model
.
moonshine
.
cachedDecoder
.
toNativeUtf8
();
// FireRedAsr
c
.
ref
.
model
.
fireRedAsr
.
encoder
=
config
.
model
.
fireRedAsr
.
encoder
.
toNativeUtf8
();
c
.
ref
.
model
.
fireRedAsr
.
decoder
=
config
.
model
.
fireRedAsr
.
decoder
.
toNativeUtf8
();
c
.
ref
.
model
.
tokens
=
config
.
model
.
tokens
.
toNativeUtf8
();
c
.
ref
.
model
.
numThreads
=
config
.
model
.
numThreads
;
...
...
@@ -325,6 +345,8 @@ class OfflineRecognizer {
calloc
.
free
(
c
.
ref
.
model
.
modelType
);
calloc
.
free
(
c
.
ref
.
model
.
provider
);
calloc
.
free
(
c
.
ref
.
model
.
tokens
);
calloc
.
free
(
c
.
ref
.
model
.
fireRedAsr
.
decoder
);
calloc
.
free
(
c
.
ref
.
model
.
fireRedAsr
.
encoder
);
calloc
.
free
(
c
.
ref
.
model
.
moonshine
.
cachedDecoder
);
calloc
.
free
(
c
.
ref
.
model
.
moonshine
.
uncachedDecoder
);
calloc
.
free
(
c
.
ref
.
model
.
moonshine
.
encoder
);
...
...
flutter/sherpa_onnx/lib/src/sherpa_onnx_bindings.dart
查看文件 @
b5d89d7
...
...
@@ -248,6 +248,11 @@ final class SherpaOnnxOfflineMoonshineModelConfig extends Struct {
external
Pointer
<
Utf8
>
cachedDecoder
;
}
final
class
SherpaOnnxOfflineFireRedAsrModelConfig
extends
Struct
{
external
Pointer
<
Utf8
>
encoder
;
external
Pointer
<
Utf8
>
decoder
;
}
final
class
SherpaOnnxOfflineTdnnModelConfig
extends
Struct
{
external
Pointer
<
Utf8
>
model
;
}
...
...
@@ -291,6 +296,7 @@ final class SherpaOnnxOfflineModelConfig extends Struct {
external
SherpaOnnxOfflineSenseVoiceModelConfig
senseVoice
;
external
SherpaOnnxOfflineMoonshineModelConfig
moonshine
;
external
SherpaOnnxOfflineFireRedAsrModelConfig
fireRedAsr
;
}
final
class
SherpaOnnxOfflineRecognizerConfig
extends
Struct
{
...
...
请
注册
或
登录
后发表评论