GitHub:FunAudioLLM/SenseVoice: Multilingual Voice Understanding Model
官方介绍:SenseVoice 是具有音频理解能力的音频基础模型,包括语音识别(ASR)、语种识别(LID)、语音情感识别(SER)和声学事件分类(AEC)或声学事件检测(AED)。本项目提供 SenseVoice 模型的介绍以及在多个任务测试集上的 benchmark,以及体验模型所需的环境安装的与推理方式。
这是和
代码中用到了
这里的模型是
# 创建虚拟环境 python -m venv venv # 激活虚拟环境 .\venv\scripts\activate # 退出虚拟环境 deactivate # 安装依赖(添加到这里,使用的时候方便一些) pip install -r requirements.txt
启动之前先修改一下代码,修改模型的路径,具体代码如下:
model_folder = "E:/llm/" model = AutoModel(model=model_folder + "iic/SenseVoiceSmall", vad_model=model_folder + "iic/speech_fsmn_vad_zh-cn-16k-common-pytorch", vad_kwargs={"max_single_segment_time": 30000}, trust_remote_code=True, )
然后启动
你需要执行
启动 webui.py 之后,还可以使用
import { Client } from "@gradio/client"; const response_0 = await fetch("http://localhost:8888/dmeo.wav"); const exampleAudio = await response_0.blob(); const client = await Client.connect("http://localhost:7860/"); const result = await client.predict("/model_inference", { input_wav: exampleAudio, language: "auto" }); console.log(result.data);
还是这个项目贴心啊,他还提供了纯API服务,基于
注意:因为咱没有算力,所以这里
下面是运行成功的截图:
都有
在测试之前,服务器端( api.py )还需要添加一下允许跨域的支持,如下:
# 部分代码 from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
下面是
# html 代码 <p><input type="file" id="file" placeholder="请选择文件" accept="audio/*" /> <button type="button" id="btn">确定</button></p> # javascript 代码 document.getElementById("btn").addEventListener("click", async () => { const fileEle = document.getElementById("file"); const arrFiles = Array.from(fileEle.files); const keys = Array.from(arrFiles) .map((file) => file.name) .join(","); const formData = new FormData(); Array.from(arrFiles).forEach((file, index) => { formData.append(`files`, file); }); formData.append("keys", keys); formData.append("lang", "auto"); fetch("http://localhost:7860/api/v1/asr", { method: "POST", headers: { Accept: "application/json" }, body: formData }) .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => { console.error("Error:", error); }); });