跑起来字节跳动音频超分开源项目versatile_audio_super_resolution


已部署在AutoDL上https://www.codewithgpu.com/i/haoheliu/versatile_audio_super_resolution/versatile_audio_super_resolution

ipynb:

复制代码
音乐 By 邓文怡 一个深圳的小姑娘

%cd /root/versatile_audio_super_resolution/运行目录

# 读取一个mp3音频文件,然后将它转换成wav格式,
# 然后每5.12秒分割为一个wav音频文件并保存到一个目录,
# 然后将文件相对路径输出到txt文件。

from pydub import AudioSegment
import os

def convert_and_split_mp3_to_wav(source_mp3, target_dir, split_interval=5120):
    # 确保目标目录存在
    os.makedirs(target_dir, exist_ok=True)
    
    # 读取并转换MP3到WAV
    audio = AudioSegment.from_mp3(source_mp3)
    base_filename = os.path.splitext(os.path.basename(source_mp3))[0]
    
    # 分割音频
    total_length = len(audio)
    splits = range(0, total_length, split_interval)
    split_files = []
    
    for i, start in enumerate(splits):
        end = start + split_interval
        split_audio = audio[start:end]
        split_filename = f"{base_filename}_part{i}.wav"
        split_path = os.path.join(target_dir, split_filename)
        split_audio.export(split_path, format="wav")
        split_files.append(split_path)
    
    # 将分割后的文件路径写入TXT文件
    with open(os.path.join(target_dir, f"{base_filename}_splits.txt"), "w") as f:
        for file in split_files:
            f.write(f"{file}\n")

# 示例用法
source_mp3 = "dwy/source.mp3"
target_dir = "dwy/splits"
convert_and_split_mp3_to_wav(source_mp3, target_dir)

!audiosr -il dwy/splits/source_splits.txt

# 从指定目录下读取wav音频文件,只需要读取一个层级,该目录没有文件夹。
# 然后将这些wav音频文件合并成一个wav音频文件并保存到指定文件夹,
# 然后将这一个wav音频文件转换成mp3音频文件并保存到指定文件夹。

from pydub import AudioSegment
import os

def merge_wav_and_convert_to_mp3(source_dir, wav_output_path, mp3_output_path):
    # 获取source_dir目录下的所有wav文件
    wav_files = [f for f in os.listdir(source_dir) if f.endswith('.wav')]
    
    # 初始化一个空的音频段
    combined = AudioSegment.empty()
    
    # 遍历所有wav文件,将它们合并
    for wav_file in wav_files:
        audio = AudioSegment.from_wav(os.path.join(source_dir, wav_file))
        combined += audio
    
    # 保存合并后的wav文件
    combined.export(wav_output_path, format="wav")
    
    # 将合并后的wav文件转换为mp3并保存
    combined.export(mp3_output_path, format="mp3")

# 示例用法
source_dir = ""
wav_output_path = "dwy/output.wav"
mp3_output_path = "dwy/output.mp3"
merge_wav_and_convert_to_mp3(source_dir, wav_output_path, mp3_output_path)

---

?MP3
分割线
?FLAC

---

# 读取一个flac音频文件,然后将它转换成wav格式,
# 然后每5.12秒分割为一个wav音频文件并保存到一个目录,
# 然后将文件相对路径输出到txt文件。
from pydub import AudioSegment
import os

def convert_and_split_flac_to_wav(source_flac, target_dir, split_interval=5120):
    # 确保目标目录存在
    os.makedirs(target_dir, exist_ok=True)
    
    # 读取并转换FLAC到WAV
    audio = AudioSegment.from_file(source_flac, format="flac")
    base_filename = os.path.splitext(os.path.basename(source_flac))[0]
    
    # 分割音频
    total_length = len(audio)
    splits = range(0, total_length, split_interval)
    split_files = []
    
    for i, start in enumerate(splits):
        end = start + split_interval
        split_audio = audio[start:end]
        split_filename = f"{base_filename}_part{i}.wav"
        split_path = os.path.join(target_dir, split_filename)
        split_audio.export(split_path, format="wav")
        split_files.append(split_path)
    
    # 将分割后的文件路径写入TXT文件
    with open(os.path.join(target_dir, f"{base_filename}_splits.txt"), "w") as f:
        for file in split_files:
            f.write(f"{file}\n")

# 示例用法
source_flac = "dwy/source.flac"
target_dir = "dwy/splits"
convert_and_split_flac_to_wav(source_flac, target_dir)

!audiosr -il dwy/splits/source_splits.txt

# 从指定目录下读取wav音频文件,只需要读取一个层级,该目录没有文件夹。 
# 然后将这些wav音频文件合并成一个wav音频文件并保存到指定文件夹,
# 然后将这一个wav音频文件转换成flac音频文件并保存到指定文件夹。
from pydub import AudioSegment
import os

def merge_wav_and_convert_to_flac(source_dir, wav_output_path, flac_output_path):
    # 获取source_dir目录下的所有wav文件
    wav_files = [f for f in os.listdir(source_dir) if f.endswith('.wav') and os.path.isfile(os.path.join(source_dir, f))]
    
    # 初始化一个空的音频段
    combined = AudioSegment.empty()
    
    # 遍历所有wav文件,将它们合并
    for wav_file in wav_files:
        audio = AudioSegment.from_wav(os.path.join(source_dir, wav_file))
        combined += audio
    
    # 保存合并后的wav文件
    combined.export(wav_output_path, format="wav")
    
    # 将合并后的wav文件转换为flac并保存
    combined.export(flac_output_path, format="flac")

# 示例用法
source_dir = "output/11_06_2024_21_05_48"
wav_output_path = "dwy/output.wav"
flac_output_path = "dwy/output.flac"
merge_wav_and_convert_to_flac(source_dir, wav_output_path, flac_output_path)

作者:likewendy
链接:https://www.codewithgpu.com/i/haoheliu/versatile_audio_super_resolution/versatile_audio_super_resolution
来源:CodeWithGpu
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关推荐
源码之家2 分钟前
计算机毕业设计:汽车销售数据采集分析系统 Flask框架 requests爬虫 可视化 数据分析 大数据 机器学习 大模型(建议收藏)✅
大数据·爬虫·python·信息可视化·flask·汽车·课程设计
程序员buddha6 分钟前
Spring集合注入功能
windows·python·spring
cnnews6 分钟前
Termux中安装python包
android·linux·开发语言·python·安卓·termux
landihao7 分钟前
ffmpeg推流的个别错误和图片压缩视频
ffmpeg·音视频
神秘剑客_CN8 分钟前
使用ffmpeg+python实现自动给视频添加移动水印
python·ffmpeg·音视频
琪伦的工具库9 分钟前
批量字幕烧录方案对比:脚本 vs 在线工具 vs 桌面工具
音视频
第一程序员9 分钟前
Python与数据库:SQLite、MySQL、PostgreSQL详解
python·github
我重来不说话10 分钟前
H264监控视频播放器-专业级-自动解析HXVS/HXVF
音视频·播放器·h.264
Cha0DD8 小时前
【由浅入深探究langchain】第二十集-SQL Agent+Human-in-the-loop
人工智能·python·ai·langchain
Cha0DD8 小时前
【由浅入深探究langchain】第十九集-官方的SQL Agent示例
人工智能·python·ai·langchain