ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

litellm 语音交互落地指南:3 个端点跑通实时语音转写与语音合成

litellm 语音交互落地指南:3 个端点跑通实时语音转写与语音合成 litellm 语音交互落地指南3 个端点跑通实时语音转写与语音合成【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm本文以 litellm 网关为例演示如何用一个代理进程同时打通 litellm 语音转写、litellm 语音合成和全双工 realtime 语音会话三条链路。适合有编程基础、没接触过 litellm 的开发者照做装依赖、改配置、起服务最后用 3 个 HTTP/WebSocket 端点完成一次完整的听-想-说闭环。能力总览网关给你暴露的 3 条语音端点litellm 的 proxy 把各厂商的音频 API 统一成 OpenAI 格式你只需要记住 3 个入口端点定义见 litellm/proxy/proxy_server.py端点形态用途/v1/audio/speechHTTP POST语音合成TTS流式返回音频/v1/audio/transcriptionsHTTP POST (multipart)语音转写STTWhisper 类接口/v1/realtimeWebSocket全双工语音会话支持 OpenAI、Azure、Bedrock、Vertex AI、xAI 等厂商第三个端点还接受intenttranscription查询参数表示只开启转写模式、不触发回复适合纯实时语音转写场景说明见 litellm/realtime_api/README.md。所有请求都会经过代理的日志链路长这样里程碑 1注册语音模型一条配置起代理先确认依赖两条命令各装一类pip install litellm[proxy] # 代理服务本体 pip install pyaudio websockets # 本地麦克风采集与 WebSocket 客户端代理配置文件里给每个要用的语音能力起一个别名客户端之后只用别名。下面是三条链路各挂一个模型的写法仓库自带示例见 proxy_server_config.yamlmodel_list: - model_name: tts-voice # 语音合成调用时使用的别名 litellm_params: model: openai/tts-1 # 可换 elevenlabs、azure 等厂商 TTS api_key: os.environ/OPENAI_API_KEY - model_name: stt-whisper # 语音转写调用时使用的别名 litellm_params: model: openai/whisper-1 - model_name: realtime-voice # 全双工会话使用的别名 litellm_params: model: openai/gpt-realtime api_key: os.environ/OPENAI_API_KEY启动并指定代理密钥客户端后续用它做 Bearer 认证litellm --config proxy_server_config.yaml --port 4000 --master_key sk-1234预期结果http://localhost:4000可访问健康检查返回 200。到这里网关与各家音频 API 之间的适配层就搭好了。里程碑 2两条 HTTP 调用分别拿到语音和文字这一段解决应用开口说话和应用听懂用户两个最小问题。两条 curl 各测一个方向都指向本地网关不直连厂商。语音合成——合成一段中文存成 mp3 用播放器验证能出声curl http://localhost:4000/v1/audio/speech \ -H Authorization: Bearer sk-1234 \ -H Content-Type: application/json \ -d {model: tts-voice, input: litellm 网关已就绪, voice: alloy} \ --output reply.mp3 # 流式写盘文件即音频结果语音转写——把一段录音文件转成文字返回 JSON 文本curl http://localhost:4000/v1/audio/transcriptions \ -H Authorization: Bearer sk-1234 \ -F modelstt-whisper \ -F filesample.wav # 16kHz 单声道 WAV 最稳妥两个接口的参数与 OpenAI 官方文档一致也就是说你手里现成的 OpenAI 客户端代码改个 base_url 就能切过来。里程碑 3接上 /v1/realtime让 litellm 实时语音转写和语音合成同时发生HTTP 两条链路是一问一答的异步模式要做出自然对话得用 WebSocket 全双工端点音频流进去、文本和音频流同时出来。连接时通过 query 参数指定模型别名握手成功后第一个关键动作是发session.update把音频格式和断句策略告诉服务端url ws://localhost:4000/v1/realtime?modelrealtime-voice async with websockets.connect(url, additional_headersheaders) as ws: await ws.send(json.dumps({ type: session.update, session: { modalities: [text, audio], voice: alloy, input_audio_format: pcm16, # 输入: 16kHz 单声道 output_audio_format: pcm16, # 输出: 24kHz 单声道 turn_detection: { # 服务端 VAD 自动断句 type: server_vad, threshold: 0.5, silence_duration_ms: 500, }, }, })) # 之后: 持续推送麦克风 PCM 块, 监听 response.audio.delta 播放事件流按 OpenAI realtime 协议走response.text.delta出转写文本response.audio.delta出 base64 音频块。麦克风侧的完整采集、播放、错误处理参考 cookbook/nova_sonic_realtime.py文本驱动的 agent 形态可看 cookbook/livekit_agent_sdk/main.py。跑通后的预期现象说话停顿约半秒后终端开始打印对方的转写文本扬声器同步出声停止说话则无输出。3 个参数把端到端延迟压下来链路通了之后体感延迟主要靠下面三处调都在session.update或采集参数里块大小与采样率输入保持 16kHz、1024 样本/块约 64ms 一块。块越大延迟越高越小则网络包越多CHUNK_SIZE 1024是示例脚本的折中值。silence_duration_ms判停静音时长。500ms 偏稳250ms 左右响应更急但容易在说话间自然停顿处提前截断。max_response_output_tokens限制单轮回复长度示例取 1024。回复越长首包音频来得越晚对话类场景宁短勿长。另外两个容易踩的坑播放队列要设上限。示例脚本用asyncio.Queue(maxsize...)可用环境变量LITELLM_ASYNCIO_QUEUE_MAXSIZE调整队列无上限时弱网下内存会持续涨。断连要单独捕获websockets.exceptions.ConnectionClosed把它和网络超时区分开方便定位是网关重启还是对端主动断开。接上监控每次语音会话在后台留痕代理对三条端点一视同仁地记账管理后台的 Audit Logs / Request Logs 面板可以看到每次调用、鉴权和资源变更语音场景重点看三项每通 realtime 会话的 token 消耗与音频成本转写请求的文件大小与耗时分布合成请求是否命中缓存、失败率需要更深度的追踪如按会话聚合延迟分布把litellm_settings里的回调接到 Langfuse 等外部追踪面板即可配置方式见 cookbook/logging_observability/ 下的示例 notebook。下一步按 cookbook/nova_sonic_realtime.py 的完整参考实现核对每一步再结合 litellm/realtime_api/README.md 把 realtime 链路接进你自己的应用。【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表