import gradio as gr from gradio_client import Client, handle_file import os import requests HF_TOKEN = "hf_"+"tbvcBbtoRnhEkOjPAnjEgKLDAlBKflTBSe" if HF_TOKEN is None: raise ValueError("Hugging Face token (HF_TOKEN) is not set in environment variables.") client = Client("Plachta/Seed-VC", hf_token=HF_TOKEN) def process_audio( source, target, diffusion_steps=25, length_adjust=1, inference_cfg_rate=0.7, f0_condition=False, auto_f0_adjust=True, pitch_shift=0 ): try: print(f"Source file: {source}") print(f"Target file: {target}") # API呼び出し event_id = client.predict( source=handle_file(source), target=handle_file(target), diffusion_steps=diffusion_steps, length_adjust=length_adjust, inference_cfg_rate=inference_cfg_rate, f0_condition=f0_condition, auto_f0_adjust=auto_f0_adjust, pitch_shift=pitch_shift, api_name="/predict" ) # ストリーミング結果の取得 url = f"{client.base_url}/call/predict/{event_id}" headers = {"Authorization": f"Bearer {HF_TOKEN}"} response = requests.get(url, headers=headers, stream=True) print(f"Requesting URL: {url}") print(f"HTTP Status Code: {response.status_code}") if response.status_code == 200: for line in response.iter_lines(): if line: print(line.decode('utf-8')) # ストリームされたデータを出力 else: error_message = f"Failed to fetch result stream: {response.status_code} {response.text}" print(error_message) raise ValueError(error_message) return None, None # 修正後の仕様に合わせる場合、ここでダウンロード処理を実施 except Exception as e: error_message = f"An error occurred: {str(e)}" print(error_message) return None, None def download_file_with_token(url, filename): """トークンを使用してファイルをダウンロード""" headers = {"Authorization": f"Bearer {HF_TOKEN}"} response = requests.get(url, headers=headers) print(f"Requesting URL: {url}") print(f"HTTP Status Code: {response.status_code}") print(f"Response Content: {response.text}") if response.status_code == 200: with open(filename, "wb") as f: f.write(response.content) print(f"File downloaded: {filename}") return filename else: error_detail = f"Failed to download file: {response.status_code} {response.text}" print(error_detail) raise ValueError(error_detail) with gr.Blocks() as demo: gr.Markdown("# Audio Transformation with Token Authentication") with gr.Row(): source_audio = gr.Audio(label="Source Audio", type="filepath") target_audio = gr.Audio(label="Reference Audio", type="filepath") diffusion_steps = gr.Slider(1, 50, value=25, label="Diffusion Steps") length_adjust = gr.Slider(0.5, 2, value=1, label="Length Adjust") inference_cfg_rate = gr.Slider(0.1, 1.0, value=0.7, label="Inference CFG Rate") f0_condition = gr.Checkbox(label="Use F0 conditioned model") auto_f0_adjust = gr.Checkbox(label="Auto F0 adjust", value=True) pitch_shift = gr.Slider(-12, 12, value=0, label="Pitch shift") output_stream = gr.Audio(label="Stream Output Audio") output_full = gr.Audio(label="Full Output Audio") run_button = gr.Button("Transform Audio") run_button.click( process_audio, inputs=[ source_audio, target_audio, diffusion_steps, length_adjust, inference_cfg_rate, f0_condition, auto_f0_adjust, pitch_shift ], outputs=[output_stream, output_full] ) demo.launch() torch numpy torchaudio