#!/usr/bin/python3 # -*- coding: utf-8 -*- import argparse import shutil from urllib.parse import urlparse import json import librosa import numpy as np from pathlib import Path from gradio_client import Client, handle_file import requests import pandas as pd from scipy.io import wavfile from project_settings import project_path def get_args(): parser = argparse.ArgumentParser() parser.add_argument( "--audio_file", default="audio.xlsx", type=str, ) parser.add_argument( "--audio_dir", default=(project_path / "temp/audio_trim/origin").as_posix(), type=str, ) parser.add_argument( "--output_dir", default=(project_path / "temp/audio_trim/trimmed").as_posix(), type=str, ) args = parser.parse_args() return args client = Client("http://127.0.0.1:7861/") def main(): args = get_args() audio_dir = Path(args.audio_dir) audio_dir.mkdir(parents=True, exist_ok=True) output_dir = Path(args.output_dir) output_dir.mkdir(parents=True, exist_ok=True) df = pd.read_excel(args.audio_file) for i, row in df.iterrows(): name = row["name"] scene_id = row["scene_id"] audio_id = row["audio_id"] audio_url = row["audio_url"] schema = urlparse(audio_url) path = schema.path filename = audio_dir / path[1:] kwargs = { "silence_threshold": -40, "min_silence_len": 200, "min_kept_silence": 200, "mode": "trim" } kwargs = json.dumps(kwargs, ensure_ascii=False, indent=4) output_audio, log = client.predict( audio_t=handle_file(filename.as_posix()), kwargs=kwargs, engine="pydub_scipy", api_name="/when_click_trim_audio" ) trimmed_filename = output_dir / path[1:] trimmed_filename.parent.mkdir(parents=True, exist_ok=True) shutil.move( output_audio, trimmed_filename.as_posix() ) return if __name__ == "__main__": main()