openai.STTのuse_realtimeはstt.StreamAdapterの中でも効果があり...
# ask-ai
b
openai.STTのuse_realtimeはstt.StreamAdapterの中でも効果がありますか?
t
Thanks for reaching out, RikuKomiya. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
ご質問ありがとうございます。stt.StreamAdapter内での`openai.STT`の`use_realtime`についてお答えします。 結論:いいえ。`stt.StreamAdapter`の中では`use_realtime`は効果がありません。 理由: • `use_realtime=True`はOpenAIの低遅延リアルタイム音声認識(ストリーミング入力)を使うためのオプションです。 • しかし`StreamAdapter`はストリーミング入力をサポートしないSTTモデル(例:Whisper)のために設計されており、VADで音声を区切って完全な発話単位のチャンクをバッファしてから送信します。つまりストリーミングを使わずバッチ的に送る仕組みです。 • したがって`StreamAdapter`経由ではリアルタイムストリーミングがそもそも使われないため、`use_realtime`は無効になります。 必要であれば、目的に合わせて次のどちらが良いか教えてください: • リアルタイム(低遅延)逐次転写が必要 → ストリーミング対応のSTTモデル/プラグインを使う方法を案内します。 • 現行のVAD+StreamAdapterのままで良い → 最適な設定やバッファ/VADチューニングのアドバイスを出します。 Sources: OpenAI STT plugin guide | LiveKit docs | Speech-to-text (STT) models | LiveKit Docs
b
ストリーミング対応のSTTモデル/プラグインを使う方法を案内します。 これをお願い
t
了解しました。Deepgram を例に、ストリーミング対応の STT を LiveKit で導入する手順を具体的に案内します。必要に応じて AssemblyAI や Google など別プロバイダー版にも合わせますので、希望があれば教えてください。 1) 前提(確認) • どの言語を主に扱いますか?(例:日本語、英語、マルチ) • 使用言語と合わせて、実装はPythonとNode.jsどちらですか? 2) 必要な準備 • Deepgram の API キー(プラグイン利用時に必要) • LiveKit のプロジェクトとアプリケーションで音声トラックを受け取れる状態 3) Pythonでの基本実装(Deepgram, リアルタイム) • ライブラリから Deepgram の STT プラグインを読み込み、ストリームを作成します。 • 音声フレームを受け取り都度 `push_frame`(非同期ループ)で送信し、終了時に
end_input()
を呼びます。 例(簡略):
Copy code
from livekit.plugins import deepgram
# Deepgram STT をモデル指定で作成
stt = deepgram.STT(model="nova-3")  
stt_stream = stt.stream()

# 受信した音声フレームをストリーミングで送る(擬似コード)
async for frame in audio_stream:
    stt_stream.push_frame(frame)

# 終了時
await stt_stream.end_input()
4) Node.jsでの基本実装(Deepgram) • プラグインのコンストラクタでモデルを指定、`stream()` を取得して WebRTC の track からフレームを流します。 例(簡略):
Copy code
import * as deepgram from '@livekit/agents-plugin-deepgram';
const stt = new deepgram.STT({ model: "nova-3" });
const stream = stt.stream();

track.on("frame", (frame) => {
  stream.pushFrame(frame);
});

// ストリーム終了処理
stream.endInput();
5) 推奨設定と低遅延のポイント • フレーム長:20ms 推奨(WebRTC 標準) • モデル:低遅延を重視するなら Deepgram の nova 系などストリーミング対応モデル • 言語:固定言語なら明示的に指定(例 `deepgram/nova-3:ja`)、多言語は
:multi
• 音声品質:ネットワーク帯域とマイクのサンプリングが重要(48k/16k 等を確認) • エラー処理:接続切れや再接続ロジックを用意 6) VAD / StreamAdapter が不要な場合 • ストリーミングモデルを使うなら VAD+StreamAdapter は不要(逐次フレームで返答を受けられる) • 逆に Whisper 等ストリーミング非対応モデルと組む場合は VAD + StreamAdapter を使って発話区切りで送信する 7) 次に進めるために(お願い) • 言語(例:日本語)と実装言語(Python / Node.js)を教えてください。 • Deepgram で進めるか、他プロバイダー(AssemblyAI / Google / Azure など)にしますか? • 実装例のフルコード(WebRTC受信側やAgentSession統合)を希望するかも合わせて教えてください。 ご希望に合わせて具体的なサンプルコード(完全な async ハンドラや AgentSession 統合版)を作成します。どれで進めますか? Sources: Speech-to-text (STT) models | LiveKit Docs | examples/voice_agents | livekit/livekit_composite | DeepWiki | Deepgram STT plugin guide | LiveKit docs | Live Conversations with AI using ChatGPT and WebRTC