SOUND / MMS-TTS

MMS-TTS

reComputer RK3576

reComputer RK3576およびRK3588上でRKNNにより高速化されたfacebook/mms-tts-eng英語音声合成モデル。

65 ダウンロード
精度
RKNN

使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。

はじめる

OTA overlayroot が有効な Armbian 26.8.7 Gnome 以降: コンテナを実行する前に Docker のストレージを設定してください overlay のマウントエラーを防ぐために必要です。

デプロイ
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-mms_tts:latest

REST API

REST API を使用して推論を実行します。以下のコマンドをコピーしてください。

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "mms-tts-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "mms-tts-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

モデル詳細

OTA overlayroot が有効な Armbian 26.8.7 Gnome 以降: コンテナを実行する前に Docker のストレージを設定してください overlay のマウントエラーを防ぐために必要です。

クイックスタート

1. Docker のインストール

開発ボードで以下のコマンドを実行して Docker をインストールします:

bash
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh
# Install using Aliyun mirror source
sudo sh get-docker.sh --mirror Aliyun
# Start Docker and enable auto-start on boot
sudo systemctl enable docker
sudo systemctl start docker

2. プロジェクトの実行(単一コマンド、Web プレビュー)

このプロジェクトは facebook/mms-tts-eng を使って英語音声を合成します。Web 画面でテキスト入力、話速調整、WAV の再生とダウンロードができます。

ステップ A:イメージの取得

bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-mms_tts:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-mms_tts:latest

ステップ B:ワンクリックで実行

対象:RK3588:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
    ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-mms_tts:latest

アクセス先: http://<Board_IP>:8000


対象:RK3576:

bash
sudo docker run --rm --privileged --net=host \
    -e PYTHONUNBUFFERED=1 \
    -e RKNN_LOG_LEVEL=0 \
    -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
    ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-mms_tts:latest

アクセス先: http://<Board_IP>:8000

3. コマンドライン推論

bash
python inference.py --platform rk3576 --model_dir model \
    --text 'hello from the edge' \
    --speaking_rate 0.8 \
    --output output.wav

RK3588 のソースディレクトリで実行する場合は --platform rk3588 を使用してください。


🔌 API ドキュメント

REST API は英語音声を同期生成し、生成した最新 20 個の WAV ファイルを一時的なダウンロード用に保存します。

1. 音声合成インターフェース

エンドポイント: POST /api/models/mms_tts/predict

リクエストパラメータ(Multipart/Form-Data):

  • text:必須の英語テキスト。対応文字のみを含め、最大 99 文字です。
  • speaking_rate:省略可能で、範囲は 0.6~1.4、既定値は 1.0 です。1 未満では話速が遅くなります。

使用例:

bash
curl -X POST "http://127.0.0.1:8000/api/models/mms_tts/predict" \
    -F 'text=hello from the edge' \
    -F 'speaking_rate=0.8'

レスポンス形式(JSON):

json
{
  "success": true,
  "model": "mms_tts",
  "platform": "rk3576",
  "inference_time_ms": 224.7,
  "result": {
    "text": "hello from the edge",
    "sample_rate": 16000,
    "samples": 35840,
    "duration_seconds": 2.24,
    "speaking_rate": 0.8,
    "duration_clipped": false,
    "warnings": [],
    "audio_url": "/api/audio/<audio_filename>",
    "audio_filename": "<audio_filename>"
  }
}

話速パラメータはデコード前に音素の長さを調整するため、生成後の WAV をリサンプリングせず、音高を維持します。遅い話速や長いテキストでデコーダーの長さ制限に達すると、duration_clipped が true になり、レスポンスに警告が含まれます。

2. 生成音声のダウンロード

エンドポイント: GET /api/audio/{audio_filename}

bash
curl -o speech.wav \
    "http://127.0.0.1:8000/api/audio/<audio_filename>"

予測インターフェースが返した audio_filename をそのまま使用してください。

3. システム設定インターフェース

現在の設定の取得

  • エンドポイント: GET /api/config
  • 既定レスポンス: {"speaking_rate": 1.0}

設定の更新

bash
curl -X POST "http://127.0.0.1:8000/api/config" \
    -H 'Content-Type: application/json' \
    -d '{"speaking_rate": 1.2}'

GET /api/health で現在のプラットフォーム、読み込み済みエンコーダーとデコーダー、対応する入力機能を確認します。OpenAPI ドキュメントは /docs にあります。


🛠️ 開発者ガイド(本番環境向け推奨事項)

コードの説明

  • web_service.py:
    • Web API:合成リクエスト、設定、生成音声の保存、再生、ダウンロードを処理します。
    • 出力の保持:UUID ベースの WAV ファイル名を作成し、最新 20 個を保持します。
  • task_runtime.py:
    • テキスト処理:対応する英語文字を検証し、固定モデル入力に変換します。
    • 長さの制御:speaking_rate で音素の長さを調整し、デコーダーによる切り詰めを報告します。
    • RKNN 推論:エンコーダーとデコーダーを実行し、モノラル 16 kHz WAV を出力します。
  • inference.py:単発の合成結果をローカル WAV ファイルに保存します。

モデルファイル

構成要素ファイル
MMS-TTS エンコーダーmodel/encoder.rknn
MMS-TTS デコーダーmodel/decoder.rknn

モデルの変更

  1. 互換性のあるエンコーダーとデコーダーを model/ に配置し、ファイル名を維持します。
  2. 両者を想定の語彙、長さテンソル、モノラル 16 kHz 出力の仕様に対応させます。
  3. 0.6–1.4 の話速範囲とデコーダーの長さ制限をテストします。

エンコーダーとデコーダーは 一本の音声合成パイプラインの 二段階であり、別サイズの選択肢ではありません。上流プロジェクトは現在、各プラットフォームに 一組を提供しており、独立した量子化選択機能はありません。

ローカルイメージのビルド

reComputer-RK-CV のルートディレクトリから実行します:

bash
docker build -f docker/rk3576/mms_tts.dockerfile \
    -t rk3576-mms_tts:local src/rk3576_mms_tts

docker build -f docker/rk3588/mms_tts.dockerfile \
    -t rk3588-mms_tts:local src/rk3588_mms_tts

入力と出力

入力:英語テキストと話速。出力:合成WAV音声、継続時間、サンプルレート、サンプル数。