deepgram-js-conversational-stt について
JavaScript / TypeScript 開発者向けの Deepgram Flux 対話音声認識スキルです。`/v2/listen` WebSocket でターン情報付きの音声をストリーミング転写し、関連イベントと SDK の操作方法を説明します。
主な機能
- 01WebSocket による対話音声のストリーミング転写
- 02Connected や TurnInfo などのイベント受信
- 03エンドポイント検出とターン終了パラメーターの設定
- 04Flux のライブ転写サンプル
活用シーン
- 01対話インターフェースで発話ターンを識別
- 02ターンイベントが必要なライブ音声ストリームの処理
- 03Voice Agent ランタイムを使わない対話音声認識の組み込み
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ deepgram/ deepgram-js-sdk --skill deepgram-js-conversational-sttインストール後、Claude Code で/deepgram-js-conversational-sttを入力して読み込まれたか確認します。
詳細
Deepgram Conversational STT / Flux の使用方法(JavaScript / TypeScript SDK)
会話音声と明示的なターンイベントに対応した、/v2/listen 経由のターン認識ストリーミング STT です。
この製品を使用する場面
- 単なる単語ストリームではなく、ターン認識に対応した文字起こしが必要な場合。
TurnInfoやConnectedのような Flux スタイルのイベントを利用したい場合。- 会話型インターフェースを構築するものの、完全な Voice Agent ランタイムは必要ない場合。
次の場合は、別のスキルを使用してください:
- 一般的な v1 の文字起こし、または事前録音音声の REST 処理が必要な場合 →
deepgram-js-speech-to-text。 - 思考と音声出力が組み込まれたホスト型アシスタントが必要な場合 →
deepgram-js-voice-agent。 - 感情分析や要約などの分析オーバーレイが必要な場合 →
deepgram-js-audio-intelligence。
認証
require("dotenv").config();
const { DeepgramClient } = require("@deepgram/sdk");
const deepgramClient = new DeepgramClient({
apiKey: process.env.DEEPGRAM_API_KEY,
});
クイックスタート
examples/26-transcription-live-websocket-v2.ts より:
const deepgramConnection = await deepgramClient.listen.v2.createConnection({
model: "flux-general-en",
});
deepgramConnection.on("message", (data) => {
if (data.type === "Connected") {
console.log("Connected:", data);
} else if (data.type === "TurnInfo") {
console.log("Turn Info:", data);
} else if (data.type === "FatalError") {
deepgramConnection.close();
}
});
deepgramConnection.connect();
await deepgramConnection.waitForOpen();
// Swap this for a live mic capture in real apps; the repo example uses
// `createReadStream` over a sample file.
const { createReadStream } = require("node:fs");
const audioStream = createReadStream("samples/spacewalk.wav");
audioStream.on("data", (chunk) => {
deepgramConnection.sendMedia(chunk);
});
audioStream.on("end", () => {
deepgramConnection.sendCloseStream({ type: "CloseStream" });
});
主なパラメーター / API サーフェス
src/api/resources/listen/resources/v2/client/Client.tsの接続引数:model、encoding、sample_rate、eager_eot_threshold、eot_threshold、eot_timeout_ms、keyterm、tag、mip_opt_out。src/api/resources/listen/resources/v2/client/Socket.tsのソケットメソッド:sendMedia(...)、sendCloseStream(...)、sendListenV2Configure(...)、waitForOpen()。src/CustomClient.tsで追加されるカスタムラッパー機能:createConnection(...)エイリアスと、Node 専用のping(...)ヘルパー。
制限事項
- 現在の生成済み
ListenV2Model型で公開されているのは"flux-general-en"のみです。 - 製品ドキュメントではより広範な Flux 機能が紹介されていますが、現時点では
flux-general-multi/language_hintはこのリポジトリの生成済み型に反映されていません。
API リファレンス(階層別)
- リポジトリ内のリファレンス:
reference.mdには現在listen.v2の記載がありません。リポジトリ内の信頼できる情報源として、src/CustomClient.tsとsrc/api/resources/listen/resources/v2/client/{Client,Socket}.tsを参照してください。 - 正式な OpenAPI(REST):https://developers.deepgram.com/openapi.yaml
- 正式な AsyncAPI(WSS):https://developers.deepgram.com/asyncapi.yaml
- Context7:ライブラリ ID
/llmstxt/developers_deepgram_llms_txt - 製品ドキュメント:
注意点
- ここでは REST パスは使用できません。 このスキルは
/v2/listenの WebSocket のみを対象としています。 - 現在のリポジトリの型で許可されているのは
flux-general-enのみです。 多言語 Flux 対応は製品機能ですが、現時点ではこの SDK のサーフェスに反映されていないものとして扱ってください。 sendFinalizeではなくsendCloseStreamで閉じてください。 Finalize は v1 のパターンです。ping()は Node 専用です。 ブラウザーの WS ping フレームはユーザーから利用できないため、src/CustomClient.tsはブラウザーで例外をスローします。createConnection()は遅延実行されます。 ハンドラーを登録した後にconnect()を呼び出してください。- この例ではアクセス権と利用可否について明示的に注意喚起しています。 400 エラーは、ソケットコードの問題ではなく、アカウントまたはエンドポイントがまだ有効化されていないことを示す場合があります。
- コンテナー化された音声では
encodingを省略してください。 生の PCM / Opus ストリームでは指定したままにしてください。
このリポジトリ内のサンプルファイル
examples/26-transcription-live-websocket-v2.tsexamples/27-deepgram-session-header.ts
中核となる製品スキル
言語をまたいで Deepgram 製品の知識(統合された API リファレンス、ドキュメント検索、用途別の実行可能なレシピ、サードパーティ統合例、MCP のセットアップ)を利用するには、中核スキルをインストールしてください:
npx skills add deepgram/skills
この SDK には各言語に適したコードスキルが含まれています。一方、deepgram/skills には言語をまたいで利用できる製品知識が含まれています(api、docs、recipes、examples、starters、setup-mcp を参照)。
コメント
Markdown 対応