搭建一个语音转文字的简单全栈项目:基于 Streamlit + Whisper 的实践指南

最近我在一台阿里云轻量级服务器上成功部署了一个语音转文字(Speech-to-Text)的全栈 Demo,支持 Whisper 模型的语音转写,还可以选择 AI 自动纠错,并支持中文和英文语音测试。这篇文章将完整记录从环境配置、项目部署、模型下载到使用效果的全过程,帮助你快速上手。


本文承接上一篇文章,
开源音视频转文字工具:基于 Vosk 和 Whisper 的多语言语音识别项目

一、服务器与系统环境

  • 云服务器:阿里云 99 元/年的轻量服务器
  • 配置:2 核 CPU + 2G 内存 + 3Mbps 带宽
  • 系统版本:Alibaba Cloud Linux 3 (OpenAnolis Edition) x86_64
  • Python 环境:系统自带 Python 3.7.16,另安装 Python 3.10.14
  • 可视化面板:宝塔面板(免费版 9.5.0)

二、项目部署步骤

1. 克隆代码仓库

打开宝塔面板 → 终端,进入你希望存放项目的目录(如 /www/wwwroot):

cd /www/wwwroot
git clone https://gitee.com/phpervip/speech-to-text.git
cd speech-to-text
pip install -r requirements.txt

2. 使用宝塔添加 Python 项目

  • 打开宝塔 → 网站 → Python 项目 → 添加新项目

  • 选择 Python 版本为 3.10.14

  • 启动命令填写:

    streamlit run app.py --server.port 8501 --server.address 0.0.0.0
    

如图:

  • 保存后,如果状态显示为「启动中」,可以进入【设置】查看实时输出或错误日志,定位启动失败原因。

设置示例
启动成功后:


三、安装 ffmpeg 支持音视频格式转换

  • 打开宝塔 → 软件商店 → 搜索 ffmpeg管理器
  • 安装(我选择的是 ffmpeg-6.1
  • 安装完成后在终端测试:
ffmpeg

如返回版本信息说明安装成功。


四、开放服务器端口 & 设置域名访问

1. 在阿里云控制台开放 8501 端口

  • 控制台 → 安全组 → 添加入方向规则 → TCP → 端口范围:8501

2. 使用宝塔设置反向代理和 SSL

  • 宝塔 → 网站 → 反向代理

    • 添加代理规则指向:http://127.0.0.1:8501
    • 绑定域名如:stt.xiuxinwenhua.com
  • 添加 SSL(可使用 Let’s Encrypt 免费证书)

反向代理配置


五、下载 Whisper 模型(重点)

系统默认从 Hugging Face 下载模型可能较慢,可以手动下载:

# 登录服务器终端
wget https://openaipublic.azureedge.net/main/whisper/models/ed3a0b6b1c0edf879ad9b11b1af5a0e6ab5db9205f891f668f8b0e6c6326e34e/base.pt -P ~/.cache/whisper/

wget https://openaipublic.azureedge.net/main/whisper/models/345ae4da62f9b3d59415adc60127b97c714f32e89e936602e85993674d08dcb1/medium.pt -P ~/.cache/whisper/

📌 路径默认是 ~/.cache/whisper/,也可以通过代码修改加载路径。


六、实际使用说明

虽然我的服务器配置有限,运行速度不算快,但还是能流畅处理几秒的语音测试文件。你可以根据需要选择:

  • base 模型:转写速度快,准确率适中
  • medium 模型:更高的准确率,但运行速度慢,对资源要求高。

推荐至少 8G 内存 或更高配置用于生产部署。

注:我在示例服务器只下载了whisper的base, medium 的多语言模型。vosk 就没有下载了。
所以没有vosk可选,whisper模型也只有base,medium.
你也可以下载vosk的模型,whisper的其他模型,再把选择项显示出来。
若使用vosk的其他语言时,还需要修改代码。


七、功能体验图示

✅ 无 AI 纠错,仅语音转写:

示例 1

✅ 启用 AI 纠错(中文):

示例 2

✅ 英文语音转写:

示例 3

✅ 下载结果文件(ZIP 包):

示例 4

⚠️ 提醒:由于页面是单页结构(Streamlit 单页面应用),点击下载后记得立即保存,否则页面刷新后需重新上传并转写!

遇错处理

在二次开发的情况下,本地增加新功能,安装了新的依赖,本地运行正常,却忘记更新requirements.txt,线上没有更新依赖,就会报类似错误,

原因:缺少模块
解决办法:增加模块

正确做法,把新增的依赖写入requirements.txt,线上也重新
pip install -r requirements.txt


八、部署建议与总结

  • 本地局域网部署:如公司内部使用,可部署在内网机器,无需公网与 SSL 配置。
  • 使用场景:语音会议摘要、教育课程录音整理、播客转写、客服记录等。
  • 适配优化:可拓展支持 vosk 模型、多语言切换、转写历史保存功能等。

结语

这个项目是一次低成本、高实用性的小型 AI 应用部署实践,特别适合个人开发者和中小团队快速体验语音转文字技术。你可以自由扩展它的前后端功能,甚至对接微信、钉钉、飞书等做深度集成。

项目源码地址:Gitee - speech-to-text

欢迎交流、建议或二次开发反馈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值