見出し画像

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」と表示されたら話しかけることができます。

関連



この記事が気に入ったらサポートをしてみませんか?