手把手教你部署FireRedASR-AED-L:一键启动语音转文字Web应用

1. 为什么你需要这个语音转文字工具

想象一下,你手头有一段会议录音,需要快速整理成文字纪要;或者你录了一段课程音频,想把它变成文字笔记。传统的方法要么是手动听写,耗时耗力,要么是找在线服务,又担心隐私和数据安全。

今天我要介绍的FireRedASR-AED-L,就是一个可以部署在你本地服务器上的语音转文字工具。它基于1.1B参数的大模型,支持中文和英文识别,准确率相当不错。最重要的是,它提供了一个Web界面,你只需要打开浏览器,上传音频文件,就能看到识别结果,整个过程就像使用一个在线网站一样简单。

这个工具特别适合:

  • 需要处理大量音频转录的团队或个人
  • 对数据隐私有要求的场景
  • 希望将语音识别能力集成到自己系统中的开发者
  • 想要体验本地部署AI模型的技术爱好者

接下来,我会带你一步步完成部署,从环境准备到实际使用,保证你能在自己的机器上跑起来。

2. 部署前的准备工作

2.1 硬件和系统要求

在开始之前,我们先看看需要什么样的环境。虽然这个工具对硬件有一定要求,但现在的普通服务器基本都能满足。

硬件要求:

  • GPU:推荐使用NVIDIA GPU,显存至少8GB(模型本身需要4.4GB空间)
  • 内存:至少16GB RAM
  • 存储:需要10GB以上的可用空间(用于存放模型和依赖)

软件要求:

  • 操作系统:Ubuntu 20.04或更高版本(其他Linux发行版也可以,但需要相应调整)
  • Python:3.8或更高版本
  • CUDA:11.7或更高版本(如果使用GPU)

如果你没有GPU,也可以用CPU运行,但速度会慢很多。对于生产环境,强烈建议使用GPU。

2.2 检查你的环境

在开始部署之前,先确认一下你的环境是否满足要求。打开终端,运行以下命令:

# 检查Python版本
python3 --version

# 检查CUDA是否可用(如果有GPU)
nvidia-smi

# 检查内存和存储
free -h
df -h

如果看到Python版本是3.8以上,GPU信息正常显示,内存和存储也足够,那就可以继续了。

3. 快速部署步骤

3.1 获取项目文件

首先,我们需要把项目文件下载到本地。如果你已经有了镜像环境,这一步可能已经完成了。如果没有,可以按照以下步骤操作:

# 创建一个工作目录
mkdir -p ~/asr_project
cd ~/asr_project

# 这里假设你已经有了项目文件
# 如果没有,可以从GitHub克隆(如果可用)
# git clone https://github.com/FireRedTeam/FireRedASR.git

根据镜像文档,项目文件应该已经在/root/FireRedASR-official/目录下了。我们直接进入这个目录:

cd /root/FireRedASR-official/

3.2 了解目录结构

在开始之前,我们先看看项目的目录结构,这样后面操作时心里有数:

/root/FireRedASR-official/
├── app.py              # Web服务的主程序文件
├── start.sh            # 一键启动脚本
├── requirements.txt    # Python依赖包列表
├── fireredasr/         # 核心代码目录
│   ├── speech2text.py  # 命令行工具
│   ├── models/         # 模型定义
│   └── tokenizer/      # 分词器
├── pretrained_models/  # 模型文件(软链接)
│   └── FireRedASR-AED-L/
│       ├── model.pth.tar      # 模型权重(4.4GB)
│       ├── cmvn.ark           # 特征归一化文件
│       ├── dict.txt           # 词典文件
│       └── train_bpe1000.model # BPE分词模型
└── examples/           # 示例文件
    └── wav/            # 示例音频文件

关键文件说明:

  • app.py:这是Web服务的入口文件,我们主要操作这个
  • start.sh:启动脚本,简化启动过程
  • requirements.txt:列出了所有需要的Python包
  • pretrained_models/:存放模型文件,注意这里是软链接,实际文件在/root/ai-models/目录

3.3 一键启动Web服务

