
HuggingFace の speech-to-speech を試す
「HuggingFace」の「speech-to-speech」を試したのでまとめました。
・Mac (M3 Max)
1. speech-to-speech
「Hugging Face」の「speech-to-speech」は、ローカルで音声認識、応答生成、音声合成を行うためのオープンソースの取り組みです。
特徴は、次のとおりです。
・モジュール式パイプライン : 音声認識、応答生成、音声合成などの複数のコンポーネントを組み合わせて構成されている
・オープンソース : コードはGitHubで公開されており、コミュニティによる改善や拡張が可能
・多言語対応 : 複数の言語間での音声変換をサポート
主要コンポーネントは、次のとおりです。
・Voice Activity Detection (VAD) : silero VAD v5 で音声区間を検出
・Speech to Text (STT) : Whisper で音声をテキストに変換
・Language Model (LM) : HuggingFace HubのLMで応答生成
・Text to Speech (TTS) : MeloTTS でテキストを音声に変換
利点は、次のとおりです。
・ローカル処理が可能なため、プライバシーを保護しつつ高速処理が可能
・APIコストがかからず、ネットワーク接続なしでも動作
・HuggingFaceのエコシステムを活用することで、最新のモデルや技術を簡単に利用できる
2. 実行手順
Macでの実行手順は、次のとおりです。
(1) Pythonの仮想環境の準備。
今回は、「Python 3.10.14」を使いました。
(2) パッケージのインストール。
git clone https://github.com/huggingface/speech-to-speech
cd speech-to-speech
pip install -r requirements_mac.txt
python -m unidic download
(3) 「LLM/mlx_language_model.py」の101行目を次のように編集。
日本語の終端文字 ("。", "?", "!", ) を追加しています。追加しないと音声認識が完了しませんでした。
if curr_output.endswith((".", "?", "!", "<|end|>")):
↓
if curr_output.endswith(("。", "?", "!", ".", "?", "!", "<|end|>")):
(4) 実行。
今回は、「Llama-3.1-8B-Instruct-4bit」を使いました。
python s2s_pipeline.py \
--local_mac_optimal_settings \
--stt_model_name large-v3 \
--language ja \
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct-4bit
「Starting local audio stream」と表示されたら話しかけることができます。
HuggingFace の speech-to-speech の多言語対応をお試し中。https://t.co/KgXh0MlmIz pic.twitter.com/pSXOVNzbCA
— 布留川英一 / Hidekazu Furukawa (@npaka123) September 11, 2024