Spaces:
Running
Running
#!/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() | |