soiz1 commited on
Commit
90a9c82
·
verified ·
1 Parent(s): 498dde8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -56
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
- # 画像とMP3ファイルの対応を定義
342
- image_mp3_mapping = {
343
- "sikokumetan": {
344
- "webp": "default/sikokumetan.webp",
345
  "mp3": "default/sikokumetan.mp3"
346
  }
347
- }
348
-
349
- # ギャラリーで選択された画像に基づいて参考音声を設定する関数
350
- def update_reference_audio(selected_image):
351
- if selected_image in image_mp3_mapping:
352
- return image_mp3_mapping[selected_image]["mp3"]
 
 
353
  return None
354
 
355
- # Blocksコンテキストを使用してUIを作成
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