前言

SenseVoice多语言音频理解模型,支持语音识别、语种识别、语音情感识别、声学事件检测、逆文本正则化等能力,采用工业级数十万小时的标注音频进行模型训练,保证了模型的通用识别效果。模型可以被应用于中文、粤语、英语、日语、韩语音频识别,并输出带有情感和事件的富文本转写结果。本文章就介绍如何使用SenseVoice-Small进行语音识别。

安装环境

本文章使用的是sherpa_onnx 作为推理框架,使用下面命令安装全部的依赖库。

pip install sherpa_onnx yeaudio tqdm numpy loguru

语音识别推理

通过下面的几行代码即可完成语音识别,支持的语言有:自动识别、中文普通话、粤语、英语、日语、韩语。

from utils.model import SenseVoiceSmallModel

model_path = "models/"
# 支持的语言:auto、zh、en、yue、ja、ko
model = SenseVoiceSmallModel(model_path=model_path, provider="cpu", language="auto")
model.load_model()

# 测试音频的路径
audio_path = "test_long.wav"
result = model.transcribe(audio_path)
print(f"识别结果:{result['text']}")
for timestamp in result['timestamps']:
    print(f"[{timestamp['start']} - {timestamp['end']}s]:情感:{timestamp['emotion']},语言:{timestamp['lang']},文本:{timestamp['text']}")

GUI界面识别程序

本项目提供了GUI界面程序,可以选择一个音频文件或者视频文件,然后可以选择要识别的语言,最好点击识别就可以识别出音频中的语音内容。

SenseVoice-Small语音识别服务

识别的结果是带时间戳的,所以可以对语音识别结果进行分段,把每段的语音识别结果标记上开始时间和结束时间,只要点击识别结果的右上方选择结果类型即可。同时可以把识别结果到导出为字幕文件。

SenseVoice-Small语音识别服务

可以选择导出字幕文件的格式,然后点击确定导出即可导出文件。

SenseVoice-Small语音识别服务

语音识别API服务

下面为语音识别服务的代码片段,通过这个接口,其他设备,如Android端、网页端调用。

@app.post("/asr")
async def speech_to_text(audio: UploadFile = File()):
    """
    音频转文本
    """
    logger.debug(f"收到识别请求,文件: {audio.filename}")

    # 音频格式
    file_ext = os.path.splitext(audio.filename)[1]

    # 保存临时文件
    file_ext = os.path.splitext(audio.filename)[1]
    tmp_file_name = f"{uuid.uuid4()}{file_ext}"
    tmp_file_path = os.path.join(tmp_audio_path, tmp_file_name)
    with open(tmp_file_path, "wb") as bf:
        bf.write(audio.file.read())
        logger.info(f"已保存临时文件: {tmp_file_path}")

    try:
        result = await model.transcribe_async(tmp_file_path)
        return {"code": 0, "msg": "success", "data": result}
    except Exception as e:
        logger.error(f"识别过程中发生错误: {e}")
        return {"code": 1, "msg": str(e), "data": None}
    finally:
        # 删除临时文件
        if os.path.exists(tmp_file_path):
            os.remove(tmp_file_path)
        logger.info(f"已删除临时文件: {tmp_file_path}")

本项目同时提供了一个页面,可以直接部署使用,也或者当做测试使用。同样,该页面也可以选择显示全部的识别结果,或者分段结果。

SenseVoice-Small语音识别服务

例如下面的就是分段结果显示,同时可以点击导出SRT、VTT、TXT这三种格式的字幕文件。

SenseVoice-Small语音识别服务

扫码入知识星球,搜索【SenseVoice-Small语音识别服务】获取源码

知识星球
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