ストリーミング精度No.1の音声認識API

電話番号、メールアドレス、UUIDも、背景ノイズがあっても一度で正しく表記されます。内蔵のターン検出が、話者が話し終えたタイミングをエージェントに伝えます。
transcribe.py
with client.stt.auto_finalize.websocket(
    model="ink-2",
    encoding="pcm_s16le",
    sample_rate=16000,
) as ws:
    ws.send_raw(audio_chunk)
    for event in ws:
        if event.type == "turn.end":
            print(event.transcript)

wss://api.cartesia.ai/stt/turns/websocket

完全なサンプル

話すと、その場で文字起こしされます

クリックまたはSpaceで文字起こしを開始
タップして文字起こしを開始
話すテーマに迷ったら
今週末は何をする予定ですか?

Pythonで音声認識:最初の文字起こし

SDKをインストール

Python 3.9以降を使用してください。websocketsエクストラを追加すると、リアルタイムのストリーミングが使えます。

ターミナル
python3 -m pip install -U "cartesia[websockets]"

APIキーを設定

Cartesiaのプレイグラウンドでキーを作成し、環境変数に保存します。キーをコードに直接書かずに済みます。

macOS / Linux
export CARTESIA_API_KEY="your-api-key"

PowerShellをお使いですか?$env:CARTESIA_API_KEY="your-api-key"

録音を文字起こし

このスクリプトをtranscribe.pyとして保存し、call.wavという名前のモノラル16ビットWAVファイルと同じフォルダに置いて実行します。スクリプトは録音と同じ速度で音声をストリーミングし、ターンが終わるたびに出力します。

ターミナル
python3 transcribe.py

ライブ音声の場合は、ファイルを読み込む代わりに、マイクや通話の音声チャンクを届いた順に送信します。

モデル
ink-2
エンドポイント
/stt/turns/websocket
transcribe.py
import os
import time
import wave

from cartesia import Cartesia

client = Cartesia(api_key=os.environ["CARTESIA_API_KEY"])

with wave.open("call.wav", "rb") as audio:
    sample_rate = audio.getframerate()
    frames_per_chunk = sample_rate // 10  # 100 ms of audio

    with client.stt.auto_finalize.websocket(
        model="ink-2",
        encoding="pcm_s16le",
        sample_rate=sample_rate,
    ) as ws:
        while chunk := audio.readframes(frames_per_chunk):
            ws.send_raw(chunk)
            time.sleep(0.1)  # send audio as fast as it was recorded
        ws.send({"type": "close"})

        for event in ws:
            if event.type == "turn.end":
                print(event.transcript)
            elif event.type == "error":
                raise RuntimeError(event.message)

音声に合ったエンドポイントを選ぶ

ライブ音声はWebSocketでストリーミングし、録音済みのファイルは1回のHTTPリクエストでアップロードします。

音声エージェント

/stt/turns/websocket

通信方式
WebSocket
返り値
文字起こし全文を含むターンイベント

話者が話し終えたタイミングをCartesiaが判断し、ターン全体を含むturn.endイベントを送信します。

ターン検出ガイドを読む

ターンを自分で制御

/stt/websocket

通信方式
WebSocket
返り値
文字起こしの更新

アプリですでに音声活動検出やプッシュトゥトークを使っている場合に向いています。話者が話し終えたらfinalizeを送ると、すぐに文字起こしが返ります。

リアルタイムAPIリファレンスを読む

録音ファイル

/stt

通信方式
HTTP
返り値
文字起こし1件

WAVやMP3ファイルをまるごとアップロードすると、文字起こしが1件返ります。単語ごとのタイムスタンプも付けられます。

バッチAPIリファレンスを読む

音声エージェントがつまずく場面でも正確

発信者はカード番号を読み上げ、名前を一文字ずつ伝え、文の途中で間を置きます。エージェントには、そのどの瞬間にも正確な文字起こしが必要です。

ストリーミング精度No.1

Cartesiaのストリーミング音声認識モデルInk-2は、電話番号、メールアドレス、UUIDを正しく表記し、ノイズの多い電話回線でも別のノイズ除去フィルターなしで精度を保ちます。

VADなしでターン検出

