从零实现本地语音识别(FunASR)

FunASR 是达摩院开源的综合性语音处理工具包,提供语音识别(ASR)、语音活动检测(VAD)、标点恢复(PUNC)等全流程功能,支持多种主流模型(如 Paraformer、Whisper、SenseVoice)的推理、微调和部署。

1. funasr安装

pip install funasr

在这里插入图片描述
在这里插入图片描述

2. 模型下载

pip install modelscope
modelscope download --model iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch

在这里插入图片描述
在这里插入图片描述

3. 依赖库安装

pip install torch torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install addict, datasets -i https://pypi.tuna.tsinghua.edu.cn/simple
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. 模式一:使用本地模型

4.1 程序编码(本地模型)

from funasr import AutoModel

model = AutoModel(
    model="./speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
    disable_update=True,
    device="cpu"  # 或 "cuda" 如果有GPU
)    
res = model.inference(input="asr_example.wav")
print("识别结果:", res[0]["text"])

4.2. 运行测试(本地模型)

在这里插入图片描述

5. 模式二:运行时自动下载模型

5.1 程序编码(运行时下载模型)

from funasr import AutoModel

model = AutoModel(
    model="paraformer-zh",
    disable_update=True,
    device="cpu"  # 或 "cuda" 如果有GPU
)    
res = model.inference(input="asr_example.wav")
print("识别结果:", res[0]["text"])

5.2 运行测试(运行时下载模型)

下载后,第二次执行则不再下载,但程序启动会检查。
在这里插入图片描述

6. 模式三:指定vad等子模型

6.1 程序编码(指定子模型)

from funasr import AutoModel

model = AutoModel(
    model="paraformer-zh",
    model_revision="v2.0.4",
    vad_model="fsmn-vad",
    punc_model="ct-punc",
    disable_update=True,
    device="cpu"  # 或 "cuda" 如果有GPU
)    
res = model.inference(input="asr_example.wav")
print("识别结果:", res[0]["text"])

6.2 运行测试(指定子模型)

在这里插入图片描述

7. 模式四:使用generate

7.1 程序编码(使用generate)

from funasr import AutoModel
import soundfile as sf

model = AutoModel(
    model="paraformer-zh",
    model_revision="v2.0.4",
    vad_model="fsmn-vad",
    punc_model="ct-punc",
    disable_update=True,
    device="cpu"  # 或 "cuda" 如果有GPU
)    
waveform, _ = sf.read("asr_example.wav")
    
result = model.generate(input=waveform)
print("识别结果:", result[0]["text"])

7.2 运行测试(使用generate)

在这里插入图片描述
第二次运行不会下载模型。
在这里插入图片描述

# 创建虚拟环境
python -m venv sensevoice_env
source sensevoice_env/bin/activate  # Linux/macOS
sensevoice_env\Scripts\activate     # Windows

# 安装 SenseVoice 依赖
pip install torch torchaudio numpy

在这里插入图片描述

<think>好的,用户想了解如何在本地部署FunASR的实时语音识别流式接口。首先,我需要回忆一下之前提供的引用内容,看看有没有相关的步骤或教程。引用1提到了FunASR提供本地或云端部署的实时听写服务,使用了runtime-SDK,集成了VAD、Paraformer流式ASR、标点预测等功能。引用2详细介绍了docker部署和springboot集成,可能涉及到环境配置和镜像启动。引用3则强调了Paraformer模型的优势,以及环境配置的注意事项。 用户的需求是本地部署流式接口,可能需要分步骤指导。首先,环境准备,比如安装Docker,这是引用2提到的。然后,下载Docker镜像,启动服务,这部分引用2有说明。接着可能需要配置参数,比如端口、模型路径,引用1和3提到了VAD和流式ASR模型的使用。然后测试接口,比如用Python脚本发送音频流,这里需要示例代码。可能还要提到SSL证书的问题,引用2提到关闭证书的方法。 需要确保步骤清晰,按照安装环境、拉取镜像、启动服务、配置、测试的顺序来组织。同时,用户可能遇到的问题,比如证书问题、守护进程重启,需要提醒注意事项。最后,生成相关问题,比如性能优化或高并发处理,参考引用中的内容。要确保回答中的LaTeX格式正确,如模型名称用$符号包裹,独立公式用$$,但这里可能不太需要公式,主要注意代码块和引用标识。引用标识要放在相关段落末尾,比如在提到模型性能时引用3,部署步骤引用2和1。需要检查所有步骤是否覆盖了用户的问题,是否遗漏了关键点,比如实时流式处理的具体配置,模型的选择等。可能还需要提到如何集成到应用中,比如引用2中的springboot例子,但用户主要问的是部署,所以可能不需要深入集成部分。总之,整理出详细的步骤,确保引用正确,语法正确,使用中文回答,并生成相关问题。</think>### 如何在本地部署FunASR实现实时语音识别流式接口 #### 1. 环境准备 - **安装Docker**:确保本地已安装Docker环境,用于快速部署FunASR服务。Docker的安装可参考[官方文档](https://docs.docker.com/engine/install/)[^2]。 - **下载FunASR镜像**:通过以下命令拉取FunASR官方镜像: ```bash docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.1.6 ``` #### 2. 启动FunASR服务 - **运行Docker容器**:启动容器并映射端口(例如`10095`用于WebSocket通信): ```bash docker run -p 10095:10095 --name funasr-server -d registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.1.6 ``` 注意:若无需SSL加密,可通过参数`--ssl 0`关闭证书验证。 #### 3. 配置流式识别参数 FunASR流式接口依赖以下组件: - **VAD模型**:实时检测语音端点(如`fsmn-vad`)。 - **流式ASR模型**:使用`Paraformer-large`流式版本进行实时语音写。 - **标点模型**:对输出文本添加标点(如`CT-Transformer`模型)。 在启动服务时,需指定模型路径: ```bash docker run ... --asr_model paraformer-large-streaming --vad_model fsmn-vad --punc_model ct-punc ``` #### 4. 测试流式接口 通过Python脚本调用WebSocket接口实现音频流实时传输: ```python import websockets import asyncio async def send_audio(): async with websockets.connect("ws://localhost:10095") as ws: with open("audio.wav", "rb") as f: while True: data = f.read(8000) # 分片发送音频流 if not data: break await ws.send(data) result = await ws.recv() print(f"实时结果: {result}") asyncio.get_event_loop().run_until_complete(send_audio()) ``` #### 5. 关键注意事项 - **模型性能**:Paraformer流式模型在60,000小时中文数据集上训练,支持时间戳预测和热词定制,效果优于Whisper[^3]。 - **高并发处理**:FunASR支持多路请求并行处理,适用于实时会议录等场景[^1]。 - **调试问题**:若服务异常,可通过`docker logs funasr-server`查看日志,或重启容器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

具身小站

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

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

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

打赏作者

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

抵扣说明:

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

余额充值