Thanks to visit codestin.com
Credit goes to github.com

Skip to content

H5Z2P5Z2P/doubao_podcast

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

豆包播客音频转换工具

项目简介

这个项目用于处理豆包TTS服务的音频数据,支持多种输入格式:

  • Charles解压数据转AAC音频(推荐,准确性最高)
  • HAR文件转AAC音频(标准HAR格式)
  • 16进制数据文件转换为AAC音频
  • WebSocket二进制帧中的AAC音频流提取

功能特性

  • 智能文件命名:自动生成带时间戳的有意义文件名
  • 多格式支持:处理Charles解压数据、HAR文件、16进制数据
  • 高效处理:支持大型文件(6MB+),处理速度快
  • 完善错误处理:详细的错误信息和状态反馈
  • 统一命令行界面:简化的使用方式
  • 详细日志:可选的详细处理信息输出
  • 批量处理:支持多文件并行处理
  • 智能AAC帧识别:精确的ADTS帧头解析

项目结构

doubao_podcast/
├── README.md                    # 项目说明文档
├── requirements.txt             # Python依赖(无额外依赖)
├── .gitignore                   # Git忽略文件
├── src/                         # 源代码目录
│   ├── __init__.py             # Python包初始化
│   ├── charles_to_aac.py       # Charles解压数据转换器(推荐)
│   └── har_to_aac.py           # HAR文件转换器
├── tools/                       # 工具目录
│   └── convert.py              # 统一命令行工具
├── examples/                    # 使用示例
│   └── example_usage.py        # 代码使用示例
├── docs/                        # 文档目录
│   └── API.md                  # API文档
├── test.har                     # 测试用HAR文件
├── temp_analysis/               # HAR文件解压分析目录
└── output/                      # 输出目录(自动创建)
    ├── doubao_tts_*.aac        # 转换后的AAC音频文件
    └── ...

使用方法

1. Charles解压数据转AAC音频(新增,推荐)

# 处理Charles解压后的数据目录
python charles_to_aac.py --input temp_analysis --output output/charles_audio.aac

# 显示详细处理信息
python charles_to_aac.py --input temp_analysis --output output/charles_audio.aac --verbose

# 使用默认设置(推荐)
python charles_to_aac.py

2. HAR文件转AAC音频(标准HAR格式)

# 处理Charles抓包的HAR文件
python har_to_aac.py --input test.har --output output/extracted_audio.aac

# 批量处理HAR文件
python har_to_aac.py --batch --input-dir har_files/ --output-dir output/

# 显示详细处理信息
python har_to_aac.py --input test.har --output output/extracted_audio.aac --verbose

3. 16进制文件转AAC音频(原有功能)

# 基本转换
python hex_to_aac.py

# 指定输入和输出文件
python hex_to_aac.py --input hex.txt --output audio.aac

# 批量处理模式
python hex_to_aac.py --batch

4. 简化版转换(使用main.py)

# 直接转换hex.txt为AAC音频
python main.py

参数说明

charles_to_aac.py 参数(新增,推荐)

  • --input / -i: 输入的Charles解压目录路径(默认:temp_analysis)
  • --output / -o: 输出的AAC文件路径(默认:output/charles_audio.aac)
  • --verbose / -v: 显示详细处理信息

har_to_aac.py 参数

  • --input / -i: 输入的HAR文件路径(默认:test.har)
  • --output / -o: 输出的AAC文件路径(默认:output/extracted_audio.aac)
  • --batch: 批量处理模式
  • --input-dir: 批量处理时的输入目录
  • --output-dir: 批量处理时的输出目录
  • --verbose / -v: 显示详细处理信息
  • --extract-all: 提取所有音频片段(如果有多个)

hex_to_aac.py 参数

  • --input / -i: 输入的16进制文件路径(默认:hex.txt)
  • --output / -o: 输出的AAC文件路径(默认:output/audio.aac)
  • --chunk-size: 处理数据块大小(默认:1024KB)
  • --validate: 是否验证16进制数据格式(默认:True)
  • --verbose / -v: 显示详细处理信息
  • --batch: 批量处理模式

返回值说明

  • 成功转换:返回0,生成AAC文件
  • 文件不存在:返回1,显示错误信息
  • 数据格式错误:返回2,显示验证失败信息
  • 转换失败:返回3,显示具体错误原因

技术实现

Charles解压数据处理(新增)

  • 解析Charles解压后的meta.json文件
  • 提取webSocket字段中的消息数据
  • 识别服务器发送的二进制消息
  • 智能AAC ADTS帧识别和提取
  • 支持完整的音频流重建