最简单的启动方式就是使用提供的启动脚本。这个脚本已经帮你设置好了所有环境变量和参数。

# 进入项目目录
cd /root/FireRedASR-official

# 使用启动脚本(推荐)
bash start.sh

运行这个命令后,你会看到类似下面的输出:

正在启动FireRedASR-AED-L Web服务...
模型加载中,请稍候...
服务已启动,访问地址:http://localhost:7860

如果一切正常,服务就启动成功了。现在打开浏览器,访问http://你的服务器IP:7860,就能看到Web界面了。

3.4 其他启动方式

除了使用启动脚本,你也可以直接运行Python程序:

# 直接启动
cd /root/FireRedASR-official
python app.py

或者如果你想让服务在后台运行(这样关闭终端后服务也不会停止):

# 后台运行
cd /root/FireRedASR-official
nohup python app.py > /tmp/fireredasr_web.log 2>&1 &
echo $! > /tmp/fireredasr_web.pid

# 查看日志
tail -f /tmp/fireredasr_web.log

要停止后台服务:

# 停止服务
kill $(cat /tmp/fireredasr_web.pid)

4. Web界面使用指南

4.1 访问Web界面

服务启动后,你可以通过以下方式访问:

  • 本地访问:如果就在服务器本机上操作,打开浏览器访问http://localhost:7860
  • 远程访问:在其他电脑上访问http://你的服务器IP:7860

注意:如果无法访问,可能是防火墙阻止了7860端口。你需要确保这个端口是开放的。

4.2 界面功能介绍

打开Web界面后,你会看到一个简洁但功能完整的页面。主要分为以下几个区域:

1. 输入方式选择

  • 文件上传:点击"📁 上传音频文件"标签,可以上传本地音频文件
  • 麦克风录音:点击"🎙️ 麦克风录音"标签,可以直接录音识别

2. 音频处理选项

  • 支持WAV、MP3、FLAC、OGG、M4A等多种格式
  • 系统会自动将音频转换为16kHz单声道(这是模型需要的格式)

3. 识别按钮

  • 点击"🚀 开始识别"按钮开始处理
  • 处理过程中会显示进度和状态

4. 结果显示区域

  • 识别完成后,文字结果会显示在这里
  • 同时会显示处理时间、实时率等性能信息

4.3 实际使用示例

让我带你走一遍完整的使用流程:

第一步:准备音频文件 你可以使用项目自带的示例文件,路径是/root/FireRedASR-official/examples/wav/。里面有几个测试用的音频文件。

第二步:上传文件 在Web界面中,点击"📁 上传音频文件",然后选择你要识别的音频文件。支持拖拽上传,也可以点击选择文件。

第三步:开始识别 点击"🚀 开始识别"按钮。你会看到状态显示"处理中...",同时进度条会开始移动。

第四步:查看结果 处理完成后,识别出的文字会显示在结果区域。如果是中文音频,会显示中文文字;如果是英文,会显示英文。

第五步:保存结果 你可以直接复制识别结果,或者如果需要保存到文件,可以手动复制粘贴。

4.4 使用麦克风录音

除了上传文件,你还可以直接录音:

  1. 点击"🎙️ 麦克风录音"标签
  2. 点击"开始录音"按钮,开始说话
  3. 说完后点击"停止录音"
  4. 点击"🚀 开始识别"进行识别

这个功能特别适合临时需要转录的情况,比如快速记录想法、临时会议记录等。

5. 命令行使用方式

除了Web界面,这个工具还提供了命令行接口,适合批量处理或者集成到其他系统中。

5.1 单文件识别

如果你有一个音频文件需要识别,可以使用以下命令:

cd /root/FireRedASR-official

# 设置环境变量
export PATH=$PWD/fireredasr/:$PWD/fireredasr/utils/:$PATH
export PYTHONPATH=$PWD/:$PYTHONPATH

# 识别单个文件
python fireredasr/speech2text.py \
    --wav_path examples/wav/BAC009S0764W0121.wav \
    --asr_type "aed" \
    --model_dir pretrained_models/FireRedASR-AED-L \
    --batch_size 1 \
    --beam_size 3 \
    --nbest 1 \
    --use_gpu 1

