开源项目实现本地转录、话者识别和 LLM 摘要功能,无需依赖云 API,适合对隐私和成本敏感的场景。
由 https://transcription.stream 创建,特别感谢 MahmoudAshraf97 及其在 whisper-diarization 上的工作,也感谢 jmorganca 带来的 Ollama,以及它令人惊叹的易用性。
Transcription Stream 是一套开箱即用、可自行托管的说话人分离服务,完全离线运行。默认包含以下功能:
Web 界面和 SSH 文件投放区让它既简单易用,也方便集成到你的工作流中。Ollama 提供了一套强大的工具集,能力上限只取决于你的 prompt 技巧,可对转录内容执行各种复杂操作。Meilisearch 则提供了快得离谱的全文搜索能力。
你可以通过 Web 界面上传文件、收听音频、审阅内容并下载输出文件,也可以通过 SSH 将文件投放到 transcribe 或 diarize 中。文件处理完成后,输出内容会存放到以名称和日期命名的文件夹中。可以快速浏览 install 和 ts-web 的演示视频,以便更直观地了解其工作方式。
SSH 上传和转录结果
ts-gpu 说话人分离示例
prompt_text = f"""
Summarize the transcription below. Be sure to include pertinent information about the speakers, including name and anything else shared.
Provide the summary output in the following style
Speakers: names or identifiers of speaking parties
Topics: topics included in the transcription
Ideas: any ideas that may have been mentioned
Dates: dates mentioned and what they correspond to
Locations: any locations mentioned
Action Items: any action items
Summary: overall summary of the transcription
The transcription is as follows
{transcription_text}
"""
警告:最终生成的 ts-gpu 镜像约为 26GB,创建过程可能需要较长时间。
拉取所有 Docker 镜像并启动服务:
./start-nobuild.sh
如果你希望在本地构建镜像:
chmod +x install.sh;
./install.sh;
chmod +x run.sh;
./run.sh
用户名:transcriptionstream
密码:nomoresaastax
用法:将音频文件放入 transcribe 或 diarize。处理完成的文件会存储在 transcribed 中。
功能:音频文件上传与下载;带交互式链接的任务完成提醒;支持播放速度控制和转录文本高亮的 HTML5 Web 播放器;与时间同步的转录内容定位、高亮和滚动。
如需更改所使用的 prompt,请修改 /ts-gpu/ts-summarize.py。
警告:这是用于演示目的的示例代码。如果没有采取额外的安全措施,不应在生产环境中使用。
更新 .env 文件中的变量。
在 ts-gpu Dockerfile 中修改 transcriptionstream 用户的密码。
如果希望使用其他 endpoint,请在 .env 中更新 Ollama API endpoint 的 IP。
在 .env 中更新 ts-web 使用的 secret。
通过 .env 选择初始构建中包含哪些模型。
根据你的需求修改 ts-gpu/ts-summarize.py 中的 prompt 文本。如果你不想将其称为 summary,请更新 ts-web/templates/transcription.html。
12GB VRAM 可能不足以同时运行 whisper-diarization 和 Ollama Mistral。whisper-diarization 默认占用的 GPU 显存相对较少,但 Ollama 的 runner 会持续占用相当一部分 GPU 显存,导致说话人分离或转录偶尔因 CUDA 显存不足而失败。由于我无法在同一台主机上可靠地同时运行二者,因此将 whisper-diarization 和 WhisperX 的 batch size 从默认的 8 调整为 16,并使用一台 M 系列 Mac 运行 Ollama endpoint。
需要修复 ts-web 的一个问题:加载转录内容时,如果 summary.txt 文件不存在,控制台就会报错。ts-web 还有许多其他恼人的问题,不过目前功能可用。
需要为 ts-web 添加 Meilisearch 的搜索与控制界面。