news 2026/9/15 14:54:57

speech-to-speech 如何用 Parakeet TDT 开启实时流式转录?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
speech-to-speech 如何用 Parakeet TDT 开启实时流式转录?

speech-to-speech 如何用 Parakeet TDT 开启实时流式转录?

【免费下载链接】speech-to-speechBuild voice agents with open-source models项目地址: https://gitcode.com/GitHub_Trending/sp/speech-to-speech

speech-to-speech 是一条 VAD -> STT -> LLM -> TTS 的实时语音管线,其中 Parakeet TDT 是默认的本地 STT 后端,支持 25 种欧洲语言,并能在用户说话过程中持续输出逐句的部分转录(live transcription),而不必等到整句说完。本文的目标很明确:安装项目、启动一个以 Parakeet TDT 做 STT 的 Realtime 服务,并让实时流式转录按你指定的节奏更新。

前提条件来自 README:

  • Python 3.10+;
  • Parakeet TDT 后端按平台自动选择:macOS(MPS)走 MLX,加载mlx-community/parakeet-tdt-0.6b-v3;CUDA / CPU 走 nano-parakeet(纯 PyTorch),加载nvidia/parakeet-tdt-0.6b-v3,两者都包含在默认安装里;
  • 默认 LLM 走 OpenAI Responses API,需要先有一个可用的 API Key(或改指其他 OpenAI 兼容端点,见下文)。

安装

pip install speech-to-speech

默认安装已覆盖标准 Realtime 路径:Parakeet TDT(STT)、OpenAI 兼容 API(LLM)、Qwen3-TTS(TTS)以及 local audio 和 realtime server 两种模式。macOS 与非 macOS 的依赖会通过pyproject.toml里的平台标记自动解析,不需要单独安装 Parakeet 相关组件。

启动服务并开启实时流式转录

先在环境变量里备好 LLM 的 Key,然后启动服务:

export OPENAI_API_KEY=... speech-to-speech serve --stt parakeet-tdt --enable_live_transcription

各参数的作用与取值依据 Parakeet TDT 参数类:

  • --stt parakeet-tdt:选择 Parakeet TDT 作为 STT。这本来就是serve的默认选择,README 给出的完整默认等价命令中 STT 项就是--stt parakeet-tdt
  • --enable_live_transcription:用户说话时持续显示/输出部分转录,帮助文本注明它"works with parakeet-tdt",默认值即为true——显式写出是为了确认配置,也方便按下一节调整节奏;
  • 设备与精度:--parakeet_tdt_deviceauto/cuda/mps/cpu,默认auto(macOS 用 MPS,否则 CUDA 可用则用 CUDA,否则回退 CPU);--parakeet_tdt_compute_typefloat16(默认)或float32。不指定模型名时按设备选默认模型,也可以用--parakeet_tdt_model_name显式指定。

如果想控制部分转录的更新频率,按 STT 文档 的示例把刷新间隔从默认 0.5 秒调成 0.25 秒:

speech-to-speech serve --stt parakeet-tdt \ --enable_live_transcription \ --live_transcription_update_interval 0.25

--live_transcription_update_interval的单位是秒,默认 0.5。还有一个相关开关--live_transcription_min_silence_ms(默认 500 ms),它定义开启 live transcription 时判定"停止说话"所需的最短静音时长。

服务启动后监听ws://localhost:8765/v1/realtime,默认绑定127.0.0.1;要对外暴露需显式传--host 0.0.0.0

没有 OPENAI_API_KEY 时怎么连 LLM

STT 本地运行不依赖远程服务,但管线默认 LLM 走远程 API。文档给出的替代连法都可以搭配--stt parakeet-tdt使用,例如指向 HF Inference Providers:

speech-to-speech serve \ --stt parakeet-tdt \ --llm_backend responses-api \ --tts qwen3 \ --model_name "Qwen/Qwen3.5-9B:together" \ --responses_api_base_url "https://router.huggingface.co/v1" \ --responses_api_api_key "$HF_TOKEN" \ --responses_api_stream \ --enable_live_transcription

也可以指到本机 llama.cpp / vLLM 服务器,或使用 Apple Silicon 上的--llm_backend mlx-lm,具体组合见 README 的 LLM Backends 一节。