参数说明:

  • --wav_path:音频文件路径
  • --asr_type:识别类型,这里用"aed"
  • --model_dir:模型目录
  • --batch_size:批处理大小,单文件设为1
  • --beam_size:束搜索大小,影响识别准确率
  • --use_gpu:是否使用GPU,1表示使用

5.2 批量识别

如果你有多个音频文件需要处理,可以使用批量模式:

python fireredasr/speech2text.py \
    --wav_dir examples/wav/ \
    --asr_type "aed" \
    --model_dir pretrained_models/FireRedASR-AED-L \
    --batch_size 2 \
    --beam_size 3 \
    --output output.txt

这个命令会处理examples/wav/目录下的所有音频文件,结果保存到output.txt中。

5.3 参数调优建议

根据我的使用经验,有几个参数可以调整以获得更好的效果:

beam_size(束搜索大小)

  • 值越大,识别越准确,但速度越慢
  • 推荐值:3-5,一般3就够用了

batch_size(批处理大小)

  • 批量处理时一次处理的文件数
  • 根据GPU显存调整,显存越大可以设得越大
  • 单GPU 8G显存建议设为2-4

使用GPU还是CPU

  • 如果有GPU,一定要用GPU,速度差10倍以上
  • 如果没有GPU,把--use_gpu设为0

6. 常见问题解决

6.1 服务启动失败

问题:运行bash start.sh后服务没有启动,或者启动后立即退出。

可能原因和解决:

  1. 端口被占用
# 检查7860端口是否被占用
lsof -i :7860

# 或者使用
netstat -tuln | grep 7860

# 如果被占用,可以杀掉占用进程,或者修改app.py中的端口号
  1. 模型文件问题
# 检查模型软链接是否正确
ls -la /root/FireRedASR-official/pretrained_models/FireRedASR-AED-L/