HAR文件处理

  • 解析JSON格式的HAR文件
  • 提取WebSocket通信记录
  • 识别豆包TTS服务的音频响应
  • 解析WebSocket二进制帧
  • 提取AAC ADTS音频流

16进制转换

  • 使用Python内置的binascii模块进行16进制转换
  • 分块处理大文件,避免内存溢出
  • 支持多种16进制格式(带空格、不带空格等)
  • 自动检测和验证AAC文件头

支持的音频格式

  • AAC ADTS格式(豆包TTS默认输出)
  • 采样率:通常为32kHz、44.1kHz等
  • 比特率:128kbps、256kbps等
  • 声道:单声道或立体声

推荐使用方式

  1. 首选方案:使用 charles_to_aac.py 处理Charles解压后的数据目录
  2. 备选方案:使用 har_to_aac.py 处理标准HAR文件
  3. 特殊情况:使用 hex_to_aac.py 处理16进制数据文件

注意事项

  1. 确保输入文件包含有效的音频数据
  2. HAR文件应来自豆包TTS服务的WebSocket通信
  3. Charles解压数据应包含完整的meta.json文件
  4. 转换后的文件大小约为原始数据的一半(16进制转换)
  5. 建议在转换前备份原始数据
  6. 大文件转换可能需要较长时间
  7. 确保有足够的磁盘空间存储输出文件

更新日志

  • v2.1.0: 新增Charles解压数据处理功能,修复HAR文件音频数据提取问题
  • v2.0.0: 新增HAR文件处理功能,支持豆包TTS WebSocket音频提取
  • v1.2.0: 增加数据验证和错误处理
  • v1.1.0: 添加大文件支持和进度显示
  • v1.0.0: 初始版本,支持基本的16进制转AAC功能

问题排查

如果遇到问题,请检查:

  1. 输入文件是否存在且可读
  2. HAR文件是否来自正确的WebSocket通信
  3. Charles解压数据是否包含meta.json文件
  4. 16进制数据格式是否正确
  5. 磁盘空间是否充足
  6. Python版本是否兼容(建议3.6+)
  7. 是否有必要的文件读写权限

修复记录

2024年5月26日 - har_to_aac.py 找不到音频数据问题修复

问题描述

  • har_to_aac.py 程序能找到豆包TTS请求,但无法提取音频数据
  • 程序显示"总共提取到 0 字节音频数据"

问题分析

  1. Charles抓包工具解压后的数据格式与标准HAR格式不同
  2. Charles使用 webSocket 字段而不是标准的 _webSocketMessages 字段
  3. 消息格式也有差异,需要特殊处理
  4. 新发现:某些HAR文件将音频数据直接存储在响应内容的text字段中,使用base64编码

解决方案

  1. 创建新的 charles_to_aac.py 程序专门处理Charles解压后的数据
  2. 支持解析 webSocket.messages 数组
  3. 改进AAC帧识别算法,使用更精确的ADTS帧头解析
  4. 只处理服务器发送的二进制消息,过滤客户端消息
  5. 新增:修复har_to_aac.py工具,优先检查响应内容中的base64编码数据

修复结果

  • 成功提取4.42MB的AAC音频数据(Charles格式)
  • 成功提取5.52MB的AAC音频数据(标准HAR格式)
  • 程序运行时间0.25-1.23秒
  • 提取了数千个AAC帧,音频完整

2024年5月26日 - 新增用户文件处理成功案例

处理文件从Claude到MCP,最好的AI产品不是计划出来的.har 文件大小:7.4MB 提取结果

  • 识别到15,770个AAC帧
  • 提取音频数据:5.52MB
  • 处理时间:1.23秒
  • 输出文件:从Claude到MCP_最好的AI产品不是计划出来的.aac

2024年5月26日 - har_to_aac.py 专门优化Charles格式 v2.2.0

优化内容

  • 删除了标准HAR格式的处理代码,避免不必要的复杂性
  • 专门针对Charles抓包工具的HAR文件格式进行优化
  • 重命名类名为CharlesHARToAACConverter,更明确的功能定位
  • 简化了处理逻辑,提高了可靠性和处理速度

优化结果

  • 代码更简洁,减少了约30行代码
  • 处理逻辑更清晰,专注于Charles格式
  • 避免了格式判断错误的可能性
  • 保持了100%的处理成功率

示例用法

# 推荐:处理Charles解压的豆包TTS音频(最简单)
python charles_to_aac.py

# 处理标准HAR文件
python har_to_aac.py --input test.har --output my_audio.aac --verbose

# 转换16进制文件
python hex_to_aac.py --input my_hex_data.txt --output my_audio.aac

# 快速转换(使用默认设置)
python main.py

About

charles抓包获取har文件,提取二进制生成豆包播客音频

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%