安爸-超级家庭

个人音频转录与交互神器

安爸 发布于

项目简介

Speakr 是一款个人自托管的网络应用程序,专为转录音频记录(如会议)、生成简洁的摘要和标题,并通过聊天界面与内容互动而设计。您可以将所有会议记录和见解安全地保存在自己的服务器上。

功能

  • 音频上传: 通过拖放或文件选择上传音频文件(MP3、WAV、M4A等,具体取决于您的转录端点)。
  • 浏览器录音: 在“新录音”屏幕上直接从浏览器录制音频(需要HTTPS或HTTP的浏览器配置 – 参见部署指南)。
  • 转录: 在标准OpenAI兼容API或更高级的ASR网络服务之间选择。
  • 说话人分离: (仅限ASR/WhisperX)自动检测并分离转录中的不同说话人。
  • 直观的说话人标记: 新的、更直观的界面用于识别和标记说话人。
  • AI摘要与标题生成: 使用可配置的LLM生成简洁的标题和摘要。
  • 互动聊天: 使用AI模型提问并与转录内容互动。
  • 元数据编辑: 编辑标题、参与者、会议日期、摘要和笔记。
  • 用户管理: 安全的用户注册和登录系统,带有管理用户的管理面板。
  • 自定义: 用户可以设置自己的语言偏好、自定义摘要提示和专业上下文,以改进AI结果。

安装说明

详细部署说明,请参阅部署指南

推荐的方法是使用预构建的Docker镜像,这种方法快速且简单。

简单设置(预构建Docker镜像)

此方法无需克隆此仓库。您只需安装Docker。

  1. 创建docker-compose.yml文件:创建一个名为docker-compose.yml的新文件,并将以下内容粘贴到其中:
    services:   app:     image: learnedmachine/speakr:latest     container_name: speakr     restart: unless-stopped     ports:       - "8899:8899"     env_file:       - .env     volumes:       - ./uploads:/data/uploads       - ./instance:/data/instance
  2. 创建配置(.env)文件:您的选择取决于您希望使用的转录方法。有关每个服务必须实现的端点的详细信息,请参阅上面的API端点要求部分。创建一个名为.env的新文件,并将以下模板之一粘贴到其中。
    • 选项A:标准Whisper API方法使用/audio/transcriptions端点。这是最简单的方法,适用于OpenAI、OpenRouter、本地API和其他实现OpenAI Whisper API格式的提供商。
      # --- 文本生成模型(使用/chat/completions端点) --- TEXT_MODEL_BASE_URL=https://openrouter.ai/api/v1 TEXT_MODEL_API_KEY=your_openrouter_api_key TEXT_MODEL_NAME=openai/gpt-4o-mini # --- 转录服务(使用/audio/transcriptions端点) --- TRANSCRIPTION_BASE_URL=https://api.openai.com/v1 TRANSCRIPTION_API_KEY=your_openai_api_key WHISPER_MODEL=whisper-1 # --- 应用程序设置 --- ALLOW_REGISTRATION=false SUMMARY_MAX_TOKENS=8000 CHAT_MAX_TOKENS=5000 # --- 管理员用户(首次运行时创建) --- ADMIN_USERNAME=admin ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD=changeme # --- Docker设置(很少需要更改) --- SQLALCHEMY_DATABASE_URI=sqlite:////data/instance/transcriptions.db UPLOAD_FOLDER=/data/uploads
      现在,编辑.env文件,填入您的API密钥和设置。
    • 选项B:ASR网络服务方法(用于说话人分离)使用/asr端点。此方法需要单独的ASR网络服务容器,但支持说话人识别。已测试与onerahmet/openai-whisper-asr-webservice镜像兼容。有关如何运行ASR服务的说明,请参阅部署指南。
      # --- 文本生成模型(使用/chat/completions端点) --- TEXT_MODEL_BASE_URL=https://openrouter.ai/api/v1 TEXT_MODEL_API_KEY=your_openrouter_api_key TEXT_MODEL_NAME=openai/gpt-4o-mini # --- 转录服务(使用/asr端点) --- USE_ASR_ENDPOINT=true ASR_BASE_URL=http://your_asr_host:9000  # 您运行的ASR网络服务的URL ASR_DIARIZE=true ASR_MIN_SPEAKERS=1 ASR_MAX_SPEAKERS=5 # --- 应用程序设置 --- ALLOW_REGISTRATION=false SUMMARY_MAX_TOKENS=8000 CHAT_MAX_TOKENS=5000 # --- 管理员用户(首次运行时创建) --- ADMIN_USERNAME=admin ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD=changeme # --- Docker设置(很少需要更改) --- SQLALCHEMY_DATABASE_URI=sqlite:////data/instance/transcriptions.db UPLOAD_FOLDER=/data/uploads
      现在,编辑.env文件,填入您的ASR服务URL和其他设置。
  3. 启动应用程序:在您的终端中,进入包含docker-compose.yml.env文件的目录,运行:
    docker compose up -d  