验证转录是否真的在流式输出

三条由文档给出的验证路径,由轻到重:

  1. 连通性冒烟测试(demo 文档):

    websocat ws://localhost:8765/v1/realtime # -> you should get a session.created event back immediately

    连接后立即收到session.created事件,说明服务在监听且协议握手正常。这一步只验证链路,不验证转录内容。

  2. 直接对话:在第二个终端运行打包好的麦克风/扬声器客户端:

    speech-to-speech talk --url ws://127.0.0.1:8765/v1/realtime

    或者一条命令把服务和客户端合在一起跑:speech-to-speech local。说话时,服务终端会逐行刷出部分转录——Parakeet handler 在终端上以Live: ...前缀渲染固定部分与正在生成的活动部分;一句说完后,最终文本以USER: <文本>打印,并附Language: <语言代码>

  3. 客户端侧事件:Realtime 协议的下行事件集中包含 streaming transcription——Realtime API 文档 的事件矩阵把"streaming transcription"列为服务端向客户端推送的事件之一,官方 OpenAI SDK 的realtime.connect()客户端(见 README 的 Python 示例)即可逐事件接收。

语言选择与已知限制

  • 固定语言:用--parakeet_tdt_language指定目标语言,例如德语:

    speech-to-speech serve --stt parakeet-tdt --parakeet_tdt_language de
  • 自动检测:不指定语言时,模型逐句自动检测。检测逻辑在 handler 源码 中有明确边界:过短语句(少于 20 个字符)不做语言判定,且检测结果若不在支持列表内会沿用上一句的语言,避免误判。

  • 支持范围:Parakeet TDT v3 只覆盖 25 种欧洲语言(endefresitptnlplruukcsskhurobghrslsrdanosvfietlvlt)。需要中文、日语、韩语等更宽覆盖时,STT 文档 列出的是whisperfaster-whisper等后端,或走 OpenAI 兼容/v1/audio/transcriptions端点,这已超出本文的 Parakeet 场景。

  • CUDA 回退:显式要求--parakeet_tdt_device cuda但环境里没有可用 CUDA 时,handler 会打印告警并回退到 CPU。

  • 离线运行:先把目标配置在线跑一遍让模型与管线资源缓存到本地,之后可以用HF_HUB_OFFLINE=1启动服务防止访问 Hugging Face Hub,见 README 的 Offline Operation 一节。

服务跑起来、talk里说话能在终端看到Live:前缀的部分转录逐段刷新、说完后收到USER:最终文本,就说明 Parakeet TDT 的实时流式转录已经按预期工作。

【免费下载链接】speech-to-speechBuild voice agents with open-source models项目地址: https://gitcode.com/GitHub_Trending/sp/speech-to-speech

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 14:52:59

机器学习新闻标题分类系统:从TF-IDF到多模型对比调优

简介&#xff1a;面向本科毕业设计或课程设计场景&#xff0c;这份压缩包提供一套基于机器学习的新闻标题分类系统完整实现。项目涵盖中文文本预处理、特征工程、模型训练与评估&#xff0c;并配套基于Flask的Web展示与交互界面&#xff0c;适合人工智能、机器学习方向的学生作…

作者头像 李华
网站建设 2026/9/15 14:52:36

Python应用打包安卓APK:Kivy+Buildozer实战指南

简介&#xff1a;这套面向Android开发者的Python转APK打包工具源码&#xff0c;基于python-for-android框架&#xff0c;可将Python程序编译为独立安卓应用&#xff0c;适用于Kivy跨平台项目及其他Python移动端改造场景。资源共588个文件&#xff0c;压缩包仅1.87MB&#xff0c…

作者头像 李华
网站建设 2026/9/15 14:51:58

基于Artplayer的弹幕播放器UI重构实战解析

简介&#xff1a;这是一款基于Artplayer内核开发的多功能弹幕播放器&#xff0c;专为追求互动观影体验的站主与前端开发者设计。全新UI在视觉布局与操作逻辑上做了优化&#xff0c;集成了弹幕收发、画质切换、弹幕样式自定义等常用功能&#xff0c;同时以PHP作为后端语言&#…

作者头像 李华