5步搞定Fun-ASR部署:打造本地多语言语音识别系统
本文介绍了如何在星图GPU平台上自动化部署Fun-ASR-MLT-Nano-2512语音识别模型镜像,快速搭建本地多语言语音识别系统。该平台简化了部署流程,用户可轻松利用该镜像实现音频文件的自动化文字转写,典型应用场景包括会议录音整理、播客内容生成文字稿等,有效提升工作效率并保障数据隐私。
5步搞定Fun-ASR部署:打造本地多语言语音识别系统
1. 引言
1.1 为什么你需要一个本地语音识别系统
想象一下这个场景:你正在参加一个跨国团队的线上会议,大家用中文、英文、日文混合交流。会议结束后,你需要整理会议纪要,但面对一个多小时的录音,手动转写不仅耗时,还可能因为语言切换而遗漏关键信息。
或者,你是一个内容创作者,需要把录制的播客、视频课程快速转成文字稿。市面上的在线语音识别服务要么收费昂贵,要么对隐私保护不够,要么不支持你需要的方言或专业术语。
这就是为什么你需要一个本地部署的语音识别系统。今天我要介绍的Fun-ASR-MLT-Nano-2512,就是阿里通义实验室推出的一个轻量级多语言语音识别模型。它支持31种语言,包括中文、英文、粤语、日文、韩文等,而且完全可以在你自己的电脑或服务器上运行,数据不出本地,安全又高效。
1.2 这个教程能帮你解决什么问题
很多人看到“语音识别”、“AI模型”这些词就觉得门槛很高,需要专业的机器学习知识才能搞定。其实不然,现在的AI工具已经越来越易用了。
通过这个教程,我将用最简单的语言,带你一步步完成Fun-ASR的部署和使用。你不需要是AI专家,也不需要懂复杂的数学原理,只需要跟着我的步骤操作,就能在自己的电脑上搭建一个功能强大的语音识别系统。
具体来说,你将学会:
- 如何在5个步骤内完成Fun-ASR的完整部署
- 如何通过网页界面轻松上传音频并获取识别结果
- 如何用Python代码调用模型,实现自动化处理
- 如何用Docker容器化部署,方便迁移和分享
- 如何解决部署过程中可能遇到的常见问题
整个过程就像搭积木一样简单,让我们开始吧。
2. 环境准备:搭建你的AI工作台
2.1 检查你的电脑配置
在开始之前,我们先看看你的电脑需要满足什么条件。Fun-ASR-MLT-Nano-2512虽然是个“大模型”,但它其实很轻量,对硬件要求并不高。
最低配置要求:
| 组件 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Linux (Ubuntu 20.04或更高) | 这是最稳定的环境,其他Linux发行版也可以 |
| Python版本 | 3.8或以上 | 建议用3.8-3.11之间的版本 |
| 内存 | 8GB RAM | 运行模型和处理音频需要足够的内存 |
| 存储空间 | 至少5GB可用 | 模型文件2GB,加上依赖和代码 |
| GPU (可选) | 支持CUDA的NVIDIA显卡 | 有GPU会快很多,没有也能用CPU |
如果你没有Linux系统怎么办?
别担心,有几个解决方案:
- Windows用户:可以用WSL2(Windows Subsystem for Linux),这是微软官方提供的Linux子系统,用起来和真Linux几乎一样
- Mac用户:macOS本身基于Unix,可以直接安装,或者用Docker
- 云服务器:租一个云服务器,比如阿里云、腾讯云的轻量应用服务器,一个月几十块钱
我个人建议,如果你是新手,用云服务器最简单。选一个Ubuntu 20.04的系统镜像,配置选2核4G或更高,一个小时就能搞定所有环境。
2.2 第一步:安装基础依赖
登录你的Linux系统,打开终端,我们开始安装必要的软件。
首先更新系统包管理器:
sudo apt-get update
安装Python和pip(如果还没有的话):
sudo apt-get install -y python3 python3-pip python3-venv
安装音频处理工具FFmpeg,这是处理各种音频格式的关键:
sudo apt-get install -y ffmpeg
安装Git,用来下载代码:
sudo apt-get install -y git
这些命令执行完后,你的系统基础环境就准备好了。
2.3 第二步:创建Python虚拟环境
为什么需要虚拟环境?简单说,就是给你的Fun-ASR项目创建一个独立的“小房间”,里面的Python包不会影响系统其他项目,也不会被其他项目影响。
创建虚拟环境:
python3 -m venv funasr-env
激活虚拟环境:
source funasr-env/bin/activate
激活后,你会看到命令行前面多了(funasr-env)的提示,表示你现在在这个虚拟环境里工作。
3. 快速部署:5步搭建语音识别服务
3.1 第三步:下载代码和模型
现在我们来获取Fun-ASR的代码和模型文件。
首先下载代码:
git clone https://github.com/FunAudioLLM/Fun-ASR.git
cd Fun-ASR
进入Nano版本目录:
cd Fun-ASR-MLT-Nano-2512
安装Python依赖包:
pip install --upgrade pip
pip install -r requirements.txt
这个过程可能会花几分钟时间,因为要下载和安装一些机器学习相关的库,比如PyTorch、Gradio等。
接下来下载模型文件。模型文件比较大,有2GB左右,所以需要一点时间:
wget https://huggingface.co/FunAudioLLM/Fun-ASR-MLT-Nano-2512/resolve/main/model.pt
如果下载速度慢,你可以用浏览器打开上面的链接,手动下载后放到当前目录。
下载完成后,检查一下文件大小:
ls -lh model.pt
应该显示大约2.0GB。
3.2 第四步:启动Web服务
Fun-ASR自带了一个网页界面,用起来非常方便,不需要写任何代码就能测试功能。
启动服务:
nohup python app.py > /tmp/funasr_web.log 2>&1 &
echo $! > /tmp/funasr_web.pid
这个命令做了几件事:
nohup:让程序在后台运行,即使你关闭终端也不会停止> /tmp/funasr_web.log 2>&1:把程序的输出保存到日志文件&:在后台运行echo $! > /tmp/funasr_web.pid:保存进程ID,方便后面管理
检查服务是否启动成功:
ps aux | grep "python app.py"
如果看到类似下面的输出,说明服务正在运行:
user 12345 0.5 2.1 1023456 43210 pts/0 Sl 10:30 0:01 python app.py
查看服务日志:
tail -f /tmp/funasr_web.log
在日志里找这一行:
Running on local URL: http://127.0.0.1:7860
看到这个就说明服务启动成功了。
3.3 第五步:测试你的语音识别系统
现在打开浏览器,访问 http://你的服务器IP:7860。
如果你是在本地电脑上部署的,就访问 http://localhost:7860。
你会看到一个简洁的网页界面,大概长这样:
+-----------------------------------------+
| Fun-ASR语音识别系统 |
| |
| [上传音频文件] 或 [录制音频] |
| |
| 语言选择: [自动检测] ▼ |
| |
| [开始识别] |
| |
| 识别结果: |
| _____________________________________ |
| |
+-----------------------------------------+
我们来做个简单测试。在项目目录里有一个example文件夹,里面有几个示例音频文件:
ls example/
你会看到:
zh.mp3- 中文示例en.mp3- 英文示例ja.mp3- 日文示例ko.mp3- 韩文示例yue.mp3- 粤语示例
在网页界面上传example/zh.mp3,点击“开始识别”。稍等几秒钟(第一次运行需要加载模型,大概30-60秒),你就会看到识别出的中文文字。
恭喜!你的本地语音识别系统已经搭建成功了。
4. 进阶使用:代码调用和功能扩展
4.1 用Python代码调用模型
网页界面很方便,但如果你想批量处理文件,或者把语音识别集成到自己的程序里,就需要用代码来调用。别担心,代码也很简单。
创建一个新的Python文件,比如叫test_api.py:
from funasr import AutoModel
# 初始化模型
print("正在加载模型,第一次可能需要30-60秒...")
model = AutoModel(
model=".", # 使用当前目录下的模型
trust_remote_code=True, # 允许加载自定义代码
device="cuda:0" if torch.cuda.is_available() else "cpu" # 自动检测GPU
)
print("模型加载完成!")
# 识别单个文件
audio_file = "example/en.mp3" # 英文示例
result = model.generate(
input=[audio_file], # 可以传多个文件,比如["file1.mp3", "file2.mp3"]
cache={}, # 用于流式识别,保持对话上下文
batch_size=1, # 一次处理几个文件,有GPU可以调大
language="auto", # 自动检测语言,也可以指定如"中文"、"english"
itn=True # 启用数字转换,比如"one"转成"1"
)
# 输出结果
print("识别结果:")
print(result[0]["text"]) # 文本内容
print(f"语言:{result[0]['lang']}") # 检测到的语言
print(f"时长:{result[0]['duration']}秒") # 音频时长
运行这个脚本:
python test_api.py
你会看到类似这样的输出:
正在加载模型,第一次可能需要30-60秒...
模型加载完成!
识别结果:
Hello, this is a test recording for the Fun-ASR model.
语言:english
时长:3.2秒
4.2 批量处理多个文件
如果你有很多音频文件需要转写,可以这样批量处理:
import os
from funasr import AutoModel
# 初始化模型
model = AutoModel(model=".", trust_remote_code=True)
# 指定音频文件夹
audio_folder = "my_audio_files"
output_file = "transcriptions.txt"
# 获取所有音频文件
audio_files = []
for file in os.listdir(audio_folder):
if file.endswith((".mp3", ".wav", ".m4a", ".flac")):
audio_files.append(os.path.join(audio_folder, file))
print(f"找到 {len(audio_files)} 个音频文件")
# 批量识别
results = []
for i in range(0, len(audio_files), 3): # 每次处理3个文件
batch = audio_files[i:i+3]
print(f"处理文件 {i+1}-{min(i+3, len(audio_files))}...")
batch_results = model.generate(
input=batch,
batch_size=3,
language="auto"
)
for j, result in enumerate(batch_results):
filename = os.path.basename(batch[j])
text = result["text"]
lang = result["lang"]
results.append(f"{filename} | {lang} | {text}")
# 保存结果
with open(output_file, "w", encoding="utf-8") as f:
for line in results:
f.write(line + "\n")
print(f"识别完成!结果已保存到 {output_file}")
这个脚本会自动扫描指定文件夹里的所有音频文件,批量识别,然后把结果保存到文本文件里。
4.3 流式识别:实时语音转文字
如果你需要实时字幕功能,比如直播时的自动字幕,可以用流式识别:
import pyaudio
import numpy as np
from funasr import AutoModel
# 初始化模型
model = AutoModel(model=".", trust_remote_code=True)
# 音频参数
CHUNK = 1600 # 每次读取的音频数据大小
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000 # 采样率,Fun-ASR推荐16kHz
# 初始化PyAudio
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("开始录音,按Ctrl+C停止...")
cache = {} # 保存识别状态,实现上下文连贯
try:
while True:
# 读取音频数据
data = stream.read(CHUNK)
audio_array = np.frombuffer(data, dtype=np.int16).astype(np.float32) / 32768.0
# 流式识别
result = model.generate(
input=[audio_array],
cache=cache,
is_final=False, # 表示还有后续数据
language="auto"
)
if result[0]["text"]:
print(f"识别: {result[0]['text']}", end="\r")
except KeyboardInterrupt:
print("\n停止录音")
finally:
stream.stop_stream()
stream.close()
p.terminate()
这个程序会实时录制你的声音,然后边录边识别,适合做实时字幕或者语音助手。
5. 生产部署:用Docker一键部署
5.1 为什么用Docker?
你可能已经成功部署了Fun-ASR,但有没有想过这些问题:
- 换一台电脑又要重新配置环境,好麻烦
- 想分享给同事用,但他们的系统环境不一样
- 服务器升级了,原来的程序跑不起来了
Docker就是为了解决这些问题而生的。它可以把你的应用和所有依赖打包成一个“集装箱”,在任何支持Docker的电脑上都能运行,而且运行效果完全一样。
5.2 创建Docker镜像
首先,确保你的系统已经安装了Docker。如果没有,可以这样安装:
# Ubuntu系统
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
# 把当前用户加入docker组,这样不用每次都加sudo
sudo usermod -aG docker $USER
# 需要重新登录生效
创建一个Dockerfile文件(注意大小写):
# 使用Python 3.11的官方镜像作为基础
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
ffmpeg \
git \
wget \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目文件
COPY . .
# 下载模型文件(生产环境建议挂载外部卷)
RUN wget -O model.pt https://huggingface.co/FunAudioLLM/Fun-ASR-MLT-Nano-2512/resolve/main/model.pt
# 暴露服务端口
EXPOSE 7860
# 启动服务
CMD ["python", "app.py"]
构建Docker镜像:
docker build -t funasr-nano:latest .
这个过程会下载基础镜像、安装依赖、下载模型,可能需要10-20分钟,取决于你的网速。
5.3 运行Docker容器
镜像构建完成后,就可以运行了:
# 如果有NVIDIA GPU
docker run -d \
-p 7860:7860 \
--gpus all \
--name funasr \
funasr-nano:latest
# 如果没有GPU,用CPU版本
docker run -d \
-p 7860:7860 \
--name funasr \
funasr-nano:latest
参数解释:
-d:后台运行-p 7860:7860:把容器的7860端口映射到主机的7860端口--gpus all:使用所有GPU(如果没有GPU就去掉这个参数)--name funasr:给容器起个名字,方便管理funasr-nano:latest:使用的镜像名
查看容器状态:
docker ps
查看容器日志:
docker logs funasr
停止容器:
docker stop funasr
启动已停止的容器:
docker start funasr
删除容器:
docker rm funasr
5.4 数据持久化:保存你的识别记录
默认情况下,Docker容器里的数据是临时的,容器删除后数据就没了。如果你想保存识别记录或者上传的音频文件,可以挂载数据卷:
# 创建本地目录保存数据
mkdir -p ~/funasr_data
# 运行容器并挂载目录
docker run -d \
-p 7860:7860 \
--gpus all \
-v ~/funasr_data:/app/data \ # 挂载数据目录
--name funasr \
funasr-nano:latest
这样,容器里的/app/data目录就会映射到你本地的~/funasr_data目录,数据会永久保存。
6. 常见问题与解决方案
6.1 部署过程中的常见错误
问题1:模型下载太慢或失败
解决方案:
- 用浏览器手动下载:打开 https://huggingface.co/FunAudioLLM/Fun-ASR-MLT-Nano-2512/resolve/main/model.pt
- 下载后放到项目目录,改名为
model.pt - 或者用其他下载工具,比如
axel多线程下载:
# 安装axel
sudo apt-get install -y axel
# 多线程下载
axel -n 10 https://huggingface.co/FunAudioLLM/Fun-ASR-MLT-Nano-2512/resolve/main/model.pt
问题2:内存不足,程序崩溃
解决方案:
- 检查可用内存:
free -h - 如果内存不足,可以尝试:
- 关闭其他占用内存的程序
- 增加虚拟内存(交换空间):
# 创建4GB的交换文件
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效,添加到/etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- 或者用CPU模式运行,虽然慢但内存占用少
问题3:端口7860被占用
解决方案:
- 查看哪个程序占用了7860端口:
sudo lsof -i :7860
- 停止占用端口的程序,或者换一个端口:
# 修改app.py中的端口号
# 找到这行:demo.launch(server_name="0.0.0.0", server_port=7860)
# 把7860改成其他端口,比如7861
# 或者运行容器时映射其他端口
docker run -d -p 7861:7860 --name funasr funasr-nano:latest
6.2 使用中的性能优化
如何提高识别速度?
- 使用GPU:这是最有效的方法。有GPU比CPU快3-5倍
- 调整batch_size:批量处理时,适当增加batch_size可以提高吞吐量
# 根据你的GPU显存调整,T4显卡建议batch_size=3
result = model.generate(input=audio_files, batch_size=3)
- 音频预处理:确保音频是16kHz采样率,单声道,这样模型处理最快
如何提高识别准确率?
- 提供语言提示:如果你知道音频是什么语言,明确告诉模型:
result = model.generate(input=audio_file, language="中文") # 或"english"、"japanese"等
- 音频质量:尽量用清晰的音频,减少背景噪音
- 启用ITN:数字转换功能能让结果更规范:
result = model.generate(input=audio_file, itn=True)
# 会把"one hundred"转换成"100","二零二三年"转换成"2023年"
6.3 模型支持的语言列表
Fun-ASR-MLT-Nano-2512支持31种语言,包括:
- 中文相关:普通话、粤语、四川话、吴语等
- 主要语言:英语、日语、韩语、法语、德语、西班牙语、俄语等
- 其他语言:阿拉伯语、印地语、葡萄牙语、意大利语、荷兰语等
完整列表可以在模型的Hugging Face页面查看。实际测试中,对中文、英文、日文、韩文的识别效果最好。
7. 总结
7.1 回顾一下我们做了什么
通过这个教程,我们完成了Fun-ASR-MLT-Nano-2512语音识别系统的完整部署。让我们简单回顾一下:
- 环境准备:检查系统配置,安装必要的依赖
- 代码获取:下载Fun-ASR项目和模型文件
- 服务启动:运行Web服务,通过浏览器访问
- 功能测试:用示例音频验证识别效果
- 进阶使用:学习用Python代码调用API
- 生产部署:用Docker容器化,方便迁移和分享
- 问题解决:了解常见错误和优化方法
整个过程其实并不复杂,就像搭积木一样,一步步来就能成功。最关键的是,你现在有了一个完全在自己掌控中的语音识别系统,数据安全有保障,而且完全免费。
7.2 实际应用场景
这个系统可以做什么?让我给你一些实际的想法:
个人使用:
- 会议录音自动转文字,再也不用手动整理纪要
- 把播客、视频课程转成文字稿,方便复习和搜索
- 实时字幕生成,看外语视频更方便
- 语音日记,说完自动转成文字保存
团队协作:
- 跨国会议自动翻译和记录
- 客户访谈录音快速整理
- 培训内容自动生成文字版
- 多语言客服对话分析
内容创作:
- 视频字幕自动生成
- 播客节目文字稿
- 采访内容快速整理
- 多语言内容本地化
7.3 下一步学习建议
如果你对这个系统感兴趣,想进一步深入:
- 学习更多API功能:查看Fun-ASR的官方文档,了解所有参数和功能
- 尝试其他模型:Fun-ASR还有更大的模型版本,准确率更高但需要更多资源
- 集成到现有系统:把语音识别功能嵌入到你正在开发的应用中
- 定制化训练:如果你有特定领域的音频数据,可以微调模型,让它在你的领域表现更好
最重要的是动手实践。找一些你自己的音频文件试试,看看识别效果如何。遇到问题不要怕,按照教程里的解决方案一步步排查,或者在网上搜索相关错误信息。
语音识别技术正在变得越来越普及,掌握这样一个本地部署的工具,不仅能提高你的工作效率,还能在需要处理敏感音频时保护隐私。希望这个教程对你有帮助,祝你使用愉快!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)