声音转文字的模型

声音转文字的模型

1 介绍

开源的声音转文字的模型比较多,例如:Qwen3-ASR(阿里开源,中文较强,基础模型)、Fun-ASR-Nano(阿里开源,中文较强,工业级偏向实时会议)、Whisper(OpenAI开源,支持英文较强)、VibeVoice-ASR(微软开源,中英文混合)、MiMo-V2.5-ASR(小米,中文较强,偏向方言)、FireRedASR2-AED(小红书,中文较强,偏向方言/口音、英语)。

其中较强的是Fun-ASR-Nano-2512,不过我使用过程中发现,在噪杂的环境中识别文字较差,不过它偏向实时分析。因此,添加降噪的模型DeepFilterNet3。DeepFilterNet3 深度学习语音增强 人群嘈杂、非稳态噪声(会议室背景人声、走动杂音) 会议首选,保人声,抑制背景杂声,MIT开源,CPU/GPU都能跑,Python原生API,输出音频直接喂ASR 模型首次运行自动下载权重;输入48k,降噪后需要重采样到16k给ASR。

Fun-ASR-Nano模型地址

复制代码
# 模型地址
https://modelscope.cn/models/FunAudioLLM/Fun-ASR-Nano-2512

# 开发文档
https://www.funasr.com/docs/

DeepFilterNet模型

复制代码
# Github地址
https://github.com/Rikorose/DeepFilterNet

2 Python使用

2.1 安装依赖

Python安装依赖包

复制代码
pip install torch torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install -U funasr modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装依赖

复制代码
# Ubuntu安装依赖
sudo apt install ffmpeg

2.2 Python源代码

注意:下面的代码不能直接使用,需要做一些调整。

python 复制代码
import os

from funasr import AutoModel

local_model_dir = "E:/asr/model"
cache_model_dir = "E:/asr/cache"


def first_online(audio_path, text_path):
    # 第一次下载数据
    from modelscope import snapshot_download

    # 模型路径
    model_id = r"FunAudioLLM/Fun-ASR-Nano-2512"
    # 第一次下载数据
    # model_dir = snapshot_download(model_id)
    # 第二次,强制使用缓存
    model_dir = snapshot_download(model_id, cache_dir=cache_model_dir, local_dir=local_model_dir, local_files_only=True)

    # 第一次下载数据
    model = AutoModel(model=model_dir, vad_model="fsmn-vad", device="cpu")

    # # GPU
    # model = AutoModel(model=model_dir, vad_model="fsmn-vad", device="cuda:0")

    # 生成文本
    res = model.generate(input=audio_path, batch_size=1)

    # 识别结果写入文本文件
    text = res[0]["text"]

    print(text)
    with open(text_path, "w", encoding="utf-8") as f:
        f.write(text)

    print("finished")


def generate_text_offline(audio_path, text_path):
    # 彻底关闭 ModelScope/FunASR 的联网检查
    os.environ["MODELSCOPE_DISABLE_REMOTE"] = "1"
    os.environ["FUNASR_NO_UPDATE_CHECK"] = "1"

    # 替换成你机器上实际下载好的模型路径
    model_dir = local_model_dir + "/Fun-ASR-Nano-2512"
    vad_dir = local_model_dir + "/speech_fsmn_vad_zh-cn-16k-common-pytorch"

    # 支持GPU,disable_update=True表示禁用联网更新
    model = AutoModel(model=model_dir, vad_model=vad_dir, device="cpu", disable_update=True)

    # 生成文本
    res = model.generate(input=audio_path, batch_size=1)

    # 识别结果写入文本文件
    text = res[0]["text"]

    print(text)
    with open(text_path, "w", encoding="utf-8") as f:
        f.write(text)

    print("finished")


if __name__ == '__main__':
    audio_path_temp = r"E://sound/asr_example_zh.wav"
    audio_text_path_temp = r"E://sound/asr_example_zh.txt"

    # 在线模型
    first_online(audio_path_temp, audio_text_path_temp)
    
    # 离线
    generate_text_offline(audio_path_temp, audio_text_path_temp)
相关推荐
信誓旦旦的程序猿8 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河9 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年9 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Williamtym9 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
CS创新实验室9 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
CCblandy9 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
quantdash_cc9 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
把我格子衫拿来10 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
cpolar技术支持10 小时前
把配置发出去怕带出密钥?先把含凭据配置转成脱敏只读快照,用 cpolar 给同事核对差异
运维·python·内网穿透·cpolar·配置脱敏