# Speech-to-text **Repository Path**: phpervip/speech-to-text ## Basic Information - **Project Name**: Speech-to-text - **Description**: 一个支持中英文的音视频转文字工具,集成了 Vosk(离线)和 Whisper(在线)双引擎,可以将视频(mp4/mov)和音频(wav)转换为文字,并自动生成带时间戳的字幕文件。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-19 - **Last Updated**: 2025-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 构建免费的音视频转文字工具:支持多语言的语音识别项目 ## 项目简介 在当今数字时代,音视频内容越来越多,但如何快速将其转换为文字一直是一个挑战。本项目提供了一个免费的解决方案,支持将视频和音频文件转换为文字,并且支持多语言识别。 ## 部署指南 [搭建一个语音转文字的简单全栈项目:基于 Streamlit + Whisper 的实践指南](https://blog.csdn.net/phper8/article/details/148196157) ## 技术特点 1. 双引擎支持 - Vosk:开源语音识别引擎,支持离线使用 - Whisper:OpenAI 开源的强大语音识别模型 2. 多语言支持 - 英文识别 - 中文识别 - 其他语言支持(Whisper) - 自动语言检测(Whisper) 3. 灵活的输出格式 - 纯文本转录(transcript.txt) - 带时间戳的 JSON 格式(words.json) - SRT 字幕文件(captions.srt) 4. 支持多种音视频格式 - 视频:mp4, mov - 音频:wav(支持自动转换) ## 项目地址 https://gitee.com/phpervip/speech-to-text ## 目录结构 ├── README.md # 项目说明文档 ├── requirements.txt # 项目依赖包列表 ├── main.py # 主程序入口 ├── sharetape.py # Vosk模型处理类 ├── whisper_sharetape.py # Whisper模型处理类 ├── audio_splitter.py # 音频分割工具类 ├── cleanup_outputs.sh # 清理输出文件脚本 ├── stop_cleanup_script.sh # 停止清理脚本 ├── text_correction.py # AI 文本纠错处理模块 ├── app.py # Streamlit 应用程序 ├── .env # 环境变量配置文件(API密钥等) ├── vosk-model-cn-0.22/ # 中文语音模型目录(可选) └── vosk-model-en-us-0.42/ # 英文语音模型目录(可选) ## 安装配置 1. 环境准备 ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` 2. 下载模型 - Vosk 英文模型:vosk-model-en-us-0.42-gigaspeech https://alphacephei.com/vosk/models/vosk-model-en-us-0.42-gigaspeech.zip - Vosk 中文模型:vosk-model-cn-0.22 https://alphacephei.com/vosk/models/vosk-model-cn-0.22.zip - Whisper 模型会自动下载 ## 核心功能 1. 视频转文字 - 自动提取音频 - 生成对应文字和字幕 2. 音频转文字 - 支持长音频处理 - 自动分段处理 3. Whisper 模型选择 - tiny:速度最快,适合测试 - base (139M):平衡速度和准确率 - small:适合一般用途 - medium (1.42G):较高准确率 - large:最高准确率 ## 预处理为wav 音频必须是 `.wav` 格式 ffmpeg 将 mp3 转换为 wav: ```ffmpeg -i input.mp3 output.wav``` ffmpeg 将 mp4 转换为 wav: ```ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav``` ## 运行项目 ```streamlit run app.py``` ![界面](stt.png) 修改app.py后,需重启 ```streamlit run app.py --reload``` ## 线上测试网址 https://stt.xiuxinwenhua.com ## 命令行使用示例 1. 基本用法 注:vosk下载了对应语言才可能使用。其他语言自行扩展。 ```bash # 处理视频文件 (默认使用 vosk) python main.py --video video.mp4 # 处理音频文件 (默认使用 vosk) python main.py --audio audio.wav ``` 2. 语言选择 ```bash # 中文识别 (指定使用 whisper) python main.py --audio audio.wav --model whisper --lang cn # 英文识别 (指定使用 whisper) python main.py --audio audio.wav --model whisper --lang en # 其他语言(如土耳其语) (指定使用 whisper) python main.py --audio audio.wav --model whisper --lang tr ``` 3. 模型选择 ```bash # 使用较小的模型(速度快)(指定使用 whisper base 模型) python main.py --audio audio.wav --model whisper --whisper-size base # 使用较大的模型(更准确)(指定使用 whisper medium 模型) python main.py --audio audio.wav --model whisper --whisper-size medium ``` ## 本地性能测试 1. 中英混合音频(34秒) ```bash # 指定中文识别 python main.py --audio audio.wav --model whisper --whisper-size medium --lang cn # 耗时:5分13秒,输出中文 # 自动语言检测 python main.py --audio audio.wav --model whisper --whisper-size medium # 耗时:2分12秒,输出英文 ``` 2. 纯中文音频(3分钟) ```bash # 自动检测 python main.py --audio audio.wav --model whisper # 耗时:4分12秒 # 指定中文 python main.py --audio audio.wav --model whisper --lang cn # 耗时:2分9秒 # 使用中大模型 python main.py --audio audio.wav --model whisper --lang cn --whisper-size medium # 耗时:18分6秒 ``` # 上传文件限制大小 .streamlit/config.toml ```maxUploadSize = 50``` # 清理脚本 字幕文件保存在outputs目录下的,开启脚本会自动清理超过10分钟的文件。 # 线上部署 项目部署到自己的服务器上,所需的空间和内存主要取决于使用的语音转文字模型的大小。 转录速度受内存 (RAM) ,操作系统、其他运行的服务、以及同时处理的任务数量等因素的影响。 ## 性能优化建议 1. 模型选择 - 短音频或测试:使用 tiny/base - 一般用途:使用 base/small - 文字基本准确:使用 medium - 追求最高准确率:使用 large 2. 系统要求 - 8GB RAM:建议使用 tiny/base 模型 - 16GB RAM:可以使用 small/medium 模型 - 32GB+ RAM:可以使用 large 模型 3. 处理长音频 - 自动分段处理 - 智能合并结果 - 内存使用优化 ## 使用场景 1. 会议记录 - 自动生成会议文字记录 - 支持字幕时间轴 2. 视频内容处理 - YouTube 视频转录 - 教育视频字幕生成 3. 音频档案处理 - 语音笔记转文字 - 播客内容转录 ## AI接口自动检测并纠正错别字 [siliconflow注册](https://cloud.siliconflow.cn/i/7qQzHGZs) ``` ```cp .env.example .env``` 在.env中填写APIKEY 主要参数: "url": "https://api.siliconflow.cn/v1/chat/completions" "model": "Qwen/QwQ-32B", "content": """请帮我检查并修正以下文本中的错别字和语法错误,保持原意的同时使表达更加准确,仅返回修改后的文字: {待检查的文本} """ ``` ## 总结 这个项目为需要音视频转文字的用户提供了一个免费且强大的解决方案。通过结合 Vosk 和 Whisper 两个引擎的优势,既保证了识别的准确性,又提供了灵活的使用选择。无论是处理短视频还是长音频,都能够满足不同场景的需求。 ## 参考资源 - [Sharetape-Speech-To-Text](https://github.com/adhikary97/Sharetape-Speech-To-Text) - [vosk与whisper对比.md](vosk与whisper对比.md) - [Vosk 语音识别](https://alphacephei.com/vosk/) - [OpenAI Whisper](https://github.com/openai/whisper) - [FFmpeg 音视频处理](https://ffmpeg.org/)