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)