Ink-2は発信者の話す内容からターンの終わりを判断するため、別の音声活動検出(VAD)が不要になります。turn.eager_endイベントを使えば、ターンが確定する前にLLMが返答を作り始められます。

製品固有の言葉も正しく表記

重要語の指定を使うと、発信者がよく使う名前や専門用語を認識しやすくなります。接続ごとに最大100語を指定できます。

SDKと音声エージェントフレームワーク

公式のPythonとJavaScriptのSDKがWebSocketの処理を引き受けます。CartesiaのPipecatとLiveKitの連携機能を使えば、既存のエージェントにInk-2を追加できます。

音声エージェントにおける音声認識の位置

Ink-2は発信者の音声とLLMの間に入り、ターンイベントで返答のタイミングをエージェントに伝えます。

01

音声入力

マイク、ブラウザ、通話の音声を、raw PCM、μ-law、A-lawで、音源のサンプルレートのままストリーミングします。

02

Ink-2

発信者が話している間に文字起こしを書き出し、話し終えたらturn.endを送信します。

03

エージェント

確定したターンをLLMに渡します。turn.eager_endで返答を始めれば応答が速くなり、turn.resumeが届いたら破棄します。

エンタープライズ向けのセキュリティ。クラウドからローカルまで。

  • HIPAA準拠のバッジ

    HIPAA準拠

  • SOC 2 Type 2のバッジ

    SOC 2 Type 2

  • GDPRのバッジ

    GDPR

  • PCIのバッジ

    PCI

製品に音声認識を追加

無料アカウントで、Ink-2による文字起こしを毎月最大111分使えます。ボリューム価格、オンプレミス導入、BAAについてはお問い合わせください。

音声認識APIのよくある質問

おすすめの音声認識APIはどれですか?

音声エージェントのようなライブ会話には、ストリーミング中も正確で、話者が話し終えたタイミングを判断できるAPIを選びましょう。Ink-2はストリーミング音声認識の精度No.1で、ターンも自ら検出します。文字起こしモデルと音声活動検出の2つを、1つのモデルで置き換えられます。

無料で使える音声認識APIはありますか?

はい。無料のCartesiaアカウントの月間クレジットで、APIを通じてInk-2の文字起こしを最大111分使えます。有料プランではさらに増やせます。コードを書かずに音声認識を試すなら、無料のオンラインツールをご利用ください。

Cartesiaの音声認識APIの料金はいくらですか?

Ink-2での文字起こしは音声1秒あたり3クレジットで、プランの月間クレジットから差し引かれます。無料プランは毎月最大111分まで使え、各有料プランに含まれる分数は料金ページに記載しています。

Pythonで音声をテキストに変換するには?

pip install "cartesia[websockets]"でSDKをインストールし、CARTESIA_API_KEYを設定して、client.stt.auto_finalize.websocket(model="ink-2", ...)でWebSocketを開きます。send_rawで音声チャンクをそのまま送り、turn.endイベントから確定した文字起こしを読み取ります。完全なスクリプトはこのページのPythonのセクションにあります。

Cartesiaの音声認識APIで音声ファイルを文字起こしできますか?

はい。バッチエンドポイントは、WAVやMP3などの録音をまるごと1回のHTTPリクエストで受け取り、文字起こしを1件返します。単語ごとのタイムスタンプも付けられます。リアルタイムのWebSocketは録音と同じ速度でしか音声を受け付けないため、ファイルの文字起こしにはバッチのほうが速く済みます。

Cartesiaの音声認識APIはどの言語に対応していますか?

Ink-2は英語、スペイン語、フランス語、ヒンディー語、日本語を文字起こしでき、話されている言語がどれかも検出します。

音声認識APIとは何ですか?

音声認識API(STT API、文字起こしAPIとも呼ばれます)は、アプリから受け取った音声を文字に変換して返します。ストリーミングAPIは話者が話している間に文字起こしを返すため、音声エージェントやライブ字幕に向いています。

Cartesiaの音声認識APIを自社のインフラで運用できますか?

はい。Ink-2はオンプレミス(エアギャップ環境を含む)、AWS、GCP、Azure上の自社VPC、または製品に組み込むOEMライセンスで導入できます。これらの導入形態とデータ保持ゼロは、エンタープライズ契約でご利用いただけます。