Horseflow 是一款自托管的即按即说听写工具,通过全局快捷键录音,使用 Whisper 进行本地转写,再通过 Ollama 运行本地 LLM 清理标点和修正口误,最后将结果粘贴到当前焦点应用中。

Stars

0

7 天增长

暂无数据

Fork 数

0

开放 Issue

0

开源协议

MIT

最近更新

2026-07-24

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

完全本地转录和文本清理,不依赖任何云端服务,保障用户隐私并支持离线使用。

适合谁使用

  • 关注隐私、不愿使用云端听写的用户
  • 希望自建可定制听写管线的开发者
  • 需要跨应用免手动输入的高级用户
  • 在 Linux 或 macOS 上寻求低延迟本地听写的人

典型使用场景

  • 向任何文本字段口述笔记、邮件或代码片段
  • 为无障碍或高效工作提供免手动输入方案
  • 在严格数据管控的环境中离线转录语音
  • 通过 Tailscale 等私有网络快速、私密地进行听写

项目优势

  • Whisper 和 Ollama 均本地运行,数据不会离开本机或私有网络
  • 全局快捷键中的空格键被拦截,不会误触发焦点应用中的输入
  • 同时支持 Linux(基于 evdev)和 macOS(原生事件监听)客户端,操作体验一致
  • 可通过 Tailscale 实现跨机器使用,且无需将 API 暴露到公网

使用前须知

  • 服务端需要 Linux 主机、Docker Compose 及约 11 GB 显存的 NVIDIA GPU
  • 没有内置认证机制,API 只能绑定到本地或受信任的私有网络
  • 仅支持 Ctrl+Space(Linux)和 Command+Space(macOS),macOS 需 15 及以上版本

README 快速开始

Horseflow

Horseflow is self-hosted push-to-talk dictation. It records while a global hotkey is held, transcribes locally with Whisper, cleans punctuation and false starts with a local LLM, then pastes the result into the focused application.

  • Local speech recognition with faster-whisper
  • Local cleanup through Ollama
  • Linux client: hold Ctrl+Space
  • macOS client: hold Command+Space
  • The hotkey's Space event is swallowed before the focused application sees it
  • No cloud API or account required

Architecture

keyboard hotkey -> local recording -> Horseflow API
                                      |-> Whisper large-v3
                                      `-> Ollama cleanup model
                                           -> clipboard -> synthetic paste

The server and clients may run on the same machine or communicate over a private network such as Tailscale.

Server

Requirements

  • Linux host with Docker Compose
  • NVIDIA GPU and NVIDIA Container Toolkit
  • Approximately 11 GB VRAM for Whisper large-v3 and an 8B/9B quantized LLM

Configure

cd deploy
cp .env.example .env
nvidia-smi --query-gpu=uuid,name --format=csv

Edit .env. Set:

  • HORSEFLOW_GPU to the selected GPU UUID
  • HORSEFLOW_BIND_ADDRESS to 127.0.0.1
  • model storage paths
  • custom vocabulary and ASR context

Start

docker compose up -d ollama
docker compose exec ollama ollama pull qwen3:8b
docker compose up -d --build api
curl http://127.0.0.1:8100/health

The API documentation is available at /docs.

Run the server and clients on different machines

Use Tailscale Serve to expose the localhost-bound API as a stable, tailnet-only HTTPS endpoint. Linux and macOS clients can use the same endpoint:

https://horseflow-server.example-tailnet.ts.net/dictate

Follow the complete cross-machine Tailscale setup. Do not bind Horseflow publicly or use Tailscale Funnel.

Linux client

The Linux client exclusively grabs physical keyboards through evdev, forwards normal input through a virtual keyboard, and swallows Ctrl+Space. It records through PipeWire and pastes through ydotool.

Requirements

  • Python 3.10+
  • pw-record
  • wl-copy
  • ydotool
  • notify-send
  • Permission to read /dev/input/event* and write /dev/uinput

On many distributions, the user must belong to the input and

项目描述

Self-hosted push-to-talk dictation with local Whisper and LLM cleanup

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

lopopolo
精选
lopopolo GitHub avatar

harness-engineering

Harness Engineering is a methodology for improving coding agent outputs by carefully crafting the environment around them—providing curated context, tools, and executable constraints that encode an organization’s nonfunctional requirements and cumulative lessons.

AI 与机器学习AI 智能体
2,390
slvDev
精选
slvDev GitHub avatar

esp32-ai

A 28.9 million parameter language model runs on an $8 ESP32-S3 microcontroller entirely on-device, generating simple stories at about 9.5 tokens per second.

AI 与机器学习大语言模型
1,960
littledivy
精选
littledivy GitHub avatar

mimic

mimic captures traffic from any iOS or web app and automatically generates a Python client library that lets you call the app's API like a regular library.

AI 与机器学习
1,482