声音转文字的模型

声音转文字的模型

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)
相关推荐
天诰1 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc2 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络5 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记8 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事8 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力11 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力11 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A11 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
小lo想吃棒棒糖11 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
Thanks_ks11 小时前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境