Python处理音频

news/2024/7/10 21:13:33 标签: python, 音视频, ffmpeg

从video中抽取audio

python">from moviepy.editor import VideoFileClip
from pydub import AudioSegment

video_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

python">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")

拼接音频

python">import os
from pydub import AudioSegment


base_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_seconds
    short_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,具体效果如下:


http://www.niftyadmin.cn/n/5305193.html

相关文章

吴恩达DeepLearning 2023学习目录

课程链接:https://space.bilibili.com/253734135/channel/collectiondetail?sid2022897 笔记下载:https://github.com/QueenJuliaZxx/deeplearning_ai_books L1 神经网络和深度学习 第一周 深度学习概论: 学习驱动神经网络兴起的主要技术趋…

web3 : blockscout剖析

Blockscout 是第一个功能齐全的开源区块链浏览器,可供任何以太坊虚拟机 (EVM) 链使用。项目方可以下载并使用Blockscout作为其链的浏览器,用户可以轻松验证交易、余额、区块确认、智能合约和其他记录。 目录 Blockscout可以做什么主要特征blockscoutDocker容器组件Postgres 1…

轻量检测模型PP-PicoDet解析

Paper:PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices official implementation:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.7/configs/picodet Backbone 作者通过实验发现,ShuffleNetV2在移动…

C#和C++存储 和 解析 bin 文件

C 解析 bin 文件 // C 解析 bin 文件 #include <stdio.h>int main() {FILE *file; // 定义文件指针file fopen("example.bin", "rb"); // 打开二进制文件&#xff08;只读模式&#xff09;if (file NULL) {printf("无法打开文件\n");re…

【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError

【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError 文章目录 【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError1. 报错的具体情况2. 解决过程3. 其他问题3.1 ModuleNotFoundError: No module named OpenGL3.2 ModuleNotFoundEr…

中国-印尼双清专线,货物运输全搞定!

中国-印尼双清专线&#xff0c;货物运输全搞定&#xff01;✈️&#x1f4e6; 嗨&#xff0c;亲爱的小伙伴们&#xff01;有没有梦想过一条直达雅加达的通道&#xff0c;让您的货物畅通无阻&#xff1f;现在&#xff0c;中国-印尼双清专线为您提供一站式&#xff0c;让我们一起…

Qt6学习笔记:对象树

使用QObject及其子类创建的对象是以对象树的形式来组织的。创建一个QObject对象时若设置一个父对象&#xff0c;它就会被添加到父对象的子对象列表里&#xff0c;一个父对象被删除时&#xff0c;其全部的子对象都会自动删除。QObject类的构造函数里有一个参数用于设置对象的父对…

宠物猫可能塑造人类肠道中的抗生素耐药性和益生菌

谷禾健康 宠物猫——伴侣——耐药性 宠物可以为人类的身心健康做出贡献&#xff0c;它们通常与主人生活得很亲密&#xff0c;有时甚至睡一张床。然而&#xff0c;宠物与其主人之间的密切接触所带来的潜在生物安全风险常常被忽视。狗和猫是很受欢迎的宠物&#xff0c;也是人畜共…