【开源免费】使用 Python + Whisper + PyDub 自动切割长音频文件

文章目录

一:环境准备

1、安装 FFmpeg



  • 验证安装:在终端输入 ffmpeg -version,看到版本信息即成功。

    ffmpeg -version

2、安装 Python 库

  • 打开命令提示符安装开源语音识别模型openai-whisper。
  • 打开命令提示符安装用于音频切割和格式处理的工具 pydub。

pip install openai-whisper pydub


二:编写与运行 Python 脚本

1、创建一个新的 Python 文件,内容如下:

复制代码
import whisper
from pydub import AudioSegment
import json
import os

def split_mp3_by_sentences(input_mp3_path, output_dir="output_chunks", model_size="base"):

    # 1. 准备输出目录
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 2. 加载 Whisper 模型并转写,获取带时间戳的文本
    print(f"正在加载 Whisper '{model_size}' 模型...")
    model = whisper.load_model(model_size)
    print(f"正在转写音频: {input_mp3_path},请稍候...")
    result = model.transcribe(input_mp3_path, word_timestamps=False, language="zh")

    # 3. 从结果中提取句子和其时间戳
    # Whisper 的 'segments' 就是句子/段落级的时间戳
    segments = result['segments']
    print(f"识别出 {len(segments)} 个句子/段落。")

    # 4. 加载原始音频
    audio = AudioSegment.from_mp3(input_mp3_path)

    # 5. 根据时间戳切割并导出音频
    for i, seg in enumerate(segments):
        start_time = int(seg['start'] * 1000)  # 转为毫秒
        end_time = int(seg['end'] * 1000)      # 转为毫秒
        text = seg['text'].strip()

        # 切割音频
        chunk = audio[start_time:end_time]

        # 创建文件名(清除文件名中的非法字符)
        safe_text = "".join(c for c in text if c.isalnum() or c in (' ', '-', '_')).strip()
        chunk_filename = f"sentence_{i+1:03d}_{safe_text[:30]}.mp3"
        chunk_filepath = os.path.join(output_dir, chunk_filename)

        # 导出音频片段
        chunk.export(chunk_filepath, format="mp3")
        print(f"已保存: {chunk_filename} (来自 {seg['start']:.2f}s - {seg['end']:.2f}s)")

    print(f"\n所有分割完成!文件保存在目录: {output_dir}")

#你的MP3文件路
if __name__ == "__main__":
    # 输入你的长 MP3 文件路径
    your_audio_file = "123_test.mp3"  # 请修改为你的文件路径
    # 选择模型大小:对于中文,'base' 是速度和精度的良好平衡
    model_to_use = "base"
    # 输出文件夹名称
    output_folder = "sentences_output"

    # 运行函数
    split_mp3_by_sentences(your_audio_file, output_folder, model_to_use)

2、设置参数

  • 将上述代码保存为一个py文件,如 mp3_cut.py
  • 打开 mp3_cut.py文件,设置你的音频文件路径。如下图

三:运行脚本

1、运行脚本,生成目标文件。

  • 打开终端,运行mp3_cut.py
  • 如果你是首次运行,会自动下载指定的 Whisper 模型,下图中的 base模型。

2、测试目标文件

  • 完成后,你的目标文件会保存在脚本所在目录下的 sentences_output 文件夹中
相关推荐
island13141 分钟前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络
xcLeigh10 分钟前
Python入门:Python3 requests模块全面学习教程
开发语言·python·学习·模块·python3·requests
xcLeigh10 分钟前
Python入门:Python3 statistics模块全面学习教程
开发语言·python·学习·模块·python3·statistics
爱吃烤鸡翅的酸菜鱼30 分钟前
CANN ops-nn激活函数与池化算子深度解析
网络·开源·aigc
YongCheng_Liang31 分钟前
从零开始学 Python:自动化 / 运维开发实战(核心库 + 3 大实战场景)
python·自动化·运维开发
ujainu31 分钟前
CANN仓库中的AIGC可持续演进工程:昇腾AI软件栈如何构建“活”的开源生态
人工智能·开源·aigc
酷酷的崽79834 分钟前
深度解析 CANN 开源项目:以 `ops-transformer` 为例探索 AI 模型加速实践
开源
鸽芷咕41 分钟前
为什么越来越多开发者转向 CANN 仓库中的 Python 自动化方案?
python·microsoft·自动化·cann
秋邱42 分钟前
用 Python 写出 C++ 的性能?用CANN中PyPTO 算子开发硬核上手指南
开发语言·c++·python
ujainu1 小时前
CANN仓库中的AIGC性能极限挑战:昇腾软件栈如何榨干每一瓦算力
人工智能·开源