モデル概要
モデル特徴
モデル能力
使用事例
license: cc-by-nc-4.0 language:
- vi base_model:
- SWivid/F5-TTS pipeline_tag: text-to-speech new_version: erax-ai/EraX-Smile-UnixSex-F5 tags:
- text-to-speech
- vietnamese
- female
- male
- unisex
- voice-cloning datasets:
- amphion/Emilia-Dataset
EraX-Smile-UnixSex-F5: F5-TTSにベトナム語のユニセックスな味付けを(オンラインゼロショット音声クローニング付き!)✨
こんにちは、ベトナムAI探求者の皆さん!👋
このモデルは素晴らしいF5-TTSアーキテクチャ(arXiv:2410.06885)を基に構築されています。美しいベトナム語のニュアンスを教えるため、私たちは270万以上のベトナム語専用サンプルを含む大規模なデータセットを使用してファインチューニングを行いました!これには公開データと1000時間に及ぶプライベートデータセットが含まれます(使用権に心から感謝しています!🙏)。
完全なオープンソースコード https://github.com/EraX-AI/viF5TTS/tree/main/src
残念ながら...
ベースとなるF5-TTSモデルはBY-NC 4.0ライセンス(非商用)のEmiliaデータセットで事前学習されています。ご不便をおかけして申し訳ありません。
商用利用可能なスクラッチから訓練したモデルも用意しています。詳細はお問い合わせください。
トレーニングの軌跡:
このモデルは懸命に努力しました!約12エポックを消化し、ほぼ過学習に達するまで訓練しました。 数値処理にほぼ1週間を費やし、時には炎上してクラッシュすることもありましたが🔥😅、ここまで来られたことを誇りに思います!
EraX-Smile-UnixSex-F5が倫理的で創造的な目的のためにコミュニティに役立つ貢献となることを願っています。
実際に動作するのか?聞いてみましょう!🎧
さて、真実の瞬間です。モデルに入力したサンプル音声(「リファレンス」)はこちらです:
音声クローニングサンプル
リファレンス音声(女性)
生成音声(女性)
生成音声をダウンロードして再生リファレンス音声(男性)
生成音声(男性)
生成音声をダウンロードして再生この魔法(または狂気)を自分で試してみたいですか?🧙♂️
このリポジトリには4つのモデルがあります、すべて試してみてください。
- model_42000.safetensors
- model_45000.safetensors
- model_48000.safetensors
- overfit.safetensors
このモデルを操作するコードはGitHubにあります: (EraX Smile Github)。ぜひ訪れてみてください!
開始するのはあまり苦痛ではないはずです。このリポジトリをダウンロードし、GitHubをクローンした後、次のようなコードを試すことができます:
# Ubuntu: sudo apt install ffmpeg
# Windowsは https://www.geeksforgeeks.org/how-to-install-ffmpeg-on-windows/ を参照
# GitHubコードをダウンロード
pip install numpy==1.26
pip install matplotlib
pip install vinorm
pip install f5-tts
pip install librosa
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # 使用するGPUを指定(CPUで我慢して待つ場合は無視!)
from vinorm import TTSnorm # まずベトナム語テキストを正規化
from f5tts_wrapper import F5TTSWrapper # 便利なラッパークラス
# --- 設定 ---
# このリポジトリからダウンロードしたモデルチェックポイントへのパス
# このパスが実際の.pthまたは.ckptまたはsafetensorsファイルを指していることを確認!
eraX_ckpt_path = "path/to/your/downloaded/EraX-Smile-UnixSex-F5/models/model_42000.safetensors" # <-- 変更してください!
# クローンしたい音声へのパス
ref_audio_path = "path/to/your/reference_voice.wav" # <-- 変更してください!
# このリポジトリからの語彙ファイルへのパス
vocab_file = "path/to/your/downloaded/EraX-Smile-UnixSex-F5/models/vocab.txt" # <-- 変更してください!
# 生成された音声の保存先
output_dir = "output_audio"
# --- テキスト ---
# リファレンス音声に一致するテキスト(モデルが音声を学習するのに役立ちます)。リファレンス音声と一致していることを確認してください!
ref_text = "Thậm chí không ăn thì cũng có cảm giác rất là cứng bụng, chủ yếu là cái phần rốn...trở lên. Em có cảm giác khó thở, và ngủ cũng không ngon, thường bị ợ hơi rất là nhiều"
# クローンした音声に話させたいテキスト
text_to_generate = "Trong khi đó, tại một chung cư trên địa bàn P.Vĩnh Tuy (Q.Hoàng Mai), nhiều người sống trên tầng cao giật mình khi thấy rung lắc mạnh nên đã chạy xuống sảnh tầng 1. Cư dân tại đây cho biết, họ chưa bao giờ cảm thấy ảnh hưởng của động đất mạnh như hôm nay."
# --- さあ始めましょう! ---
print("TTSエンジンを初期化中...(少し時間がかかるかもしれません)")
tts = F5TTSWrapper(
model_name="F5TTS_v1_Base",
vocoder_name="vocos",
ckpt_path=eraX_ckpt_path,
vocab_file=vocab_file,
use_ema=True,
target_sample_rate=24000,
n_mel_channels = 100,
hop_length = 256,
win_length = 1024,
n_fft = 1024,
ode_method = 'euler',
)
# リファレンステキストを正規化(モデルが理解しやすくなります)
ref_text_norm = TTSnorm(ref_text)
# 出力フォルダを準備
os.makedirs(output_dir, exist_ok=True)
print("リファレンス音声を処理中...")
# モデルにリファレンス音声を一度入力
# より良い品質のためにref_textを提供するか、ref_text=""を設定してWhisperで自動文字起こしを使用(インストールされている場合)
tts.preprocess_reference(
ref_audio_path=ref_audio_path,
ref_text=ref_text_norm,
clip_short=True # リファレンス音声を管理可能な長さ(約12秒)に保つ
)
print(f"使用されたリファレンス音声の長さ: {tts.get_current_audio_length():.2f} 秒")
# --- 新しい音声を生成 ---
print("クローンした音声で新しい音声を生成中...")
# 話させたいテキストを正規化
text_norm = TTSnorm(text_to_generate)
# 簡単に複数の文を生成できます
# このリストに正規化された文字列を追加するだけ
sentences = [text_norm]
for i, sentence in enumerate(sentences):
output_path = os.path.join(output_dir, f"generated_speech_{i+1}.wav")
# 実際の生成はここで行われます!
tts.generate(
text=sentence,
output_path=output_path,
nfe_step=32, # ノイズ除去ステップ。多いほど遅いが品質が向上?(デフォルト: 32)
cfg_strength=3.0, # リファレンス音声スタイルにどれだけ強く忠実にするか?(デフォルト: 2.0)
speed=1.0, # 話す速度を速くまたは遅く(デフォルト: 1.0)
cross_fade_duration=0.12, # テキストがチャンクに分割される場合の遷移をスムーズに(デフォルト: 0.15)
sway_sampling_coef=-1
)
print(f"完成!音声が保存されました: {output_path}")
print("\nすべて完了!出力フォルダを確認してください。")
-
完全なWebインターフェースとGradioによる制御には、F5-TTS Githubのオリジナルリポジトリをクローンして使用してください
-
ベトナム語テキスト正規化にはVinorm Teamのクールなライブラリを使用しています
-
次は何? 🤔 EraXチーム(私たちです!)は常に改良を加え、物事をより良く(または少なくとも、壊れにくく)しようとしています。 さらなるアップデートをお届けしたいと考えています。ご意見、バグ報告、またはただの挨拶も大歓迎です!
- [X] ⭐ ベトナム語男性用チェックポイントのリリース
- [ ] 📝 リアルタイムTTSストリーミングのコード
- [ ] 🔥 iPhone、Android、Rasberry Pi 4、またはブラウザで動作するPiperベースのモデルのリリース 🔥
⚠️ 責任ある使用に関する重要な注意 ⚠️
-
音声クローニング技術は強力であり、重大な倫理的責任を伴います。
-
意図された使用法: このモデルは創造的な目的、アクセシビリティツール、個人プロジェクト、および同意が明確で倫理的考慮が優先されるアプリケーションを対象としています。
-
禁止される使用法: 以下のような悪意のあるまたは非倫理的な目的での使用を強く非難し、厳しく禁止します:
- 同意のないディープフェイクの作成や許可なしの個人のなりすまし
- 誤情報、詐欺的なコンテンツ、または中傷的な資料の生成
- 嫌がらせ、虐待、またはいかなる形態の犯罪行為
-
ユーザーの責任: このモデルを使用することで、あなたは責任を持って倫理的に使用することに同意します。生成するコンテンツとそのすべての適用可能な法律および倫理基準への準拠について、あなたは単独で責任を負います。作成者(EraXチーム)はこのモデルの誤用に対するいかなる責任も負いません。
この技術を思慮深く倫理的に使用してください。
⚠️ 責任ある使用に関する重要な注意(ベトナム語) ⚠️
-
力と責任: 音声クローニング技術は非常に強力であり、非常に重要な倫理的責任を伴います。
-
意図された使用目的: このモデルは創造的な目的、アクセシビリティ支援ツールの開発、個人プロジェクトの実施、関係者からの明確な同意があり倫理的要因が最優先されるその他のアプリケーションのために作成されました。
-
不正使用の禁止: 私たちは以下のような悪意のある、非倫理的な目的でのモデル使用を強く非難し、絶対に禁止します:
- 明確な許可や同意なしにdeepfakeを作成したり他人を偽装すること
- 誤った情報の拡散、詐欺的なコンテンツの作成、または誹謗中傷的な資料
- 嫌がらせ行為、虐待、またはその他の犯罪活動
-
ユーザーの責任: このモデルを使用する際、あなたは責任を持って行動し、倫理基準を遵守することを約束します。あなたは自分が作成するコンテンツについて完全に責任を負い、そのコンテンツが現行のすべての法的規定と倫理基準に準拠していることを保証しなければなりません。開発チーム(EraXグループ)はこのモデルのいかなる悪用に対しても一切の責任を負いません。
呼びかけ: この技術を熟考し、慎重に、倫理的に使用してください。
ライセンスについて 📜 私たちのコードについては、Whisperのような巨人の足跡をたどり、MITライセンスでシンプルに保っています。使って、壊して、クールなものを作ってください! 残念ながら、ベースとなるF5-TTSモデルはBY-NC 4.0ライセンス(非商用)のEmiliaデータセットで事前学習されています。ご不便をおかけして申し訳ありません。
寛大な気持ちですか?(引用) 🙏 このモデルが実際に役に立ちましたか?それとも一瞬の楽しみを提供しましたか?もしそうなら、GitHubリポジトリに星⭐をつけると私たちの一日が明るくなります! そして、もしあなたが何か素晴らしいもの(研究論文など)を書いていて、私たちに言及したい場合は、以下のbibtexスニペットをご利用ください:
@misc{EraXSmileF5_2024,
author = {Nguyễn Anh Nguyên nguyen@erax.ai and The EraX Team},
title = {EraX-Smile-UnixSex-F5: ベトナム語に精通したベトナム人},
year = {2025},
publisher = {Hugging Face},
journal = {Hugging Face Model Hub},
howpublished = {\url{https://github.com/EraX-AI/viF5TTS}}
}




