一个用于总结音频文件和视频音轨的内容的工具。
Project description
Audio Summarizer
一个用于自动处理音视频文件并生成文字总结的Python工具。
版本:1.1
🚀 功能特点
- 🔍 自动查找音视频文件:递归扫描目录,支持多种音视频格式
- 🎵 音频提取:从视频文件中提取音频(多进程并行)
- ☁️ OSS上传:将音频文件上传到阿里云OSS(多进程并行)
- 📝 语音转文字:使用阿里云Fun-ASR API将音频转换为文字(多进程并行)
- 📊 文字总结:使用DeepSeek API生成文字总结(多进程并行)
- ⚡ 高性能:支持多进程并行处理,提高处理速度
- 📋 完整日志:详细的处理日志和进度显示
✨ 1.1版本新特性
- 在github release上可以看到更详细的更新日志,这里只列出主要功能点:
🔄 Checkpoint断点续传
- 支持从上次中断处继续处理,避免重复工作
- 自动保存处理进度到
checkpoint.txt - 支持手动调整checkpoint值控制执行流程
🌐 跨平台支持
- 支持Windows、macOS和Linux系统
- 统一的路径处理接口,兼容不同操作系统
🔧 接口标准化
- 所有路径参数统一接受
Union[str, pathlib.Path]类型 - 内部统一使用
pathlib.Path对象,提高代码可维护性 - 简化主函数参数,提升代码可读性
📝 增强日志系统
- 每个类都有独立的日志标签(如
[AVFinder]、[AudioExtractor]) - 支持自定义日志文件路径
- 日志来源明确,便于调试和监控
🐛 Bug修复
- 修复音频转文字步骤中的编号错乱问题
- 修复音频提取步骤中的警告误报问题
📦 安装
1. 克隆项目
git clone https://github.com/UniBinary/audio_summarizer.git
cd audio_summarizer
2. 安装依赖
pip install -e .
或者手动安装依赖:
pip install oss2>=2.19.1 dashscope>=1.25.12 openai
3. 准备资源文件
将 ffmpeg.exe 和 ffprobe.exe 放在 audiosummarizer/assets/ 目录下。
⚙️ 配置
1. 获取API密钥和OSS配置
使用本项目需要:
-
阿里云OSS:
- AccessKey ID 和 AccessKey Secret
- OSS存储桶名称和Endpoint
-
阿里云百炼(Fun-ASR):
- API Key
-
DeepSeek:
- API Key
2. 创建配置文件
创建 config.json 文件:
{
"bucket-name": "your-bucket-name",
"bucket-endpoint": "https://oss-cn-beijing.aliyuncs.com",
"bucket-access-key-id": "your-access-key-id",
"bucket-access-key-secret": "your-access-key-secret",
"model-api-key": "your-funasr-api-key",
"deepseek-api-key": "your-deepseek-api-key"
}
🚀 使用方法
命令行方式
# 基本用法(使用配置文件)
audiosummarizer --input-dir /path/to/videos --output-dir /path/to/output --config-file config.json
# 指定进程数
audiosummarizer --input-dir /path/to/videos --output-dir /path/to/output --processes 4 --config-file config.json
# 仅音频模式(输入目录只有音频文件)
audiosummarizer --input-dir /path/to/audios --output-dir /path/to/output --audio-only --config-file config.json
# 断点续传(自动从上次中断处继续)
audiosummarizer --input-dir /path/to/videos --output-dir /path/to/output --config-file config.json
# 直接指定所有参数
audiosummarizer --input-dir /path/to/videos --output-dir /path/to/output \
--bucket-name your-bucket --bucket-endpoint https://oss-cn-beijing.aliyuncs.com \
--access-key-id your-key-id --access-key-secret your-key-secret \
--funasr-api-key your-funasr-key --deepseek-api-key your-deepseek-key
Python API方式
from audiosummarizer import summarize
from pathlib import Path
# 使用配置文件
summarize(
input_dir=Path("/path/to/videos"),
output_dir=Path("/path/to/output"),
processes=4,
audio_only=False,
config_file="config.json"
)
# 直接指定参数
summarize(
input_dir="/path/to/videos",
output_dir="/path/to/output",
processes=4,
audio_only=False,
bucket_name="your-bucket",
bucket_endpoint="https://oss-cn-beijing.aliyuncs.com",
access_key_id="your-key-id",
access_key_secret="your-key-secret",
funasr_api_key="your-funasr-key",
deepseek_api_key="your-deepseek-key"
)
🔄 处理流程
项目按照以下步骤处理音视频文件:
graph LR
A[寻找音视频文件] --> B[提取音频]
B --> C[上传音频到OSS]
C --> D[音频转文字]
D --> E[总结文字]
步骤详解
-
寻找音视频文件 (
AVFinder)- 递归扫描输入目录
- 支持的文件格式:
.mp3,.wav,.flac,.aac,.ogg,.m4a,.wma,.opus,.mp4,.avi,.mkv,.mov,.wmv,.flv,.webm,.m4v,.mpg,.mpeg - 生成文件列表JSON
-
提取音频 (
AudioExtractor)- 从视频文件中提取音频轨道
- 音频文件命名为
001.mp3,002.mp3等(保持原顺序) - 多进程并行处理
-
上传音频到OSS (
OSSUploader)- 将音频文件上传到阿里云OSS
- 文件存储在
oss://audios/目录下 - 生成可访问的URL列表
- 多进程并行上传
-
音频转文字 (
AudioTranscriber)- 使用阿里云Fun-ASR API进行语音识别
- 支持说话人分离(声纹识别)
- 输出格式:
<说话人ID>: <文本> - 多进程并行处理
-
总结文字 (
TextSummarizer)- 使用DeepSeek API生成文字总结
- 输出Markdown格式
- 在总结开头添加原视频链接(如果提供)
- 多进程并行处理
📁 输出文件结构
output_dir/
├── audio_summarizer.log # 主日志文件
├── checkpoint.txt # 断点续传状态文件
├── intermediates/
│ └── YYYYMMDD_HHMMSS/ # 中间文件(时间戳目录)
│ ├── inputs.json # 输入文件列表
│ ├── audios.json # 音频文件列表
│ ├── oss_urls.json # OSS URL列表
│ ├── texts.json # 文本文件路径列表
│ ├── summaries.json # 总结文件路径列表
│ ├── audios/ # 提取的音频文件
│ ├── texts/ # 转录的文本文件
│ └── summaries/ # 生成的总结文件
│ ├── AVFinder.log # 文件查找器日志
│ ├── AudioExtractor.log # 音频提取器日志
│ ├── OSSUploader.log # OSS上传器日志
│ ├── AudioTranscriber.log # 音频转录器日志
│ └── TextSummarizer.log # 文本总结器日志
└── summaries/ # 最终总结文件(符号链接)
├── 001.md
├── 002.md
└── ...
💰 费用估算
截止2026年2月,处理一小时音视频的估算费用:
| 服务 | 费用 | 说明 |
|---|---|---|
| 阿里云OSS | 0.014元 | 上传+读取,约100MB流量 |
| 阿里云Fun-ASR | 0.76元 | 语音识别,使用节省计划 |
| DeepSeek | 0.028元 | 文字总结 |
| 总计 | 约0.8元/小时 |
🛠️ 类说明
AVFinder
- 功能:查找音视频文件
- 参数:
input_dir,output_json,logger,log_file - 方法:
find_and_save()
AudioExtractor
- 功能:从视频中提取音频
- 参数:
input_json,output_json,audio_dir,ffmpeg_path,ffprobe_path,num_processes,logger,log_file - 方法:
process_videos()
OSSUploader
- 功能:上传文件到阿里云OSS
- 参数:
input_json,output_json,bucket_name,bucket_endpoint,access_key_id,access_key_secret,num_processes,logger,log_file - 方法:
upload_files()
AudioTranscriber
- 功能:音频转文字
- 参数:
input_json,output_json,text_dir,model_api_key,num_processes,logger,log_file - 方法:
transcribe_audio()
TextSummarizer
- 功能:总结文字
- 参数:
input_json,output_json,summary_dir,model_api_key,num_processes,origin_json,logger,log_file - 方法:
summarize_texts()
⚠️ 注意事项
- 费用控制:处理大量文件前,建议先测试小批量文件
- 网络要求:需要稳定的网络连接访问OSS和API
- 文件大小:单个音频文件不宜过大,建议分割长音频
- API限制:注意各API的调用频率和并发限制
- 隐私保护:音频内容可能包含敏感信息,请妥善处理
- 断点续传:不要手动删除
checkpoint.txt和中间目录,否则无法继续处理
🔧 故障排除
常见问题
- 导入错误:确保已安装所有依赖
pip install oss2 dashscope openai - OSS连接失败:检查AccessKey和Endpoint配置
- API调用失败:检查API密钥和网络连接
- ffmpeg错误:确保
ffmpeg.exe和ffprobe.exe在正确位置 - 断点续传失败:检查
checkpoint.txt文件是否损坏,或中间目录是否被删除
日志查看
查看以下日志文件获取详细错误信息:
output_dir/audio_summarizer.log- 主日志文件output_dir/intermediates/YYYYMMDD_HHMMSS/*.log- 各步骤详细日志
📄 许可证
MIT License
👤 作者
UniBinary - tp114514251@outlook.com
🌐 项目地址
GitHub: https://github.com/UniBinary/audio_summarizer
📈 版本历史
1.1 (2026-02-17)
- ✅ 新增Checkpoint断点续传功能
- ✅ 支持跨平台(Windows/macOS/Linux)
- ✅ 接口标准化,统一路径参数类型
- ✅ 增强日志系统,支持自定义日志文件
- ✅ 修复音频转文字编号错乱问题
- ✅ 修复音频提取警告误报问题
1.0a1 (Alpha 1)
- 初始版本发布
- 基本音视频处理流程
- 多进程并行处理支持
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file audio_summarizer-1.1.tar.gz.
File metadata
- Download URL: audio_summarizer-1.1.tar.gz
- Upload date:
- Size: 24.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0e4310537fdee53f75536040d500b34c8dbb8c8c47eaa2be5bbbdac4a38a46e
|
|
| MD5 |
a0727ca21437c4e9ebf13711c5f0a804
|
|
| BLAKE2b-256 |
fe2a4875f0488374b34e04a0dfd6d887fc0f1fc1444c193068ea97c521cec6cc
|
File details
Details for the file audio_summarizer-1.1-py3-none-any.whl.
File metadata
- Download URL: audio_summarizer-1.1-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
863794b9ce74a5b203e2b64b5436882a4a2ab31cc221b0d11efc6a3cd500f465
|
|
| MD5 |
b3f4495f873f90780e05186b5612f85f
|
|
| BLAKE2b-256 |
cd252f0cc51d63627e52257002da4b6ea510477902fa5e26774c6a5a8f28329d
|