50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
import shutil
|
|
from pathlib import Path
|
|
from pydub import AudioSegment
|
|
|
|
|
|
def check_dependencies():
|
|
|
|
dependencies = ["ffmpeg", "ffprobe"]
|
|
missing = []
|
|
for dep in dependencies:
|
|
if not shutil.which(dep):
|
|
missing.append(dep)
|
|
if missing:
|
|
print(f"缺少必要依赖: {', '.join(missing)}")
|
|
print("请安装缺失的依赖项。在Ubuntu上可以使用: sudo apt-get install ffmpeg")
|
|
return False
|
|
return True
|
|
|
|
|
|
def convert_wav_to_mp3(source_dir):
|
|
|
|
source_path = Path(source_dir)
|
|
if not source_path.exists() or not source_path.is_dir():
|
|
print(f"源目录不存在或不是一个目录: {source_dir}")
|
|
return False
|
|
wav_files = list(source_path.glob("**/*.wav"))
|
|
if not wav_files:
|
|
print(f"在目录 {source_dir} 中没有找到WAV文件")
|
|
return False
|
|
print(f"找到 {len(wav_files)} 个WAV文件,开始转换...")
|
|
for wav_file in wav_files:
|
|
try:
|
|
mp3_file = wav_file.with_suffix(".mp3")
|
|
sound = AudioSegment.from_wav(str(wav_file))
|
|
sound = sound.set_frame_rate(16000).set_sample_width(2).set_channels(1)
|
|
sound.export(str(mp3_file), format="mp3", bitrate="16k")
|
|
print(f"已转换: {wav_file} -> {mp3_file}")
|
|
except Exception as e:
|
|
print(f"转换文件 {wav_file} 时出错: {str(e)}")
|
|
print("转换完成!")
|
|
return True
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if not check_dependencies():
|
|
print("缺少必要依赖,程序退出")
|
|
exit(1)
|
|
source_directory = "/home/ubuntu/TalkingQ_URL/assets/roles/zhuchi"
|
|
convert_wav_to_mp3(source_directory)
|