高级设置(从源代码构建)

如果您想修改代码或自行构建Docker镜像,请先克隆仓库。

  • 克隆仓库:
    git clone https://github.com/murtaza-nasir/speakr.git cd speakr

创建docker-compose.yml.env文件:从仓库中复制示例文件。

cp docker-compose.example.yml docker-compose.yml # 标准API cp env.whisper.example .env # 或ASR网络服务 cp env.asr.example .env

编辑.env文件,填入您的设置。

  • 构建并启动:
    docker compose up -d --build  

推荐的ASR网络服务设置

说话人分离仅适用于ASR方法,并需要whisperx引擎。 以下是运行ASR服务本身的docker-compose.yml示例。您需要_额外_运行此容器与Speakr应用容器。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line services:   whisper-asr-webservice:     image: onerahmet/openai-whisper-asr-webservice:latest-gpu     container_name: whisper-asr-webservice     ports:       - "9000:9000"     environment:       - ASR_MODEL=distil-large-v3 # 或large-v3, medium       - ASR_COMPUTE_TYPE=float16     # 或int8, float32       - ASR_ENGINE=whisperx        # 说话人分离必需       - HF_TOKEN=your_hugging_face_token # 可选     deploy:       resources:         reservations:           devices:             - driver: nvidia               capabilities: [gpu]               device_ids: ["0"]     restart: unless-stopped

关于说话人分离准确性的说明: 为了获得最佳结果,通常将说话人数量设置为比实际数量略高(例如多1-2个)。您可以在说话人识别模态中稍后合并说话人。

Speakr已测试与推荐的onerahmet/openai-whisper-asr-webservice镜像兼容。其他ASR网络服务可能可用但未经测试。

ASR设置的重要提示: 说话人分离需要Hugging Face令牌并接受受保护模型(pyannote)的条款。如果遇到问题,请使用docker logs whisper-asr-webservice检查ASR容器日志以进行故障排除。

完整的ASR设置说明、模型配置、故障排除和日志分析,请参阅部署指南

使用指南

  1. 注册/登录: 访问http://localhost:8899。管理员用户首次启动时从.env文件中的ADMIN_*变量创建。
  2. 设置偏好(推荐): 转到您的账户页面。在这里您可以:
    • 设置您偏好的转录和输出语言。
    • 定义自定义摘要提示以根据您的需求定制摘要。
    • 添加您的姓名、职位和公司,为AI聊天互动提供更多上下文。
    • 查看和管理保存的说话人。
  3. 上传或录制:
    • 上传: 转到新录音或将音频文件拖放到页面上。
    • 录制: 在“新录音”屏幕上使用浏览器录音功能直接从麦克风录制(需要HTTPS或浏览器配置 – 参见浏览器录音设置)。
    • 上传和处理状态将显示在弹出窗口中。
  4. 查看与互动:
    • 图库列出您的录音。点击一个以查看其详细信息。
    • 收听内置播放器的音频。
    • 阅读转录和AI生成的摘要。
    • 编辑标题、参与者和其他元数据。
    • 与转录聊天: 使用聊天面板提问关于录音的问题。
  5. 说话人分离工作流程:
    • 要启用说话人分离,您必须使用ASR端点方法并在.env文件中设置ASR_DIARIZE=true
    • 当使用此选项处理录音时,说话人将自动检测并分配通用标签(例如SPEAKER 00SPEAKER 01)。
    • 处理后,点击转录页面上的识别说话人按钮。
    • 在说话人识别模态中,您可以手动为每个说话人分配名称。
    • 或者,使用自动识别按钮让AI模型尝试根据对话上下文识别和命名说话人。
    • 保存的说话人将在未来会话中建议自动完成。
    • 如果需要,您还可以使用重新处理按钮以不同的说话人分离设置重新转录音频。

项目地址

https://github.com/murtaza-nasir/speakr/blob/master/README.md

扫码加入技术交流群,备注「开发语言-城市-昵称

(文:GitHubStore)

个人音频转录与交互神器最先出现在每时AI


扫描二维码,在手机上阅读