文档集成

Rust · 0.1.0

音频转写

配置支持的提供方,并理解哪些数据会发往实例之外。

配置提供方

管理员可配置 OpenAI 或 Gemini 提供方,并选择转写提供方及模型。Rust API 为已认证用户提供 Transcribe。当前实现接受音频字节而非音频 URI,拒绝空音频及超过 25 MiB 的内容。提供方可能还有更严格的限制。

授权与范围

转写会把提交的音频发送给已配置的外部提供方。请确认你有权分享该录音,并了解提供方的数据政策和可能费用。提供方密钥应保存在有权管理的设置或部署密钥中,不要放进公开示例。这里记录的是音频转写能力,并不承诺自动标签、摘要或聊天功能。

分别保存提供方与转录设置

管理员进入「设置 → AI」,新增提供方,填写名称,选择 OPENAI 或 GEMINI,再输入提供方密钥。地址留空会使用内置服务地址;仅在信任自定义地址接收密钥和音频时才填写。先保存提供方,再到转录区域选择该提供方、模型并单独保存转录设置。语言与提示词是可选提示。保存提供方并不等于已选中它用于转录。

提交一段无敏感内容的测试录音

示例需要 Python 3、curl、名为 sample.wav 的短 WAV 文件,以及已完成配置的认证实例。protobuf JSON 将 bytes 编码为 base64;请求使用 audio.content、filename 和 contentType,URI 输入尚未实现。Python 只创建本地请求文件,curl 会把录音发给实例及其配置的外部提供方,可能产生费用。只能使用你有权传输的录音。

umask 077
python3 - <<'PYTHON'
import base64, json
from pathlib import Path
request = {"audio": {
    "content": base64.b64encode(Path("sample.wav").read_bytes()).decode(),
    "filename": "sample.wav",
    "contentType": "audio/wav"
}}
Path("transcription-request.json").write_text(json.dumps(request))
PYTHON
curl --fail-with-body "$MEMOS_URL/api/v1/ai:transcribe" \
  -H "Authorization: Bearer $MEMOS_TOKEN" \
  -H 'Content-Type: application/json' \
  --data-binary @transcription-request.json

检查文本与已知限制

成功响应的 text 字段是转录文本,不会自动创建笔记;保存前应检查并修正。临时请求文件中有可逆的 base64 音频,不再需要时请删除。“Transcription is not configured” 表示尚未保存有效的转录提供方选择。外层输入最多允许 25 MiB 解码音频;Gemini 在 WebM 转 WAV 等处理后还限制为 14 MiB,格式集合也更窄,可先用小型 audio/wav 或 audio/mp3 文件。MIME 不支持、提供方 HTTP 错误或响应不完整时,应修正输入或配置,不要反复提交同一录音。