LinTO-STT-Kaldi 是一个基于 https://github.com/kaldi-asr/kaldi 训练模型的自动语音识别(ASR)API。该镜像可作为独立转录服务部署,也可集成到微服务架构中(通过消息代理连接器),支持离线转录和实时转录两种模式。可通过 LinTO Studio 在浏览器中直接试用该服务。
需将模型文件夹下载并解压至 Docker 容器可访问的目录。支持两种模型类型:
方式一:本地构建
bashgit clone https://github.com/linto-ai/linto-stt.git cd linto-stt docker build . -f kaldi/Dockerfile -t linto-stt-kaldi:latest
方式二:从 Docker Hub 拉取
bashdocker pull lintoai/linto-stt-kaldi
AM_PATH 和 LM_PATH 目录MODEL_PATH 目录创建 .env 文件(可参考 https://github.com/linto-ai/linto-stt/blob/master/kaldi/.envdefault%EF%BC%89%EF%BC%8C%E9%85%8D%E7%BD%AE%E5%85%B3%E9%94%AE%E5%8F%82%E6%95%B0%E3%80%82%E6%A0%B8%E5%BF%83%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E%E8%A7%81 配置参数说明 章节。
模式一:HTTP 服务模式
以 HTTP 接口提供转录服务,支持文件上传和流式转录。
启动命令:
bashdocker run --rm \ -p 8080:80 \ # 宿主端口:容器端口 -v /path/to/am:/opt/AM \ # 声学模型挂载(LinTO模型) -v /path/to/lm:/opt/LM \ # 语言模型挂载(LinTO模型) # -v /path/to/vosk/model:/opt/model \ # Vosk模型挂载(替换上述两行) -v /path/to/recasepunc:/opt/PUNCT \ # 标点模型(可选) --env-file .env \ linto-stt-kaldi:latest
docker-compose 示例:
yamlversion: '3' services: linto-stt: image: linto-stt-kaldi:latest ports: - "8080:80" volumes: - /host/am:/opt/AM - /host/lm:/opt/LM - /host/recasepunc:/opt/PUNCT environment: - SERVICE_MODE=http - MODEL_TYPE=lin - ENABLE_STREAMING=true - CONCURRENCY=4 - PUNCTUATION_MODEL=/opt/PUNCT restart: unless-stopped
模式二:任务队列模式(微服务)
通过消息代理接收转录任务,适用于微服务架构。
启动命令:
bashdocker run --rm \ -v /path/to/am:/opt/AM \ -v /path/to/lm:/opt/LM \ -v /path/to/shared/audio:/opt/audio \ # 共享音频文件夹 --env-file .env \ linto-stt-kaldi:latest
模式三:WebSocket 流式模式
专用流式转录服务,仅提供 WebSocket 接口。
启动命令:
bashdocker run --rm \ -p 8080:80 \ -v /path/to/model:/opt/model \ # 模型挂载(LinTO或Vosk) -v /path/to/recasepunc:/opt/PUNCT \ # 标点模型(可选) --env SERVICE_MODE=websocket \ --env MODEL_TYPE=vosk \ --env STREAMING_PORT=80 \ linto-stt-kaldi:latest
| 参数名 | 描述 | 示例值 |
|---|---|---|
SERVICE_MODE | 服务模式:http(HTTP接口)、task(任务队列)、websocket(流式) | http |
MODEL_TYPE | 模型类型:lin(LinTO模型)、vosk(Vosk模型) | vosk |
ENABLE_STREAMING | HTTP模式下是否启用 /streaming WebSocket 接口 | true |
SERVICE_NAME | 任务模式下的队列名称 | my-stt-task-queue |
SERVICE_BROKER | 任务模式下的消息代理URL | redis://broker:6379 |
BROKER_PASS | 消息代理密码 | my-broker-password |
STREAMING_PORT | WebSocket模式下的监听端口 | 80 |
CONCURRENCY | 最大并行请求数 | 4 |
PUNCTUATION_MODEL | recasepunc标点模型路径(容器内路径) | /opt/PUNCT/fr.24000 |
健康检查:/healthcheck
text/plain,返回 1 表示服务正常文本转录:/transcribe
Content-Type: multipart/form-datafile(16bit 16KHz WAV 音频文件)text/plain:纯文本转录结果application/json:带元数据的 JSON,格式如下:
json{ "text": "这是转录文本", "words": [ {"word": "这是", "start": 0.123, "end": 0.456, "conf": 0.92}, {"word": "转录文本", "start": 0.500, "end": 0.890, "conf": 0.88} ], "confidence-score": 0.90 }
流式转录:/streaming(需 ENABLE_STREAMING=true)
{"config": {"sample_rate": 16000, "language": "zh"}}(language 可选){"eof": 1}{"partial": "这是中间"} 或最终结果 {"text": "这是最终转录文本"}eof接口文档:/docs
请求参数
任务队列接收的请求需包含以下参数:
file_path:共享文件夹内的音频文件路径(完整路径为 /opt/audio/{file_path})with_metadata:是否返回元数据(时间戳、置信度),true/false响应格式
成功转录后返回 JSON:
json{ "text": "这是转录文本", "words": [ {"word": "这是", "start": 0.123, "end": 0.456, "conf": 0.92}, ... ], "confidence-score": 0.90 }
bash# 测试转录接口(返回 JSON) curl -X POST "http://localhost:8080/transcribe" \ -H "accept: application/json" \ -H "Content-Type: multipart/form-data" \ -F "file=@test_audio.wav;type=audio/x-wav" # 测试健康检查 curl "http://localhost:8080/healthcheck" # 返回 "1"
本项目基于 AGPLv3 许可证开发(详见 LICENSE 文件)。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务