# 应该看到4个文件都是软链接
# 如果链接断了,重新创建:
ln -sf /root/ai-models/pengzhendong/FireRedASR-AED-L/* /root/FireRedASR-official/pretrained_models/FireRedASR-AED-L/
  1. GPU不可用
# 检查CUDA是否可用
python -c "import torch; print(torch.cuda.is_available())"

# 如果返回False,可能是:
# - 没有安装CUDA驱动
# - PyTorch版本不匹配
# - GPU太老不支持

6.2 音频识别失败

问题:上传音频后识别失败,或者结果为空。

检查步骤:

  1. 音频格式支持

    • 确保音频格式是支持的:WAV、MP3、FLAC、OGG、M4A
    • 如果不确定,可以用ffmpeg转换:
    ffmpeg -i input.mp3 -ar 16000 -ac 1 output.wav
    
  2. 音频时长限制

    • 模型建议音频在60秒以内
    • 如果音频太长,可以分割:
    # 使用ffmpeg分割音频
    ffmpeg -i long_audio.wav -f segment -segment_time 60 -c copy output_%03d.wav
    
  3. 音频质量问题

    • 背景噪音太大会影响识别
    • 说话人声音太小或模糊
    • 建议在相对安静的环境录音

6.3 识别结果不准确

问题:识别出来的文字有很多错误。

改进方法:

  1. 提高音频质量

    • 使用专业的录音设备
    • 在安静环境下录音
    • 说话人离麦克风近一些
  2. 调整识别参数

    # 增加beam_size可以提高准确率
    python fireredasr/speech2text.py --beam_size 5 ...
    
    # 或者尝试不同的解码策略
    
  3. 使用WAV格式

    • WAV是无损格式,识别效果最好
    • MP3等有损格式可能会损失一些信息
  4. 分段处理长音频

    • 对于很长的音频,分段识别然后拼接
    • 每段30-60秒效果最好

6.4 性能问题

问题:识别速度太慢。

优化建议:

  1. 确保使用GPU

    # 在Web界面或命令行中确认使用GPU
    # 命令行加 --use_gpu 1
    # Web界面会显示GPU信息
    
  2. 调整batch_size

    • 批量处理时适当增加batch_size
    • 但不要超过GPU显存限制
  3. 使用更快的存储

    • 如果音频文件在慢速硬盘上,会影响读取速度
    • 建议使用SSD

7. 进阶使用技巧

7.1 集成到其他系统

如果你想把语音识别集成到自己的系统中,可以调用命令行接口:

import subprocess
import json

def transcribe_audio(audio_path):
    """调用FireRedASR进行语音识别"""
    
    cmd = [
        'python', 'fireredasr/speech2text.py',
        '--wav_path', audio_path,
        '--asr_type', 'aed',
        '--model_dir', 'pretrained_models/FireRedASR-AED-L',
        '--batch_size', '1',
        '--beam_size', '3',
        '--use_gpu', '1'
    ]
    
    try:
        result = subprocess.run(cmd, capture_output=True, text=True)
        if result.returncode == 0:
            return result.stdout.strip()
        else:
            return f"识别失败: {result.stderr}"
    except Exception as e:
        return f"执行错误: {str(e)}"

# 使用示例
text = transcribe_audio('path/to/audio.wav')
print(f"识别结果: {text}")

7.2 批量处理脚本

如果你经常需要处理大量音频文件,可以写一个批量处理脚本:

#!/bin/bash
# batch_process.sh

INPUT_DIR=$1
OUTPUT_DIR=$2

# 创建输出目录
mkdir -p $OUTPUT_DIR

# 遍历所有音频文件
for audio_file in $INPUT_DIR/*.{wav,mp3,flac}; do
    if [ -f "$audio_file" ]; then
        filename=$(basename "$audio_file")
        echo "处理: $filename"
        
        # 调用识别
        python fireredasr/speech2text.py \
            --wav_path "$audio_file" \
            --asr_type "aed" \
            --model_dir pretrained_models/FireRedASR-AED-L \
            --batch_size 1 \
            --beam_size 3 \
            --output "$OUTPUT_DIR/${filename%.*}.txt"
    fi
done

echo "批量处理完成"

使用方式:

bash batch_process.sh /path/to/audios /path/to/output

7.3 监控和日志

对于生产环境,建议添加监控和日志:

# 启动服务并记录日志
cd /root/FireRedASR-official
nohup python app.py >> /var/log/fireredasr.log 2>&1 &

# 查看实时日志
tail -f /var/log/fireredasr.log

# 监控服务状态
while true; do
    if ! pgrep -f "python app.py" > /dev/null; then
        echo "服务停止,重新启动..."
        cd /root/FireRedASR-official
        nohup python app.py >> /var/log/fireredasr.log 2>&1 &
    fi
    sleep 60
done

8. 总结

通过这篇文章,你应该已经掌握了FireRedASR-AED-L语音识别工具的完整部署和使用方法。我们来回顾一下关键点:

部署很简单:基本上就是下载文件、运行启动脚本两步。项目已经帮你配置好了大部分环境,你只需要确保有GPU和足够的存储空间。

使用很方便:Web界面很直观,上传文件或直接录音,点击按钮就能识别。命令行接口则适合批量处理或集成到其他系统。

效果很不错:基于1.1B参数的大模型,中英文识别准确率都很好。对于会议记录、课程转录、语音笔记这些场景,完全够用。

可以自己控制:因为是本地部署,你的音频数据不会上传到别人的服务器,隐私有保障。而且你可以随时调整参数,优化识别效果。

如果你在部署或使用过程中遇到问题,可以:

  1. 检查模型文件是否完整
  2. 确认GPU是否正常工作
  3. 查看日志文件找错误信息
  4. 调整音频质量或识别参数

这个工具特别适合需要频繁处理语音转文字任务的团队或个人。它把复杂的AI模型包装成了简单易用的Web应用,让你不用懂太多技术细节就能用上先进的语音识别能力。

最后提醒一下,虽然这个工具很好用,但也有局限性。比如对长音频(超过60秒)支持不够好,对带口音或背景噪音的音频识别准确率会下降。在实际使用中,可以根据具体情况调整使用方式。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