Skip to content

Commit 028b8f2

Browse files
authored
Add C++ example for streaming ASR with SenseVoice. (#2199)
1 parent fc2121c commit 028b8f2

16 files changed

+514
-60
lines changed

cxx-api-examples/CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ target_link_libraries(moonshine-cxx-api sherpa-onnx-cxx-api)
2727
add_executable(sense-voice-cxx-api ./sense-voice-cxx-api.cc)
2828
target_link_libraries(sense-voice-cxx-api sherpa-onnx-cxx-api)
2929

30+
if(SHERPA_ONNX_ENABLE_PORTAUDIO)
31+
add_executable(sense-voice-simulate-streaming-microphone-cxx-api
32+
./sense-voice-simulate-streaming-microphone-cxx-api.cc
33+
${CMAKE_CURRENT_LIST_DIR}/../sherpa-onnx/csrc/microphone.cc
34+
)
35+
target_link_libraries(sense-voice-simulate-streaming-microphone-cxx-api
36+
sherpa-onnx-cxx-api
37+
portaudio_static
38+
)
39+
endif()
40+
3041
add_executable(sense-voice-with-hr-cxx-api ./sense-voice-with-hr-cxx-api.cc)
3142
target_link_libraries(sense-voice-with-hr-cxx-api sherpa-onnx-cxx-api)
3243

cxx-api-examples/dolphin-ctc-cxx-api.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ int32_t main() {
3333
config.model_config.num_threads = 1;
3434

3535
std::cout << "Loading model\n";
36-
OfflineRecognizer recongizer = OfflineRecognizer::Create(config);
37-
if (!recongizer.Get()) {
36+
OfflineRecognizer recognizer = OfflineRecognizer::Create(config);
37+
if (!recognizer.Get()) {
3838
std::cerr << "Please check your config\n";
3939
return -1;
4040
}
@@ -49,13 +49,13 @@ int32_t main() {
4949
std::cout << "Start recognition\n";
5050
const auto begin = std::chrono::steady_clock::now();
5151

52-
OfflineStream stream = recongizer.CreateStream();
52+
OfflineStream stream = recognizer.CreateStream();
5353
stream.AcceptWaveform(wave.sample_rate, wave.samples.data(),
5454
wave.samples.size());
5555

56-
recongizer.Decode(&stream);
56+
recognizer.Decode(&stream);
5757

58-
OfflineRecognizerResult result = recongizer.GetResult(&stream);
58+
OfflineRecognizerResult result = recognizer.GetResult(&stream);
5959

6060
const auto end = std::chrono::steady_clock::now();
6161
const float elapsed_seconds =

cxx-api-examples/fire-red-asr-cxx-api.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ int32_t main() {
3232
config.model_config.num_threads = 1;
3333

3434
std::cout << "Loading model\n";
35-
OfflineRecognizer recongizer = OfflineRecognizer::Create(config);
36-
if (!recongizer.Get()) {
35+
OfflineRecognizer recognizer = OfflineRecognizer::Create(config);
36+
if (!recognizer.Get()) {
3737
std::cerr << "Please check your config\n";
3838
return -1;
3939
}
@@ -50,13 +50,13 @@ int32_t main() {
5050
std::cout << "Start recognition\n";
5151
const auto begin = std::chrono::steady_clock::now();
5252

53-
OfflineStream stream = recongizer.CreateStream();
53+
OfflineStream stream = recognizer.CreateStream();
5454
stream.AcceptWaveform(wave.sample_rate, wave.samples.data(),
5555
wave.samples.size());
5656

57-
recongizer.Decode(&stream);
57+
recognizer.Decode(&stream);
5858

59-
OfflineRecognizerResult result = recongizer.GetResult(&stream);
59+
OfflineRecognizerResult result = recognizer.GetResult(&stream);
6060

6161
const auto end = std::chrono::steady_clock::now();
6262
const float elapsed_seconds =

cxx-api-examples/moonshine-cxx-api.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ int32_t main() {
3636
config.model_config.num_threads = 1;
3737

3838
std::cout << "Loading model\n";
39-
OfflineRecognizer recongizer = OfflineRecognizer::Create(config);
40-
if (!recongizer.Get()) {
39+
OfflineRecognizer recognizer = OfflineRecognizer::Create(config);
40+
if (!recognizer.Get()) {
4141
std::cerr << "Please check your config\n";
4242
return -1;
4343
}
@@ -54,13 +54,13 @@ int32_t main() {
5454
std::cout << "Start recognition\n";
5555
const auto begin = std::chrono::steady_clock::now();
5656

57-
OfflineStream stream = recongizer.CreateStream();
57+
OfflineStream stream = recognizer.CreateStream();
5858
stream.AcceptWaveform(wave.sample_rate, wave.samples.data(),
5959
wave.samples.size());
6060

61-
recongizer.Decode(&stream);
61+
recognizer.Decode(&stream);
6262

63-
OfflineRecognizerResult result = recongizer.GetResult(&stream);
63+
OfflineRecognizerResult result = recognizer.GetResult(&stream);
6464

6565
const auto end = std::chrono::steady_clock::now();
6666
const float elapsed_seconds =

cxx-api-examples/sense-voice-cxx-api.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ int32_t main() {
3232
config.model_config.num_threads = 1;
3333

3434
std::cout << "Loading model\n";
35-
OfflineRecognizer recongizer = OfflineRecognizer::Create(config);
36-
if (!recongizer.Get()) {
35+
OfflineRecognizer recognizer = OfflineRecognizer::Create(config);
36+
if (!recognizer.Get()) {
3737
std::cerr << "Please check your config\n";
3838
return -1;
3939
}
@@ -51,13 +51,13 @@ int32_t main() {
5151
std::cout << "Start recognition\n";
5252
const auto begin = std::chrono::steady_clock::now();
5353

54-
OfflineStream stream = recongizer.CreateStream();
54+
OfflineStream stream = recognizer.CreateStream();
5555
stream.AcceptWaveform(wave.sample_rate, wave.samples.data(),
5656
wave.samples.size());
5757

58-
recongizer.Decode(&stream);
58+
recognizer.Decode(&stream);
5959

60-
OfflineRecognizerResult result = recongizer.GetResult(&stream);
60+
OfflineRecognizerResult result = recognizer.GetResult(&stream);
6161

6262
const auto end = std::chrono::steady_clock::now();
6363
const float elapsed_seconds =

0 commit comments

Comments
 (0)