ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Python处理音频

2026/9/12 23:18:48 拓冰建站 浏览量
Python处理音频

从video中抽取audio

from moviepy.editor import VideoFileClip
from pydub import AudioSegmentvideo_path = '/opt/audio/audios/video1.mp4'
audio_path = '/opt/audio/audios/video1.wav'  # 提取的音频保存路径# 加载视频文件
video = VideoFileClip(video_path)# 提取音频
audio = video.audio# 保存音频文件
audio.write_audiofile(audio_path)# 读取音频文件
sound = AudioSegment.from_wav(audio_path)# 将音频转换为单声道
sound = sound.set_channels(1)
sound = sound.set_frame_rate(16000)# 保存音频文件(单声道)sound.export(audio_path, format="wav")

截取video

from pydub import AudioSegment# 加载音频文件
audio = AudioSegment.from_file("xxx/1.wav")# 定义起始和结束时间(单位为毫秒)
start_time = 3000  
end_time = 28550   # 截取音频
extracted = audio[start_time:end_time]# 导出截取的音频
extracted.export("xxx/3.wav", format="wav")

拼接音频

import os
from pydub import AudioSegmentbase_path = f'{os.getcwd()}/audios/reduce_noise/video2/'
# 要拼接的音频的路径list
short_audio_files = []
for i in range(100, 105):path = base_path + str(i) + ".wav"wav = AudioSegment.from_file(path)duration_seconds = wav.duration_secondsshort_audio_files.append(path)
# 声明一个空白音频
merged_audio = AudioSegment.empty()
# 遍历每个短音频文件并添加到合并后的音频中
for audio_file in short_audio_files:# 从文件加载短音频short_audio = AudioSegment.from_file(audio_file)# 将短音频追加到合并后的音频merged_audio = merged_audio.append(short_audio, crossfade=0)# 保存合并后的音频为一个长音频文件
merged_audio.export(f"{base_path}merged_audio.wav", format="wav")

说话人分离:

主要使用whisper-diarization:GitHub - MahmoudAshraf97/whisper-diarization: Automatic Speech Recognition with Speaker Diarization based on OpenAI Whisper

使用场景:一整个wav ,分理出不同人对应的wav,具体效果如下: