sherpa-onnx说话人识别+语音识别自动开启(VAD)+语音识别Python API

专栏总目录

        获取该开源项目的渠道,是我在b站上,看到了由csukuangfj制作的一套语音识别视频。以下地址均为csukuangfj在视频中提供,感谢分享!

新一代 Kaldi: 说话人识别+VAD+语音识别之 Python API_哔哩哔哩_bilibili

开源项目地址:GitHub - k2-fsa/sherpa-onnx: Speech-to-text, text-to-speech, and speaker recognition using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, Raspberry Pi, RISC-V, x86_64 servers, websocket server/client, C/C++, Python, Kotlin, C#, Go, NodeJS, Java, Swift, Dart, JavaScript

文档地址:sherpa-onnx — sherpa 1.3 documentation

        我之前已经使用了sherpa-ncnn和安装了kaldi,所以有些需要安装依赖的情况,跟大家会有不同。相关依赖安装情况,可以参考使用sherpa-ncnn进行中文语音识别(ubuntu22)-CSDN博客详细解析Ubuntu22 部署Kaldi大模型_kaldi布署-CSDN博客两篇文章。

一、安装sherpa-onnx模型

        文档中介绍了多种语言及环境的使用方法,这里只针对python开发包的安装使用进行测试。

(一)下载模型脚本文件

从开源项目地址下载文件:GitHub - k2-fsa/sherpa-onnx: Speech-to-text, text-to-speech, and speaker recognition using next-gen Kaldi with onnxruntime without Internet connec

### 使用 Sherpa-ONNX 实现说话识别 Sherpa-ONNX 提供了一套完整的解决方案来执行说话识别任务。该框架不仅能够处理传统的语音信号输入,还集成了自动语音活动检测(VAD),从而提高了实际应用中的鲁棒性和效率[^1]。 #### 安装依赖项 为了开始使用 Sherpa-ONNX 进行说话识别,需先安装必要的软件包: ```bash pip install -r requirements.txt ``` 这一步骤会下载并配置所有必需的Python库,确保开发环境准备就绪。 #### 加载预训练模型 对于说话识别而言,通常采用预先训练好的神经网络模型来进行特征提取。这些模型可以从官方仓库获取,并加载至内存中以便后续调用: ```python import sherpa_onnx config = { "model": "./pretrained_model.onnx", } recognizer = sherpa_onnx.SherpaOnnx(config) ``` 上述代码片段展示了如何指定路径读取 `.onnx` 文件格式存储的模型权重数据[^3]。 #### 执行说话识别 一旦完成了初始化工作之后,就可以利用 `recognizer` 对象对音频样本实施分析了。这里给出一段简单的例子说明怎样从本地文件读入待测录音片段,并将其送入算法计算相似度得分: ```python audio_file_path = 'path/to/your/audio.wav' result = recognizer.recognize(audio_file=audio_file_path) print(f"Recognition result: {result}") ``` 这段脚本实现了基本的功能——给定一个 WAV 格式的单声道 PCM 编码的声音文件作为输入参数传递给 recognize 方法后返回匹配结果字符串表示形式的结果。 当涉及到连续流式采集自麦克风的数据时,则可参照如下方式调整程序逻辑结构以适应不同场景需求: ```python from sounddevice import InputStream import numpy as np def callback(indata, frames, time, status): global recognizer if any(status): print('Error:', status) samples = indata[:, :].reshape(-1).astype(np.float32) res = recognizer.decode(samples=samples) print(res) with InputStream(callback=callback): input() ``` 此部分代码定义了一个回调函数用于接收来自硬件设备传来的原始采样点序列,并即时交给解码器处理得到最终输出。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值