python 剪切音频

python 剪切音频

python 复制代码
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
from pydub import AudioSegment
import os

def cut_audio(input_file, start_time, end_time):
    """
    剪切音频文件
    :param input_file: 输入音频文件路径
    :param start_time: 开始时间(秒)
    :param end_time: 结束时间(秒)
    """
    try:
        # 检查文件是否存在
        if not os.path.exists(input_file):
            raise FileNotFoundError(f"找不到文件: {input_file}")

        # 加载音频文件
        print(f"正在加载音频文件: {input_file}")
        audio = AudioSegment.from_file(input_file)

        # 转换时间为毫秒
        start_ms = int(float(start_time) * 1000)
        end_ms = int(float(end_time) * 1000)

        # 验证时间范围
        if start_ms >= end_ms:
            raise ValueError("开始时间必须小于结束时间")
        
        if end_ms > len(audio):
            raise ValueError(f"结束时间超出音频长度 ({len(audio)/1000:.2f}秒)")

        # 执行剪切
        print(f"正在剪切音频: {start_time}秒 到 {end_time}秒")
        cut_audio = audio[start_ms:end_ms]

        # 生成输出文件名
        file_name = os.path.splitext(input_file)[0]
        output_file = f"{file_name}_cut_{start_time}-{end_time}.mp3"

        # 导出文件
        print(f"正在保存文件: {output_file}")
        cut_audio.export(output_file, format="mp3")
        
        print(f"剪切完成!输出文件: {output_file}")
        return True

    except Exception as e:
        print(f"错误: {str(e)}")
        return False

def main():
    # 检查参数数量
    if len(sys.argv) != 4:
        print("使用方法: python script.py <音频文件> <开始时间(秒)> <结束时间(秒)>")
        print("示例: python script.py input.mp3 10 30")
        return

    # 获取参数
    input_file = sys.argv[1]
    start_time = sys.argv[2]
    end_time = sys.argv[3]

    # 执行剪切
    cut_audio(input_file, start_time, end_time)

if __name__ == "__main__":
    # main()
    cut_audio("output.wav", 11, 15)
相关推荐
2601_962293246 小时前
Python自动化统计团队工作量并生成可视化仪表盘的脚本方案【指导】
python·数据分析·自动化·可视化·仪表盘
2601_962293797 小时前
OCRmyPDF批处理脚本:使用Python自动化复杂OCR任务
python·自动化·批处理脚本·ocrmypdf·ocr任务
袋鼠云数栈8 小时前
实时湖仓如何真正做到“数据够新”?
大数据·数据库·人工智能·数据治理
不cong明的亚子8 小时前
web live多屏互动平台
javascript·经验分享·音视频
ACP广源盛139246256738 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
Java后端的Ai之路8 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
ACP广源盛139246256738 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
2601_962077719 小时前
基于Python与NLP的新闻事件信息抽取实战:从NER到时空标准化
python·nlp·transformers·spacy·新闻事件抽取
JavaPub-rodert9 小时前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain
郝学胜-神的一滴9 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生