soiz1 commited on
Commit
7138043
·
verified ·
1 Parent(s): 448cf42

Update app.py

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