分类: 开源分享

专注分享优质开源项目、技术资源与开发工具,助力开发者高效学习、协作与创新,打造专业的开源技术分享平台

  • RealtimeSTT 优秀的实时语音转文本Python库

    RealtimeSTT 优秀的实时语音转文本Python库

    RealtimeSTT 是一个易用、低延迟的实时语音转文本(Speech-to-Text, STT)Python 库,专为需要实时语音转录的应用场景设计,核心聚焦于麦克风音频输入的实时识别与转录,适用于语音助手、实时字幕、语音控制等场景。

    核心特性

    1. 语音活动检测(VAD)
      • 结合 WebRTCVAD 做初始语音检测,SileroVAD 做高精度验证,自动识别说话开始 / 结束;
      • 支持自定义静音阈值、最小录音时长等参数,适配不同场景的语音检测需求。
    2. 实时转录能力
      • 基于 Faster-Whisper(GPU 加速版 Whisper)实现低延迟语音转文本,支持实时流式转录;
      • 可配置实时转录模型、处理间隔、波束搜索大小等参数,平衡速度与精度。
    3. 唤醒词激活
      • 集成 Porcupine 或 OpenWakeWord 实现唤醒词检测,可触发后续转录逻辑;
      • 支持自定义唤醒词模型训练与加载(参考 OpenWakeWord 相关文档)。
    4. 客户端 / 服务端架构
      • 提供 Server 模块,支持 WebSocket 接口的客户端 – 服务端通信,可分离音频采集与转录计算;
      • 内置 CLI 工具(stt-server 启动服务、stt 启动客户端),也支持浏览器客户端(基于 WebSocket 的前端页面)。
    5. 跨平台与扩展能力
      • 支持 Windows/Linux/macOS,提供 GPU(CUDA)加速支持;
      • 可结合 RealtimeTTS(同作者的文本转语音库)构建完整的语音交互闭环。

    技术栈

    • 语音检测:WebRTCVAD、SileroVAD;
    • 语音转录:Faster-Whisper(基于 OpenAI Whisper,支持 GPU 加速);
    • 唤醒词:Porcupine、OpenWakeWord;
    • 网络通信:WebSockets(服务端 – 客户端交互);
    • 音频处理:PyAudio、soundfile、scipy 等。

    安装与使用

    基础安装

    1. 先安装系统依赖(如 FFmpeg,不同系统参考仓库文档);
    2. 安装 Python 包:
      bash
      运行
      pip install RealtimeSTT
      # 或 GPU 版本(需提前配置 CUDA 环境)
      pip install -r requirements-gpu.txt
      

    极简示例(实时打印语音转录结果)

    python
    运行
    from RealtimeSTT import AudioToTextRecorder
    
    def process_text(text):
        print(text)
    
    if __name__ == '__main__':
        print("Wait until it says 'speak now'")
        recorder = AudioToTextRecorder()
        while True:
            recorder.text(process_text)
    

    服务端 / 客户端使用

    • 启动服务:stt-server(可配置模型、端口、GPU 等参数);
    • 启动 CLI 客户端:stt
    • 浏览器客户端:访问 Server 模块的 index.html,通过 WebSocket 连接服务端实现网页端语音转录。

    仓库结构

    plaintext
    RealtimeSTT/
    ├── RealtimeSTT/          # 核心库代码
    ├── RealtimeSTT_server/   # 服务端/客户端实现(WebSocket、CLI 工具)
    ├── example_browserclient/# 浏览器客户端示例(HTML/JS)
    ├── example_app/          # 完整应用示例(如 OpenAI 语音交互界面)
    ├── tests/                # 测试脚本(基础功能、唤醒词、实时转录等)
    ├── requirements.txt      # 基础依赖
    ├── requirements-gpu.txt  # GPU 加速依赖
    ├── setup.py              # 包构建配置(支持 CLI 入口)
    └── Dockerfile/docker-compose.yml # Docker 部署支持(含 GPU 配置)
    

    维护状态与许可

    • 项目为社区驱动维护:原作者因时间限制不再主动开发新功能,但会合并社区高质量 PR;
    • 许可协议:MIT 许可证(自由使用、修改、分发);
    • 贡献:欢迎提交 Issue/PR,仓库文档提供了贡献指引。

    扩展场景

    • 语音助手(结合 LLM 实现对话);
    • 实时字幕 / 语音输入(如自动打字、会议转录);
    • 多语言实时翻译(示例脚本含 OpenAI 翻译集成);
    • 跨设备语音转录(服务端部署 GPU 算力,客户端轻量采集音频)。
    如果需要更细节的使用(如 GPU 配置、唤醒词训练、Docker 部署),可参考仓库内的 README.md、RealtimeSTT_server/README.md 及测试脚本。
  • Zerox OCR 简化复杂文档的 AI 可读化

    Zerox OCR 简化复杂文档的 AI 可读化

    Zerox 是一个专注于文档 OCR(光学字符识别)的工具库,核心目标是为 AI 数据摄入提供简单、高效的文档转 Markdown 能力,尤其适配包含复杂布局(表格、图表、不规则排版)的文档场景 —— 借助视觉模型处理这类视觉化文档更具优势。

    核心能力与工作逻辑

    Zerox 的核心流程:
    1. 传入目标文件(支持 PDF、DOCX、图片等格式);
    2. 将文件转换为一系列图片;
    3. 调用视觉模型(如 OpenAI GPT 系列)解析图片内容,并要求返回 Markdown 格式结果;
    4. 聚合所有图片的解析结果,最终输出完整的 Markdown 文本。

    核心特性

    多语言支持

    同时提供 Node.js 和 Python 两个版本的 SDK,覆盖不同技术栈需求:
    • Node.js 版本:发布在 npm(包名 zerox);
    • Python 版本:发布在 PyPI(包名 py-zerox)。

    多服务商兼容

    支持主流的 AI 服务商视觉模型,包括:
    • OpenAI / Azure OpenAI;
    • AWS Bedrock;
    • Google Gemini(Python 版额外支持 Vertex AI);
    • Anthropic(Node 版支持)。

    功能对比(Node.js vs Python)

    表格
    功能项 Node.js Python
    PDF / 图片处理 ✓(依赖 graphicsmagick) ✓(依赖 poppler)
    自定义系统提示词 ✓(custom_system_prompt)
    数据提取(schema)
    按页提取 ✓(extractPerPage)
    格式保留 ✓(maintainFormat) ✓(maintain_format)
    并发处理 ✓(concurrency) ✓(concurrency)
    页面选择 ✓(pagesToConvertAsImages) ✓(select_pages)
    方向校正 / 边缘裁剪
    错误处理模式 ✓(errorMode)
    临时目录管理 ✓(tempDir) ✓(temp_dir)

    仓库结构

    plaintext
    zerox/
    ├── .github/          # GitHub 配置(如 workflow)
    ├── examples/         # 示例代码(node/ 子目录对应 Node 示例)
    ├── py_zerox/         # Python 版核心代码(pyzerox/ 子包)
    │   ├── scripts/      # Python 脚本
    │   └── tests/        # Python 测试用例
    ├── node-zerox/       # Node.js 版核心代码
    │   ├── src/          # TS 源码(含模型适配、核心逻辑)
    │   ├── scripts/      # Node 脚本
    │   └── tests/        # Node 测试用例
    ├── shared/           # 跨语言共享资源(如系统提示词、测试数据)
    ├── assets/           # 静态资源(示例文档、图片)
    ├── 配置文件           # package.json/tsconfig.json(Node)、pyproject.toml/setup.py(Python)
    └── 构建/规范配置      # Makefile、pre-commit、jest.config.js 等
    

    快速使用示例

    Node.js 版

    typescript
    运行
    import { zerox } from "zerox";
    import path from "path";
    
    // 本地文件示例
    const result = await zerox({
      filePath: path.resolve(__dirname, "./cs101.pdf"),
      credentials: {
        apiKey: process.env.OPENAI_API_KEY, // 或 Bedrock/Azure 等凭证
      },
    });
    

    环境依赖

    • Node.js 版:需安装 graphicsmagick + ghostscript(Linux 可通过 apt-get install graphicsmagick 安装);
    • Python 版:需安装 poppler(PDF 转图片依赖)。

    其他补充

    安装

     

    • 在系统上安装poppler,路径变量里应该有它。请参阅pdf2image文档,了解按平台划分的说明。
    • 安装py-zerox:
    pip install py-zerox

    该功能是一个异步API,通过视觉模型进行光学字符识别(OCR)以进行标记。它会处理PDF文件并将其转换为markdown格式。使用该 API 前,务必设置模型和模型提供者的环境变量。pyzerox.zerox

    请参阅LiteLLM文档以设置环境并传递正确的模型名称。