Closed4

HuggingFaceの「speech-to-speech」実装を試す

kun432kun432

GitHubレポジトリ

https://github.com/huggingface/speech-to-speech

Speech To Speech: オープンソースでモジュール化されたGPT4-oの取り組み

アプローチ

構成

このリポジトリは以下の部分からなる音声-音声カスケードパイプラインを実装しています:

  1. 音声活動検出 (VAD)
  2. 音声からテキスト (STT)
  3. 言語モデル (LM)
  4. テキストから音声 (TTS)

モジュール性

このパイプラインは完全にオープンかつモジュール化されたアプローチを提供しており、Hugging Face Hubで利用可能なTransformersライブラリを活用しています。コードは簡単に変更可能で、以下のデバイス特有および外部ライブラリの実装をサポートしています:

VAD

STT

LLM

TTS

多言語サポート

このパイプラインは現在、英語、フランス語、スペイン語、中国語、日本語、韓国語をサポートしています。
以下の2つのユースケースが考慮されています:

  • 単一言語会話--languageフラグでターゲット言語コードを指定して言語設定を強制します(デフォルトはen)。
  • 言語切り替え--languageautoに設定。この場合、Whisperが各発話プロンプトの言語を検出し、LLMは「Please reply to my message in ...」という指示で応答言語を確実に指定します。

なお、STTおよびLLMチェックポイントはターゲット言語と互換性がある必要があります。STT部分では、Parler-TTSはまだ多言語に対応していません(ただし、この機能は近々追加予定です🤗)。その間、Melo(英語、フランス語、スペイン語、中国語、日本語、韓国語をサポート)またはChat-TTSを使用してください。

kun432kun432

インストール

READMEに従って進める。ローカルのMac上で。

レポジトリクローン

git clone https://github.com/huggingface/speech-to-speech && cd speech-to-speech

Python仮想環境作成。自分はmiseを使うが、適宜。pythonは3.12だとパッケージインストールで失敗したので3.11にした。

mise use python@3.11
cat << 'EOS' >> .mise.toml
[env]
_.python.venv = { path = ".venv", create = true }
EOS
mise trust

依存パッケージをインストール。

pip install -r requirements_mac.txt

Macの場合はMeloTTSになるようなので、あわせてこちらも。

python -m unidic download

使用方法は2つある。

  • サーバー/クライアントアプローチ: モデルをサーバー上で実行し、音声入出力をクライアントからストリーム。
  • ローカルアプローチ:ローカル環境で実行。

とりあえずMac向けにはローカルアプローチの手順が記載されているのでそれで。

python s2s_pipeline.py \
    --local_mac_optimal_settings \
    --device mps

初回は諸々モデルのダウンロードなどが行われるので時間がかかる。以下のように表示されればどうやら発話を待っているように思える。

出力
2024-12-26 01:11:58,537 - connections.local_audio_streamer - INFO - Starting local audio stream

適当に発話してみるとこうなる。

出力
USER: Oh, hi,
ASSISTANT: Hello!
ASSISTANT:  How can I help you today?
USER: I hope you enjoyed this video.
ASSISTANT: I'm glad you like it.
ASSISTANT:  I'm glad you're enjoying my videos.

これ日本語で喋ってるんだけどね・・・ドキュメント見つつ言語指定しても変わらず・・・

python s2s_pipeline.py \
    --language ja \
    --local_mac_optimal_settings \
    --device mps

うーん、もうちょっと調べてみる。

kun432kun432

レポジトリの更新が2ヶ月ほど止まっているようなので、一旦終了かな。

このスクラップは2ヶ月前にクローズされました