pdf-icon

Product Guide

リアルタイム音声アシスタント

OpenAI ボイスアシスタント

XiaoLing ボイスアシスタント

AtomS3R-M12 Volcengine Kit

Industrial Control

IoT Measuring Instruments

Air Quality

PowerHub

Module13.2 PPS

入力デバイス

Ethernet Camera

ディップスイッチ&ピン切り替え

CosyVoice2-API

OpenAI API と互換性のある使用方法を提供しており、StackFlow パッケージをインストールするだけで使用できます。

準備

  1. RaspberryPi & LLM8850 ソフトウェアパッケージ取得チュートリアル に従い、以下のモデルパッケージとソフトウェアパッケージをインストールします。
sudo apt install lib-llm llm-sys llm-cosy-voice llm-openai-api
sudo apt install llm-model-cosyvoice2-0.5b-axcl
注意
新しいモデルをインストールするたびに、sudo systemctl restart llm-openai-api を手動で実行してモデルリストを更新する必要があります。
注意
CosyVoice2 は LLM ベースの音声生成モデルであり、自然で滑らかな音声を合成できますが、リソースや設計上の制限により、生成される音声の長さには制限があります。現在のバージョンで生成できる最大音声長は 27 秒であり、初回のモデル読み込みは時間がかかりますので、しばらくお待ちください。

Curl 呼び出し

curl http://127.0.0.1:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "CosyVoice2-0.5B-axcl",
    "response_format": "wav",
    "input": "名にし負はば、いざこと問はむ、都鳥。わが思ふ人は、ありやなしやと、住の江の岸による浪、よるさへや、夢の通ひ路、人目よくらむ。"
  }' \
  -o output.wav

Python 呼び出し

from pathlib import Path
from openai import OpenAI
client = OpenAI(
    api_key="sk-",
    base_url="http://127.0.0.1:8000/v1"
)
speech_file_path = Path(__file__).parent / "output.wav"
with client.audio.speech.with_streaming_response.create(
  model="CosyVoice2-0.5B-axcl",
  voice="prompt_data",
  response_format="wav",
  input='名にし負はば、いざこと問はむ、都鳥。わが思ふ人は、ありやなしやと、住の江の岸による浪、よるさへや、夢の通ひ路、人目よくらむ。',
) as response:
  response.stream_to_file(speech_file_path)

音声クローン(ボイスクローン)

  1. モデルを手動でダウンロード して raspberrypi5 にアップロードするか、次のコマンドでモデルリポジトリを取得します。
ヒント
git lfs がインストールされていない場合は、git lfs インストール手順 を参考にインストールしてください。
git clone --recurse-submodules https://huggingface.co/M5Stack/CosyVoice2-scripts

ファイル構成説明

m5stack@raspberrypi:~/rsp/CosyVoice2-scripts $ ls -lh
total 28K
drwxrwxr-x 2 m5stack m5stack 4.0K Nov  6 15:18 asset
drwxrwxr-x 2 m5stack m5stack 4.0K Nov  6 15:18 CosyVoice-BlankEN
drwxrwxr-x 2 m5stack m5stack 4.0K Nov  6 15:19 frontend-onnx
drwxrwxr-x 3 m5stack m5stack 4.0K Nov  6 15:18 pengzhendong
-rw-rw-r-- 1 m5stack m5stack   24 Nov  6 15:18 README.md
-rw-rw-r-- 1 m5stack m5stack  103 Nov  6 15:18 requirements.txt
drwxrwxr-x 3 m5stack m5stack 4.0K Nov  6 15:18 scripts
  1. 仮想環境を作成します

    python -m venv cosyvoice
  2. 仮想環境を有効化します

    source cosyvoice/bin/activate
  3. 依存パッケージをインストールします

    pip install -r requirements.txt
  4. process_prompt スクリプトを実行します

    python3 scripts/process_prompt.py --prompt_text  asset/ja_woman1.txt --prompt_speech asset/ja_woman1.wav --output ja_woman1

音声特徴ファイルの生成が成功すると、次のように表示されます:

(cosyvoice) m5stack@raspberrypi:~/rsp/CosyVoice2-scripts $ python3 scripts/process_prompt.py --prompt_text  asset/ja_woman1.txt --prompt_speech asset/ja_woman1.wav --output ja_woman1
2025-11-06 17:05:45.814942840 [W:onnxruntime:Default, device_discovery.cc:164 DiscoverDevicesForPlatform] GPU device discovery failed: device_discovery.cc:89 ReadFileContents Failed to open file: "/sys/class/drm/card1/device/vendor"
prompt_text いらっしゃい、いらっしゃい。 そんなに泣いてはせっかくのクリームが流れるじゃありませんか。
fmax 8000
prompt speech token size: torch.Size([1, 180])
  1. 「ja_woman1」フォルダをモデルディレクトリにコピーし、モデルを再初期化します。
cp -r ja_woman1 /opt/m5stack/data/CosyVoice2-0.5B-axcl/
sudo systemctl restart llm-sys # モデル設定のリセット
ヒント
デフォルトのクローン音声を置き換えたい場合は、**/opt/m5stack/data/models/mode_CosyVoice2-0.5B-axcl.json** ファイルの prompt_dir フィールドを変更し、置き換えるディレクトリを指定してください。音声を変更するたびにモデルを再初期化する必要があります。

Curl 呼び出し

curl http://127.0.0.1:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "CosyVoice2-0.5B-axcl",
    "voice": "ja_woman1",
    "response_format": "wav",
    "input": "名にし負はば、いざこと問はむ、都鳥。わが思ふ人は、ありやなしやと、住の江の岸による浪、よるさへや、夢の通ひ路、人目よくらむ。"
  }' \
  -o output.wav

Python 呼び出し

from pathlib import Path
from openai import OpenAI
client = OpenAI(
    api_key="sk-",
    base_url="http://127.0.0.1:8000/v1"
)
speech_file_path = Path(__file__).parent / "output.wav"
with client.audio.speech.with_streaming_response.create(
  model="CosyVoice2-0.5B-axcl",
  voice="ja_woman1",
  response_format="wav",
  input='名にし負はば、いざこと問はむ、都鳥。わが思ふ人は、ありやなしやと、住の江の岸による浪、よるさへや、夢の通ひ路、人目よくらむ。',
) as response:
  response.stream_to_file(speech_file_path)
On This Page