SOUND / Whisper
Whisper
OpenAI Whisperによる堅牢な音声認識モデル
186 ダウンロード
サイズ
~49MB+162.6MBメモリ
2GB+精度
INT8使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。
はじめる
デプロイ
sudo docker run --rm \
--name rk3588-whisper \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-whisper:latest \
python3 web_service.pyREST API
REST API を使用して推論を実行します。以下のコマンドをコピーしてください。
Curl
curl -X POST "http://127.0.0.1:8000/api/models/whisper/task" -F "file=@/home/user/audio/long_podcast.wav" -F "language=zh"
Python
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/whisper/predict",
files={"file": open("/home/user/audio/test_en.wav", "rb")},
data={"language": "en"},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
モデル詳細
reComputer RKクイックスタート
1. Dockerのインストール
開発ボードで以下のコマンドを実行してDockerをインストールします:
bash
# インストールスクリプトをダウンロード
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyunミラーソースを使用してインストール
sudo sh get-docker.sh --mirror Aliyun
# Dockerを起動し、起動時の自動起動を有効化
sudo systemctl enable docker
sudo systemctl start docker2. プロジェクトの実行(ワンコマンド、デュアルモードプレビュー)
このプロジェクトは Webブラウザ からのアクセスをサポートしています。プログラムは音声認識用のWebインターフェースを自動的に提供します。
ステップA: イメージのプル
bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-whisper:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-whisper: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 \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-whisper:latest \
python3 web_service.pyアクセス: 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 \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-whisper:latest \
python3 web_service.pyアクセス: http://<Board_IP>:8000
🔌 APIドキュメント
このプロジェクトはASRタスク用のRESTfulインターフェースを提供し、音声ファイルの同期および非同期文字起こしをサポートします。
1. 同期文字起こしインターフェース(短い音声)
エンドポイント: POST /api/models/whisper/predict
20秒未満の音声ファイルに適しています。
リクエストパラメータ(Multipart/Form-Data):
file: (必須)文字起こしする音声ファイル(例:.wav、.mp3)。language: (オプション)対象言語コード(例:en、zh)。現在のモデルと異なる場合、トークナイザーをホットスワップします。
使用例:
bash
curl -X POST "http://127.0.0.1:8000/api/models/whisper/predict" \
-F "file=@/home/user/audio/test_en.wav" \
-F "language=en"レスポンス形式(JSON):
json
{
"status": "success",
"data": {
"text": "Hello world, this is a test.",
"language": "en",
"duration": 3.5,
"inference_time": 0.8
}
}2. 非同期文字起こしインターフェース(長い音声)
エンドポイント: POST /api/models/whisper/task
長い音声/動画ファイルを処理するための非同期タスクを作成します。
使用例:
bash
curl -X POST "http://127.0.0.1:8000/api/models/whisper/task" \
-F "file=@/home/user/audio/long_podcast.wav" \
-F "language=zh"レスポンス形式(JSON):
json
{
"status": "success",
"data": {
"task_id": "29c7b932-a77f-480c-a18b-8a958c7911c3",
"message": "Task created successfully. Poll /api/models/whisper/task/{task_id} for status."
}
}3. タスク状態のポーリング
エンドポイント: GET /api/models/whisper/task/{task_id}
使用例:
bash
curl "http://127.0.0.1:8000/api/models/whisper/task/29c7b932-a77f-480c-a18b-8a958c7911c3"4. システム設定インターフェース(Config)
モデルと言語を動的に切り替えるために使用します。
現在のシステム状態の取得
- エンドポイント:
GET /api/system/status - レスポンス:
{"status": "success", "data": {"model_size": "base", "language": "en", "max_tokens": 12, "rknn_lite_available": true}}
システム設定の更新(ホットスワップ)
- エンドポイント:
POST /api/system/config - リクエストパラメータ(Form-Data):
model_size=base,language=zh - レスポンス:
{"status": "success", "message": "Successfully loaded base model."}
🛠️ 開発者ガイド(本番環境推奨事項)
コード説明
web_service.py:- Web API: FastAPIを統合し、音声アップロード、非同期タスクキューイング、モデルのホットスワップをサポートします。
- RKNN推論: EncoderとDecoderモデルの両方のRKNN初期化をカプセル化します。自己回帰生成ループを実装します。
py_utils/whisper_utils.py:- 音声処理: OpenAIの実装に合わせたLog-Melスペクトログラムを計算します。
- トークナイザー: BPEトークン化と語彙管理を処理します。
モデルの変更
- 学習・変換済みの
.rknnエンコーダーおよびデコーダーモデルをmodel/ディレクトリに配置します。 - サービスはサイズパラメータ(例:
whisper_encoder_base_20s.rknn)に基づいてモデルを自動的に読み込みます。ファイル命名規則が維持されていることを確認してください。