feat: first commit
This commit is contained in:
58
filter_audio.py
Normal file
58
filter_audio.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import os
|
||||
import librosa # 用于获取音频时长
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_audio_duration(file_path):
|
||||
"""获取音频文件的时长(秒)"""
|
||||
try:
|
||||
# 加载音频文件并获取时长(不加载音频数据,仅获取元信息)
|
||||
duration = librosa.get_duration(path=file_path)
|
||||
return duration
|
||||
except Exception as e:
|
||||
print(f"无法处理文件 {file_path}:{str(e)}")
|
||||
return None
|
||||
|
||||
|
||||
def filter_short_audios(folder_path, max_seconds=3):
|
||||
"""筛选出目录中时长小于指定秒数的音频文件"""
|
||||
# 支持的音频格式(可根据需要扩展)
|
||||
audio_extensions = ('.wav', '.mp3', '.flac', '.ogg', '.m4a')
|
||||
|
||||
# 存储符合条件的文件路径
|
||||
short_audios = []
|
||||
|
||||
# 遍历目录中的所有文件
|
||||
for root, dirs, files in os.walk(folder_path):
|
||||
for file in files:
|
||||
# 检查文件扩展名是否为音频格式
|
||||
if file.lower().endswith(audio_extensions):
|
||||
file_path = os.path.join(root, file)
|
||||
duration = get_audio_duration(file_path)
|
||||
|
||||
if duration is not None and duration < max_seconds:
|
||||
short_audios.append({
|
||||
'path': file_path,
|
||||
'duration': round(duration, 2) # 保留两位小数
|
||||
})
|
||||
|
||||
return short_audios
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 替换为你的音频文件目录
|
||||
audio_folder = "/Users/linhong/Desktop/a_PythonProjects/cat_translator_v2/cat_intents/emotions/等待喂食"
|
||||
|
||||
# 检查目录是否存在
|
||||
if not os.path.isdir(audio_folder):
|
||||
print(f"错误:目录 {audio_folder} 不存在")
|
||||
else:
|
||||
# 筛选出低于3秒的音频
|
||||
short_files = filter_short_audios(audio_folder, max_seconds=3)
|
||||
|
||||
if short_files:
|
||||
print(f"共找到 {len(short_files)} 个低于3秒的音频文件:")
|
||||
for item in short_files:
|
||||
print(f"• {item['path']} (时长:{item['duration']}秒)")
|
||||
else:
|
||||
print("未找到低于3秒的音频文件")
|
||||
Reference in New Issue
Block a user