Skip to main content

音声認識モデルの統合

Agent ツールからローカル音声ファイルまたは音声 URL を Token Plan の音声認識モデルに送信し、文字起こしを返します。

対応モデル

モデル機能タイプ
qwen-audio-3.0-asr-flash音声認識非リアルタイム
その他のモデルについては、Token Plan がサポートするモデル をご覧ください。

前提条件

  • Token Planサブスクリプション。Personal Editionの場合、My Subscription (Personal)から sk-sp- APIキーを取得します。Team Editionの場合、Member Managementでシートを割り当ててから、APIキーを取得します。
  • Python 3.9以降。
  • パブリックにアクセス可能な音声URL、またはローカルの音声ファイル。音声は5分以内である必要があります。wav、mp3、opus などの形式がサポートされています。詳細については、音声仕様を参照してください。

インターフェース

POST https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation リクエストヘッダーでは Authorization: Bearer $ANTHROPIC_AUTH_TOKEN を使用します。リクエストボディとレスポンスフィールドについては、以下のセクションを参照してください。

ステップ 1: Slash Command を作成する

Token Plan API キー(sk-sp- で始まる)を、スクリプト認証用の環境変数 $ANTHROPIC_AUTH_TOKEN に設定します。 プロジェクトルートに .claude/commands/speech-to-text.md を作成し、次の内容を追加します:
Token Plan の音声認識 API を呼び出して、音声をテキストに文字起こししてください。

音声ファイルまたは URL: $ARGUMENTS

## 手順

1. 入力がローカルの音声パスまたは公開アクセス可能な URL であることを確認してください。音声は 5 分以内である必要があります。形式とサイズの制限については、Model Studio の音声認識ドキュメントにある音声仕様を参照してください。
2. 依存関係をインストールします: pip install requests
3. Bash ツールを使用して次の Python スクリプトを実行してください。このスクリプトは最初に TOKEN_PLAN_API_KEY を、次に ANTHROPIC_AUTH_TOKEN を読み取ります。キーを表示したり、ファイルやログに書き込んだりしないでください。

```python
import base64
import json
import os
import sys
from pathlib import Path

import requests

MIME_TYPES = {
    "aac": "audio/aac",
    "amr": "audio/amr",
    "flac": "audio/flac",
    "m4a": "audio/mp4",
    "mp3": "audio/mpeg",
    "ogg": "audio/ogg",
    "opus": "audio/opus",
    "wav": "audio/wav",
    "webm": "audio/webm",
}

source = sys.argv[1]
key = os.environ.get("TOKEN_PLAN_API_KEY") or os.environ.get("ANTHROPIC_AUTH_TOKEN")
if not key:
    raise SystemExit("Token Plan API Key not found.")

if source.startswith(("http://", "https://")):
    audio_data = source
    audio_format = Path(source.split("?")[0]).suffix.lstrip(".").lower() or "mp3"
else:
    path = Path(source)
    audio_format = path.suffix.lstrip(".").lower()
    mime_type = MIME_TYPES.get(audio_format, f"audio/{audio_format}")
    audio_data = f"data:{mime_type};base64,{base64.b64encode(path.read_bytes()).decode()}"

payload = {
    "model": "qwen-audio-3.0-asr-flash",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "input_audio", "input_audio": {"data": audio_data}}
                ],
            }
        ]
    },
    "parameters": {"format": audio_format},
}

response = requests.post(
    "https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation",
    headers={"Authorization": f"Bearer {key}", "Content-Type": "application/json"},
    json=payload,
    timeout=300,
)
if not response.ok:
    raise SystemExit(f"{response.status_code}: {response.text}")
result = response.json()
print(result.get("output", {}).get("text") or json.dumps(result, ensure_ascii=False, indent=2))
```

4. 文字起こし結果を出力してください。詳細な結果が必要な場合は、レスポンス JSON の `sentence` フィールドと `words` フィールドを表示してください。

ステップ2:音声を文字起こしする

Claude Codeで、/speech-to-text ./meeting.wav と入力するか、音声URLを渡します:/speech-to-text https://example.com/audio.mp3。

リクエストパラメータ

パラメータ説明
modelqwen-audio-3.0-asr-flash を設定します。
input.messages[0].content[0].input_audio.data音声 URL、または形式が data:audio/{format};base64,{data} の Base64 Data URI。
parameters.format必須です。音声形式(例: wav や mp3)。
parameters.sample_rate任意です。音声サンプルレート(例: 16000)。
parameters.language_hints任意です。認識用の言語コード。最大 4 つまで(例: ["zh"])。
すべてのパラメータとレスポンスフィールドについては、非リアルタイム音声認識 HTTP APIをご覧ください。

レスポンス

  • 認識テキスト:output.text。
  • 文単位の結果:output.sentence.text、output.sentence.words(単語レベルのタイムスタンプ)。
  • 音声の長さ:usage.duration(秒)。

その他のツール

他のツールの拡張メカニズムおよび設定ファイルパスについては、統合の概要の「ツール設定パス」を参照してください。

制限事項

  • Token Planは、非リアルタイム音声認識モデル qwen-audio-3.0-asr-flash を提供します。
  • 単一の音声入力は5分以内である必要があります。ファイルサイズとフォーマットの制限については、音声仕様をご参照ください。
  • 音声認識はDashScopeプロトコルを使用します。エンドポイントは https://token-plan.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation です。