Files
nexus/Project/synthmind/项目需求.md
2026-08-30 20:34:33 +08:00

3.5 KiB
Raw Blame History

请根据以下项目需求编写 音频提取和转录文字的脚本

项目目的:

  • 解析提供的视频文件,提取音频,转录成文字,利用AI分析文字及视频内容,总结归纳视频内容。生成脑图或其他格式文档。

主要功能

提取音频

  1. 扫描指定视频文件或者遍历指定目录里的视频文件
    • 同时列出已存在的 .mp3 文件,用于判断哪些已经处理过
  2. 进度追踪
    • 生成manifest文件,并标记哪些视频文件是否已经提取音频状态
    • 在视频同一目录或指定目录下维护一个JSON格式本地进度文件,记录已完成的文件
    • 执行相应命令时自动跳过已处理的文件,支持中断后重新运行继续,如 a.mp4已经标记提取了音频生成了a.mp3, 则提取音频操作不再执行此文件。
  3. 在分析阶段如果视频文件过大,可先切分成更小尺寸的视频进行后续处理,manifest文件需要记录切分后的视频文件名
  4. FFmpeg 音频提取
    • 将本地 .mp4 送入 FFmpeg,执行相应的命令提取音频轨道,默认在当前ubuntu机器上已经安装了ffmpeg 命令集
    • 转码参数:MP3 格式,64k 比特率,22050Hz 采样率,单声道(主要针对语音课程优化,体积小)
    • 不落地中间文件,pipe 直写输出
  5. 保存mp3文件,和原文件名保持一致如原始视频文件为 test1.mp4, 则提取音频后的音频文件名为test1.mp3
    • 支持路径中含空格的文件名
    • 支持包含中文的文件名
  6. 提取音频,转录文字,内容归纳整理分别用不同的脚本进行处理

转录文字

  1. 扫描指定视频文件或者遍历指定目录里的视频文件
    • 同时列出已存在的 .mp3 文件,用于判断哪些已经处理过
  2. 进度追踪
    • 生成manifest文件,并标记哪些视频文件是否已经转录文字的状态
    • 在视频同一目录或指定目录下维护一个JSON格式本地进度文件,记录已完成的文件
    • 执行相应命令时自动跳过已处理的文件,支持中断后重新运行继续,如 a.mp3已经标记已经转录了文字 生成了a.txt, 则转录文字操作不再执行此文件。
  3. 在分析阶段如果预估通过mp3生成的txt文件过大,可先切分成更小尺寸的MP3进行后续处理,manifest文件需要记录切分后的音频文件名
  • 显示文件大小、进度计数(当前/总数)、最终成功/失败统计,可重新执行未成功的音频转录
  • 转录音频用openai-whisper命令,默认在当前系统已经安装了whisper命令行

内容归纳整理

  • 待定

请分析extract_audio.py 和transcribe_audio.py 这两个脚本,并用这两个脚本进行全面的测试。 我已经准备了一个测试视频文件: /Users/weishen/MyFiles/03-SU软件的优化设置.mp4

/mnt/d/temp/03-SU软件的优化设置.mp4 请用这个视频文件进行测试 提取音频, 转录文字。

所有测试通过之后,请写一份详细的文档README.md来说明这两个脚本的使用方法。

我想修改openai-whisper的输入参数,可以让我自定义:

  1. 语言: zh/en 这样可以提高转录文字的精度
  2. 模型选择 ,现在默认时tiny, 速度快但精度低, 我希望可以提供 tiny/base/small/medium这几种,请预先下载好模型。在必要时可以根据参数来调取。
  3. 请分别测试用不同的模型提取文字生成不同的txt,我来进行比较看哪个精度高
  4. 脚本修改完成后,根据修改同时更新README.md