Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -338,67 +338,58 @@ def voice_conversion(source, target, diffusion_steps, length_adjust, inference_c
|
|
338 |
|
339 |
import gradio as gr
|
340 |
|
341 |
-
#
|
342 |
-
|
343 |
-
|
344 |
-
"
|
345 |
"mp3": "default/sikokumetan.mp3"
|
346 |
}
|
347 |
-
|
348 |
-
|
349 |
-
#
|
350 |
-
def
|
351 |
-
|
352 |
-
|
|
|
|
|
353 |
return None
|
354 |
|
355 |
-
|
356 |
-
with gr.Blocks() as demo:
|
357 |
description = ("Zero-shot音声変換モデル(学習不要)。ローカルでの利用方法は[GitHubリポジトリ](https://github.com/Plachtaa/seed-vc)をご覧ください。"
|
358 |
"参考音声が25秒を超える場合、自動的に25秒にクリップされます。"
|
359 |
"また、元音声と参考音声の合計時間が30秒を超える場合、元音声は分割処理されます。")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
|
361 |
-
with gr.Column():
|
362 |
-
inputs = [
|
363 |
-
gr.Audio(type="filepath", label="元音声"),
|
364 |
-
gr.Audio(type="filepath", label="参考音声"),
|
365 |
-
gr.Slider(minimum=1, maximum=200, value=10, step=1, label="拡散ステップ数", info="デフォルトは10、50~100が最適な品質"),
|
366 |
-
gr.Slider(minimum=0.5, maximum=2.0, step=0.1, value=1.0, label="長さ調整", info="1.0未満で速度を上げ、1.0以上で速度を遅くします"),
|
367 |
-
gr.Slider(minimum=0.0, maximum=1.0, step=0.1, value=0.7, label="推論CFG率", info="わずかな影響があります"),
|
368 |
-
gr.Checkbox(label="F0条件付きモデルを使用", value=False, info="歌声変換には必須です"),
|
369 |
-
gr.Checkbox(label="F0自動調整", value=True, info="F0をおおよそ調整して目標音声に合わせます。F0条件付きモデル使用時にのみ有効です"),
|
370 |
-
gr.Slider(label='音程変換', minimum=-24, maximum=24, step=1, value=0, info="半音単位の音程変換。F0条件付きモデル使用時にのみ有効です"),
|
371 |
-
]
|
372 |
-
|
373 |
-
# ギャラリーとして画像を表示 (画像URLを表示)
|
374 |
-
image_gallery = gr.Radio(
|
375 |
-
label="画像ギャラリー",
|
376 |
-
choices=["sikokumetan"], # 画像のキーを選択肢として使用
|
377 |
-
type="index", # 画像のインデックスを選択する形式
|
378 |
-
info="画像を選択してください"
|
379 |
-
)
|
380 |
-
|
381 |
-
# ギャラリー選択に基づいて参考音声を更新するコンポーネント
|
382 |
-
reference_audio = gr.Audio(type="filepath", label="参考音���")
|
383 |
-
|
384 |
-
# ギャラリー選択に基づいて参考音声を更新する関数
|
385 |
-
def update_audio(selected_image):
|
386 |
-
selected_mp3 = update_reference_audio(selected_image)
|
387 |
-
return selected_mp3
|
388 |
-
|
389 |
-
# 画像選択の変更イベントに反応
|
390 |
-
image_gallery.change(fn=update_audio, inputs=image_gallery, outputs=reference_audio)
|
391 |
-
|
392 |
-
examples = [["examples/source/yae_0.wav", "examples/reference/dingzhen_0.wav", 25, 1.0, 0.7, False, True, 0],
|
393 |
-
["examples/source/jay_0.wav", "examples/reference/azuma_0.wav", 25, 1.0, 0.7, True, True, 0],
|
394 |
-
["examples/source/Wiz Khalifa,Charlie Puth - See You Again [vocals]_[cut_28sec].wav",
|
395 |
-
"examples/reference/teio_0.wav", 100, 1.0, 0.7, True, False, 0],
|
396 |
-
["examples/source/TECHNOPOLIS - 2085 [vocals]_[cut_14sec].wav",
|
397 |
-
"examples/reference/trump_0.wav", 50, 1.0, 0.7, True, False, -12],
|
398 |
-
]
|
399 |
-
|
400 |
-
outputs = [gr.Audio(label="ストリーム出力音声", streaming=True, format='mp3'),
|
401 |
-
gr.Audio(label="完全出力音声", streaming=False, format='wav')]
|
402 |
-
|
403 |
-
# インターフェースを起動
|
404 |
-
demo.launch()
|
|
|
338 |
|
339 |
import gradio as gr
|
340 |
|
341 |
+
# ギャラリーの画像と対応するMP3ファイル
|
342 |
+
gallery_data = [
|
343 |
+
{
|
344 |
+
"image": "default/sikokumetan.webp",
|
345 |
"mp3": "default/sikokumetan.mp3"
|
346 |
}
|
347 |
+
]
|
348 |
+
|
349 |
+
# ギャラリーの画像が選択された際の処理
|
350 |
+
def on_image_select(image_path):
|
351 |
+
# 画像に対応するMP3を取得
|
352 |
+
for item in gallery_data:
|
353 |
+
if item["image"] == image_path:
|
354 |
+
return item["mp3"]
|
355 |
return None
|
356 |
|
357 |
+
if __name__ == "__main__":
|
|
|
358 |
description = ("Zero-shot音声変換モデル(学習不要)。ローカルでの利用方法は[GitHubリポジトリ](https://github.com/Plachtaa/seed-vc)をご覧ください。"
|
359 |
"参考音声が25秒を超える場合、自動的に25秒にクリップされます。"
|
360 |
"また、元音声と参考音声の合計時間が30秒を超える場合、元音声は分割処理されます。")
|
361 |
+
|
362 |
+
inputs = [
|
363 |
+
gr.Audio(type="filepath", label="元音声"),
|
364 |
+
gr.Audio(type="filepath", label="参考音声"),
|
365 |
+
gr.Slider(minimum=1, maximum=200, value=10, step=1, label="拡散ステップ数", info="デフォルトは10、50~100が最適な品質"),
|
366 |
+
gr.Slider(minimum=0.5, maximum=2.0, step=0.1, value=1.0, label="長さ調整", info="1.0未満で速度を上げ、1.0以上で速度を遅くします"),
|
367 |
+
gr.Slider(minimum=0.0, maximum=1.0, step=0.1, value=0.7, label="推論CFG率", info="わずかな影響があります"),
|
368 |
+
gr.Checkbox(label="F0条件付きモデルを使用", value=False, info="歌声変換には必須です"),
|
369 |
+
gr.Checkbox(label="F0自動調整", value=True, info="F0をおおよそ調整して目標音声に合わせます。F0条件付きモデル使用時にのみ有効です"),
|
370 |
+
gr.Slider(label='音程変換', minimum=-24, maximum=24, step=1, value=0, info="半音単位の音程変換。F0条件付きモデル使用時にのみ有効です"),
|
371 |
+
]
|
372 |
+
|
373 |
+
# ギャラリーコンポーネントの追加
|
374 |
+
gallery = gr.Gallery(
|
375 |
+
value=[item["image"] for item in gallery_data], # ギャラリーに表示する画像を指定
|
376 |
+
label="参考音声選択画像",
|
377 |
+
interactive=True
|
378 |
+
).style(grid=3) # グリッド形式で表示
|
379 |
+
|
380 |
+
# ギャラリー画像が選択されたときにMP3を自動で設定
|
381 |
+
def update_reference_audio(selected_image):
|
382 |
+
mp3_path = on_image_select(selected_image)
|
383 |
+
return mp3_path
|
384 |
+
|
385 |
+
# 参考音声を選択するためのインターフェースを更新
|
386 |
+
gr.Interface(
|
387 |
+
fn=voice_conversion,
|
388 |
+
description=description,
|
389 |
+
inputs=[*inputs, gallery], # ギャラリーを追加
|
390 |
+
outputs=outputs,
|
391 |
+
title="Seed Voice Conversion",
|
392 |
+
examples=examples,
|
393 |
+
cache_examples=False,
|
394 |
+
).launch()
|
395 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|