十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

sherpa-onnx Rust 示例完全指南:从安装链接到 51 个语音/ASR/TTS 实战用例

sherpa-onnx Rust 示例完全指南:从安装链接到 51 个语音/ASR/TTS 实战用例 sherpa-onnx Rust 示例完全指南从安装链接到 51 个语音/ASR/TTS 实战用例【免费下载链接】sherpa-onnxSpeech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, RK NPU, Axera NPU, Ascend NPU, x86_64 servers, websocket server/client, support 12 programming languages项目地址: https://gitcode.com/GitHub_Trending/sh/sherpa-onnx本指南围绕仓库 rust-api-examples 目录展开系统讲解如何在 Rust 项目中引入sherpa-onnxcrate、理解默认静态链接与可选共享链接机制并逐一运行仓库内置的 51 个示例涵盖版本查询、离线/流式 ASRZipformer、SenseVoice、Whisper、Qwen3、Paraformer 等、各类 TTSPocket、Supertonic、ZipVoice、VITS、Matcha、Kokoro、Kitten、VAD 静音切除、语音增强、标点恢复、关键词检测、说话人嵌入/识别/分离等。读完本文你将掌握从零开始跑通任意 Rust 示例并把它改造成自己项目的完整方法。一、目录结构与运行前提rust-api-examples目录中存放着使用本仓库维护的sherpa-onnxRust crate 编写的全部示例。目录结构如下rust-api-examples/Cargo.tomlcrate 依赖与 feature 声明static/shared/micrust-api-examples/README.md示例清单与运行方式本文主体rust-api-examples/for-advanced-users.md高级用户手册讲解原生库链接控制与跨平台编译rust-api-examples/examples/46 个.rs示例源码rust-api-examples/run-*.sh一键运行脚本会自动下载所需模型。运行前提仅需本机安装 Rust 工具链cargo。大多数用户不需要手动配置任何链接细节——crate 的构建脚本会自动为你的平台下载匹配的 sherpa-onnx 原生库。二、快速开始第一个示例进入rust-api-examples目录后直接运行仓库自带的一键脚本即可每个脚本在需要时会自动下载模型文件./run-version.sh也可以直接用 Cargo 运行cargo run --example version该示例的源码非常简洁见 rust-api-examples/examples/version.rs它调用 crate 顶层 API 打印关键版本信息use sherpa_onnx; fn main() { println!(Version : {}, sherpa_onnx::version()); println!(Git SHA1: {}, sherpa_onnx::git_sha1()); println!(Git date: {}, sherpa_onnx::git_date()); println!(Onnxruntime version: {}, sherpa_onnx::onnxruntime_version()); }其中version()对应 sherpa-onnx 库版本、git_sha1()/git_date()对应编译该库的提交信息、onnxruntime_version()对应内嵌的 ONNX Runtime 版本。这是验证你的 Rust 环境与原生库是否成功链接的最快方式。对于 macOS 共享库构建还可以用otool检查二进制中的 RPATHotool -l target/debug/examples/version | grep -A2 LC_RPATH三、链接方式静态链接默认与共享链接从 rust-api-examples/Cargo.toml 可以看到默认 feature 是static[features] # Default to static linking so users can run examples without setting library paths default [static] mic [cpal] static [sherpa-onnx/static] shared [sherpa-onnx/shared]默认静态链接首次构建时构建脚本会自动下载与你平台匹配的sherpa-onnx原生库归档整个过程通常自动完成、对用户基本透明。静态链接产出的二进制自包含不依赖额外的运行时.so/.dll/.dylib系统库除外。切换共享链接若希望使用动态库禁用默认 feature 并启用sharedcargo run --no-default-features --features shared --example version自定义原生库如果你希望指定使用本地已有的 sherpa-onnx 库可设置SHERPA_ONNX_LIB_DIR环境变量指向lib目录或在你的 Cargo 工程中直接配置 crate详见 rust-api-examples/for-advanced-users.md。设置后构建脚本会直接使用该目录不再自动下载。自动下载行为与平台归档选择未设置SHERPA_ONNX_LIB_DIR时sherpa-onnx-sys/build.rs会根据目标平台与链接模式自动选择对应的预编译-lib归档OS架构默认静态归档示例共享归档示例Linuxx86_64sherpa-onnx-v1.13.7-linux-x64-static-libsherpa-onnx-v1.13.7-linux-x64-shared-libLinuxaarch64sherpa-onnx-v1.13.7-linux-aarch64-static-libsherpa-onnx-v1.13.7-linux-aarch64-shared-cpu-libmacOSx86_64sherpa-onnx-v1.13.7-osx-x64-static-libsherpa-onnx-v1.13.7-osx-x64-shared-libmacOSarm64sherpa-onnx-v1.13.7-osx-arm64-static-libsherpa-onnx-v1.13.7-osx-arm64-shared-libWindowsx86_64sherpa-onnx-v1.13.7-win-x64-static-MT-Release-libsherpa-onnx-v1.13.7-win-x64-shared-MT-Release-libWindowsarm64sherpa-onnx-v1.13.7-win-arm64-static-MT-Release-libsherpa-onnx-v1.13.7-win-arm64-shared-MT-Release-libiOSarm64—iOS 仅共享sherpa-onnx-v1.13.7-ios-shared-onnxruntime-static.xcframeworkAndroid全部 ABI—Android 仅共享sherpa-onnx-v1.13.7-android.tar.bz2上表归档名称来自 rust-api-examples/for-advanced-users.md 的说明实际使用时请以最新 release tag 对应的归档为准。静态模式下构建脚本还会自动处理libstdc、libm、libpthread、libdlLinux或libc与 FoundationmacOS等系统依赖的链接。共享模式下构建脚本还会自动做两件事一是为二进制设置运行期 rpathLinux 为$ORIGINmacOS 为loader_path二是把libsherpa-onnx-c-api与libonnxruntime复制到生成的二进制旁因此通常无需手动设置DYLD_LIBRARY_PATH之类的环境变量。四、示例总览51 个用例一图览下表完整列出仓库内置的示例编号与 rust-api-examples/README.md 一致并补齐了表格中缺失的 49、50 号#示例功能1version显示 sherpa-onnx 版本2pocket_ttsPocket TTS 零样本声音克隆 TTS参考音频3supertonic_ttsSupertonic TTS多说话人多语言4zipvoice_ttsZipVoice 零样本声音克隆 TTS5vits_ttsVITS Piper 英文 TTS6vits_ttsVITS Piper 德文 TTS7matcha_tts_enMatcha TTS英文8matcha_tts_zhMatcha TTS中文9kokoro_tts_enKokoro TTS英文10kokoro_tts_zh_enKokoro TTS中英混合11kitten_tts_enKitten TTS英文12streaming_zipformer流式 ASR英文Zipformer transducer13streaming_zipformer流式 ASR中英Zipformer transducer14streaming_zipformer_microphone麦克风实时流式 ASR15zipformer非流式 ASR英文16zipformer非流式 ASR中英17zipformer非流式 ASR越南语18nemo_parakeetNemo Parakeet TDT 非流式 ASR英文19fire_red_asr_ctcFireRedASR CTC 非流式 ASR中英20moonshine_v2Moonshine v2 非流式 ASR英文21sense_voiceSenseVoice 非流式 ASR中英日韩粤22qwen3_asrQwen3 ASR 非流式多语言23cohere_transcribeCohere Transcribe 非流式多语言24silero_vad_remove_silenceSilero VAD 切除静音25offline_speech_enhancement_gtcrnGTCRN 离线语音增强26offline_speech_enhancement_dpdfnetDPDFNet 离线语音增强27streaming_speech_enhancement_gtcrnGTCRN 流式语音增强28streaming_speech_enhancement_dpdfnetDPDFNet 流式语音增强29online_punctuation在线标点恢复30keyword_spotterZipformer KWS 关键词检测31spoken_language_identificationWhisper 语种识别32offline_punctuation离线标点恢复33audio_tagging_zipformerZipformer 音频打标34audio_tagging_cedCED 音频打标35speaker_embedding_extractor说话人嵌入提取36speaker_embedding_manager说话人注册/检索/验证/删除37speaker_embedding_cosine_similarity三条嵌入的余弦相似度38offline_speaker_diarizationpyannote 分段 3D-Speaker 嵌入的离线说话人分离39sense_voice_simulate_streaming_microphoneSenseVoice VAD 模拟流式 ASR麦克风40fire_red_asr_ctc_simulate_streaming_microphoneFireRedASR CTC VAD 模拟流式 ASR麦克风41parakeet_tdt_ctc_simulate_streaming_microphoneParakeet TDT CTC VAD 模拟流式 ASR日文42parakeet_tdt_simulate_streaming_microphoneParakeet TDT transducer VAD 模拟流式 ASR英文43wenet_ctc_simulate_streaming_microphoneWeNet CTC VAD 模拟流式 ASR粤语44zipformer_ctc_simulate_streaming_microphoneZipformer CTC VAD 模拟流式 ASR中文45zipformer_transducer_simulate_streaming_microphoneZipformer transducer VAD 模拟流式 ASR中文46zipformer_transducer_simulate_streaming_microphoneZipformer transducer VAD 模拟流式 ASR日文reazonspeech 模型47qwen3_asr_simulate_streaming_microphoneQwen3 ASR VAD 模拟流式 ASR麦克风48whisperWhisper 非流式 ASR多语言49funasr_nanoFunASR Nano 非流式 ASR50ten_vad_remove_silenceten-vad 切除静音51paraformerParaformer 非流式 ASR可以看到示例覆盖了 sherpa-onnx 的四大核心能力域语音识别ASR、语音合成TTS、语音预处理VAD / 增强 / 分离以及说话人相关任务嵌入 / 识别 / 分离且同时提供文件输入与麦克风实时输入两种形态。五、TTS 示例从经典 VITS 到零样本声音克隆仓库内置了 7 类 TTS 模型的一键脚本。所有脚本都遵循同一模式先下载模型归档再以cargo run --example 名称运行。5.1 经典 VITSPiper英文模型./run-vits-en.sh德文模型./run-vits-de.sh5.2 Matcha TTS英文 / 中文./run-matcha-tts-en.sh ./run-matcha-tts-zh.sh5.3 Kokoro TTS英文 / 中英混合./run-kokoro-tts-en.sh ./run-kokoro-tts-zh-en.sh5.4 Kitten TTS英文./run-kitten-tts-en.sh5.5 Pocket TTS零样本声音克隆./run-pocket-tts.sh这是仓库中最能体现 Rust API 表现力的示例之一。rust-api-examples/examples/pocket_tts.rs 展示了完整的配置链路OfflineTtsConfig→OfflineTtsModelConfig→OfflineTtsPocketModelConfig。Pocket 模型需要同时指定 6 个部件let config OfflineTtsConfig { model: sherpa_onnx::OfflineTtsModelConfig { pocket: OfflineTtsPocketModelConfig { lm_flow: Some(./sherpa-onnx-pocket-tts-int8-2026-01-26/lm_flow.int8.onnx.into()), lm_main: Some(./sherpa-onnx-pocket-tts-int8-2026-01-26/lm_main.int8.onnx.into()), encoder: Some(./sherpa-onnx-pocket-tts-int8-2026-01-26/encoder.onnx.into()), decoder: Some(./sherpa-onnx-pocket-tts-int8-2026-01-26/decoder.int8.onnx.into()), text_conditioner: Some( ./sherpa-onnx-pocket-tts-int8-2026-01-26/text_conditioner.onnx.into(), ), vocab_json: Some(./sherpa-onnx-pocket-tts-int8-2026-01-26/vocab.json.into()), token_scores_json: Some( ./sherpa-onnx-pocket-tts-int8-2026-01-26/token_scores.json.into(), ), voice_embedding_cache_capacity: 50, }, num_threads: 2, debug: false, // set to true to see verbose logs ..Default::default() }, ..Default::default() };零样本克隆的关键在于GenerationConfig把参考音频的采样序列与采样率传入reference_audio/reference_sample_rate即可用一段参考语音克隆音色let reference_audio_file ./sherpa-onnx-pocket-tts-int8-2026-01-26/test_wavs/bria.wav; let wave Wave::read(reference_audio_file).expect(Failed to read reference audio); let mut extra HashMap::new(); extra.insert(max_reference_audio_len.to_string(), serde_json::json!(10.0)); extra.insert(seed.to_string(), serde_json::json!(42)); let gen_config GenerationConfig { speed: 1.0, reference_audio: Some(wave.samples().to_vec()), reference_sample_rate: wave.sample_rate(), extra: Some(extra), ..Default::default() };生成时通过generate_with_config(text, gen_config, Some(callback))传入进度回调回调返回true表示继续生成并可实时打印进度百分比。示例还会计算实时率 RTFelapsed / audio_duration这是评估 TTS 性能的常用指标最后调用audio.save(filename)把结果写成 WAV 文件。5.6 Supertonic TTS多说话人多语言与 ZipVoice./run-supertonic-tts.sh ./run-zipvoice-tts.sh六、ASR 示例流式、非流式与麦克风实时识别6.1 流式 Zipformer文件输入英文与中英混合模型./run-streaming-zipformer-en.sh ./run-streaming-zipformer-zh-en.sh以 rust-api-examples/run-streaming-zipformer-zh-en.sh 为例脚本先下载sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20模型归档再以如下命令行参数调用示例--debug开启调试日志cargo run --example streaming_zipformer -- \ --wav sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/test_wavs/2.wav \ --encoder sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.int8.onnx \ --decoder sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.onnx \ --joiner sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.int8.onnx \ --tokens sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt \ --provider cpurust-api-examples/examples/streaming_zipformer.rs 展示了流式识别的完整编程模型它由clap解析命令行参数核心流程分三步配置构造OnlineRecognizerConfig设置 transducer 三件套encoder / decoder / joiner、tokens 文件与 provider并开启端点检测与贪心解码let mut recognizer_config OnlineRecognizerConfig::default(); recognizer_config.model_config.transducer.encoder Some(args.encoder.clone()); recognizer_config.model_config.transducer.decoder Some(args.decoder.clone()); recognizer_config.model_config.transducer.joiner Some(args.joiner.clone()); recognizer_config.model_config.tokens Some(args.tokens.clone()); recognizer_config.model_config.provider Some(args.provider.clone()); recognizer_config.enable_endpoint true; recognizer_config.model_config.debug args.debug; recognizer_config.decoding_method Some(greedy_search.to_string()); let recognizer OnlineRecognizer::create(recognizer_config).expect(...);分块喂数据以CHUNK_SIZE 3200采样点约 0.2 秒 16kHz为单位切分波形逐块accept_waveform每块数据到达后循环is_readydecodeget_result命中端点is_endpoint时reset开启新分段for chunk in wave.samples().chunks(CHUNK_SIZE) { stream.accept_waveform(wave.sample_rate(), chunk); while recognizer.is_ready(stream) { recognizer.decode(stream); if let Some(result) recognizer.get_result(stream) { if !result.text.is_empty() { println!(Segment {}: {}, segment_id, result.text); } } if recognizer.is_endpoint(stream) { recognizer.reset(stream); segment_id 1; } } }收尾追加约 0.3 秒的尾部静音填充并调用input_finished()驱动模型吐完剩余 token。6.2 麦克风实时流式 ASR./run-streaming-zipformer-microphone-zh-en.sh该示例rust-api-examples/examples/streaming_zipformer_microphone.rs需要启用micfeature依赖cpal见 rust-api-examples/Cargo.toml 中的mic [cpal]cargo run --features mic --example streaming_zipformer_microphone -- --help其架构是典型的生产者-消费者模型cpal回调线程把麦克风数据自动处理 F32 / I16 / U16 三种采样格式并混音为单声道通过mpsc::channel送入识别线程识别线程以chunk_size默认 3200为粒度消费音频、喂给OnlineRecognizer并用DisplayManager做终端实时渲染与句子终稿输出。按下 CtrlC 结束。6.3 非流式 Zipformer英文 / 中英 / 越南语./run-zipformer-en.sh ./run-zipformer-zh-en.sh ./run-zipformer-vi.sh6.4 其他非流式 ASR 模型./run-nemo-parakeet-en.sh # Nemo Parakeet TDT英文 ./run-fire-red-asr-ctc.sh # FireRedASR CTC中英 ./run-moonshine-v2.sh # Moonshine v2英文 ./run-sense-voice.sh # SenseVoice中英日韩粤 ./run-qwen3-asr.sh # Qwen3 ASR多语言 ./run-cohere-transcribe.sh # Cohere Transcribe多语言 ./run-whisper.sh # Whisper多语言 ./run-funasr-nano.sh # FunASR Nano ./run-paraformer.sh # Paraformer离线识别示例如 rust-api-examples/examples/zipformer.rs的流程更简洁Wave::read读入整段音频 →OfflineRecognizer::create创建识别器 →create_stream→accept_waveform一次性喂入 →decode→stream.get_result()取文本。示例还会统计识别器创建耗时、识别耗时并计算 RTF作为性能参考。以 SenseVoice 为例rust-api-examples/examples/sense_voice.rs其 CLI 参数额外包含--language默认auto可指定en/zh等与--use-itn默认开启进行逆文本正则化配置层面对应OfflineSenseVoiceModelConfig { model, language, use_itn }。七、VAD 与语音预处理7.1 Silero VAD 切除静音./run-silero-vad-remove-silence.shrust-api-examples/examples/silero_vad_remove_silence.rs 完整演示了 VAD 的编程接口核心是SileroVadModelConfig的四个可调参数let mut silero_config SileroVadModelConfig::default(); silero_config.model Some(args.silero_vad_model); silero_config.threshold 0.5; // 说话概率阈值越大越严格 silero_config.min_silence_duration 0.25; // 判定为静音的最小持续时间秒 silero_config.min_speech_duration 0.25; // 判定为语音的最小持续时间秒 silero_config.max_speech_duration 5.0; // 单段语音最大时长秒 let vad_config VadModelConfig { silero_vad: silero_config, ten_vad: Default::default(), sample_rate, num_threads: 1, provider: Some(cpu.to_string()), debug: false, }; let vad VoiceActivityDetector::create(vad_config, 30.0).expect(...);处理时以 512 采样点窗口逐块accept_waveform通过vad.front()/vad.pop()取出完成的语音段最后vad.flush()冲刷尾部再调用sherpa_onnx::write写出仅含语音的 WAV并统计移除的非语音占比。7.2 ten-vad 切除静音./run-ten-vad-remove-silence.sh7.3 语音增强离线 / 流式./run-offline-speech-enhancement-gtcrn.sh ./run-offline-speech-enhancement-dpdfnet.sh ./run-streaming-speech-enhancement-gtcrn.sh ./run-streaming-speech-enhancement-dpdfnet.sh八、标点、关键词与语种识别8.1 标点恢复在线 / 离线./run-online-punctuation.sh ./run-offline-punctuation.sh8.2 关键词检测KWS./run-keyword-spotter.sh使用 Zipformer KWS 模型从音频流中检测预设关键词。8.3 语种识别./run-spoken-language-identification.sh使用 Whisper 模型判断 WAV 文件中的口语语种。九、音频打标与说话人任务9.1 音频打标./run-audio-tagging-zipformer.sh ./run-audio-tagging-ced.sh分别使用 Zipformer 与 CED 模型对音频做事件/声学事件打标。9.2 说话人嵌入与检索./run-speaker-embedding-extractor.sh # 从 WAV 计算说话人嵌入 ./run-speaker-embedding-manager.sh # 嵌入注册/检索/验证/删除 ./run-speaker-embedding-cosine-similarity.sh # 三条嵌入的余弦相似度9.3 离线说话人分离./run-offline-speaker-diarization.sh采用 pyannote 语音分段 3D-Speaker 说话人嵌入输出谁在什么时候说话的分段结果。十、模拟流式 ASRVAD 离线识别器对于没有流式模型的场景仓库提供了一种经典工程范式——用 VAD 切段、对每段跑离线识别器从而获得近似流式的体验。其原理在示例 3947 的说明中统一给出使用 Silero VAD 检测语音段逐段送入离线识别器。./run-sense-voice-simulate-streaming-microphone.sh # 例39SenseVoice ./run-fire-red-asr-ctc-simulate-streaming-microphone.sh # 例40FireRedASR CTC ./run-parakeet-tdt-ctc-simulate-streaming-microphone.sh # 例41Parakeet TDT CTC日文 ./run-parakeet-tdt-simulate-streaming-microphone.sh # 例42Parakeet TDT transducer英文 ./run-wenet-ctc-simulate-streaming-microphone.sh # 例43WeNet CTC粤语 ./run-zipformer-ctc-simulate-streaming-microphone.sh # 例44Zipformer CTC中文 ./run-zipformer-transducer-simulate-streaming-microphone.sh # 例45Zipformer transducer中文 ./run-zipformer-ja-reazonspeech-simulate-streaming-microphone.sh # 例46Zipformer transducer日文reazonspeech ./run-qwen3-asr-simulate-streaming-microphone.sh # 例47Qwen3 ASR这些示例均在 rust-api-examples/Cargo.toml 中声明了required-features [mic]因此运行前需确保启用micfeature若同时需要共享链接可组合为cargo run --no-default-features --features shared,mic \ --example zipformer_transducer_simulate_streaming_microphone -- --help十一、在自有 Cargo 工程中配置sherpa-onnx11.1 默认配置静态链接大多数场景只需一行依赖使用 crate 默认 feature 即可[dependencies] sherpa-onnx 1.13.711.2 使用共享库[dependencies] sherpa-onnx { version 1.13.7, default-features false, features [shared] }命令行等价写法cargo run --no-default-features --features shared --example version11.3 指定本地库export SHERPA_ONNX_LIB_DIR/path/to/sherpa-onnx/lib cargo build典型取值包括源码构建产物目录/path/to/sherpa-onnx/build/install/lib或手动解压的 release 归档目录。设置该变量后构建脚本不再自动下载。此外还可设置SHERPA_ONNX_ARCHIVE_DIR指向存放 release 归档的目录让构建脚本从中取用而非联网下载。十二、跨平台构建要点rust-api-examples/for-advanced-users.md 详细给出了四大平台的构建指引要点如下Linuxx86_64 / aarch64静态与共享均支持共享构建自动设置$ORIGINrpath 并复制.so到二进制旁交叉编译 aarch64 需rustup target add aarch64-unknown-linux-gnu与交叉编译器。macOSarm64 / x86_64静态与共享均支持共享构建使用loader_pathrpath可用-DCMAKE_OSX_ARCHITECTURESarm64;x86_64构建通用二进制。Windowsx86_64 / arm64均使用 MSVC 工具链与静态 CRT/MT共享构建会自动复制sherpa-onnx-c-api.dll、onnxruntime.dll、onnxruntime_providers_shared.dll三个 DLL 到输出目录。注意若出现link.exe报错通常是 Cargo 误用了 Git 自带的 link.exe需显式设置CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER或 arm64 版本指向 MSVC 的 link.exe。iOSaarch64-apple-ios/ 模拟器仅支持共享链接构建脚本对 iOS/Android 自动选择共享模式构建脚本自动下载ios-shared-onnxruntime-static.xcframework归档并创建libsherpa-onnx-c-api.dylib符号链接。xcframework 中 onnxruntime 已静态链接进共享库无需额外引入 onnxruntime framework。Androidarm64-v8a / armeabi-v7a / x86 / x86_64仅支持sharedfeature单一归档内含全部 ABI 的libsherpa-onnx-c-api.so与libonnxruntime.so运行时两者都需要构建脚本按 Rust target triple 自动选择 ABI 目录并设置$ORIGINrpath。若偏好从源码构建 sherpa-onnx 原生库而非下载预编译归档可按如下 CMake 流程以 Linux 共享库为例编译安装再通过SHERPA_ONNX_LIB_DIR指给 Rust 构建mkdir build cd build cmake \ -DBUILD_SHARED_LIBSON \ -DSHERPA_ONNX_ENABLE_PORTAUDIOOFF \ -DSHERPA_ONNX_ENABLE_WEBSOCKETOFF \ -DBUILD_ESPEAK_NG_EXEOFF \ -DSHERPA_ONNX_ENABLE_BINARYOFF \ -DCMAKE_INSTALL_PREFIX./install \ .. cmake --build . --target install --config Release export SHERPA_ONNX_LIB_DIR$PWD/install/lib cargo build --release --no-default-features --features shared需要静态链接时把-DBUILD_SHARED_LIBS改为OFF。Tauri v2 桌面/移动端工程可直接参考 tauri-examples/hello_world 的现成配置。十三、小结sherpa-onnx的 Rust 示例层把语音 AI 能力封装成了非常一致的编程范式配置结构体*Config→create()工厂 →accept_waveform喂数据 →decode→get_resultTTS 侧则是OfflineTts::create→generate_with_config→audio.save。配合默认静态链接的零配置体验与 51 个可直接运行的一键脚本开发者可以快速从跑通示例过渡到在自有 Rust 工程中集成离线语音能力。【免费下载链接】sherpa-onnxSpeech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, RK NPU, Axera NPU, Ascend NPU, x86_64 servers, websocket server/client, support 12 programming languages项目地址: https://gitcode.com/GitHub_Trending/sh/sherpa-onnx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表