Repository navigation
Conversation
Contributor
PR Reviewer Guide 🔍(Review updated until commit c26dfa7)Here are some key observations to aid the review process:
|
Add ElevenLabs Speech-to-Text (Scribe) as a batch ASR provider. ElevenLabs uses `POST /v1/speech-to-text` with multipart/form-data (`model_id` + `file`) and the `xi-api-key` header — not OpenAI's Bearer `/audio/transcriptions` protocol — so it gets a dedicated client (`asr/elevenlabs.rs`) modeled on the MiMo batch client rather than riding on WhisperBatchASR. `tag_audio_events=false` keeps bracketed non-speech events out of dictation transcripts. Wiring: - ActiveAsr::ElevenLabs + ActiveAsrProviderKind::ElevenLabs, dictation / QA / retranscribe transcribe arms, cancel arm, credential reader. - provider validation + model list (scribe_v1 / scribe_v2). - credentials "configured" check (api key + endpoint + model). - frontend preset, Overview label, en/zh-CN/zh-TW/ja/ko i18n. Verified the wire protocol end-to-end against the live ElevenLabs API. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
scribe_v1 is deprecated and is removed from the ElevenLabs API on 2026-07-09, so shipping it as the default would break shortly. scribe_v2 is the current recommended model (higher accuracy, 99 languages, ~40% cheaper, multi-language in one file). Update the Rust DEFAULT_MODEL, the frontend preset, and the validation/model-list fallback accordingly; keep scribe_v1 selectable in the model list for now. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
active_asr_provider_kind's test locked bailian/whisper/mimo/volcengine but not ElevenLabs, so a regression in is_elevenlabs_provider or its ordering in the dispatch chain would go uncaught. Add the assertion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Billmvp73
force-pushed
the
build/elevenlabs-macos
branch
from
July 13, 2026 07:32
8d157b5 to
48f7c81
Compare
Contributor
|
Persistent review updated to latest commit 48f7c81 |
Billmvp73
force-pushed
the
build/elevenlabs-macos
branch
from
July 13, 2026 07:37
48f7c81 to
e949d4a
Compare
Contributor
|
Persistent review updated to latest commit e949d4a |
Collaborator
|
开始审查 |
Contributor
|
Persistent review updated to latest commit c26dfa7 |
appergb
requested changes
Jul 14, 2026
appergb
left a comment
Collaborator
There was a problem hiding this comment.
独立审核发现一个需要先修复的正确性边界:src-tauri/src/asr/elevenlabs.rs 没有设置 timestamps_granularity=none。ElevenLabs 默认返回逐词时间戳/words,而客户端只消费顶层 text,同时把完整 JSON 限制为 1 MiB;长录音可能转写成功后仍被客户端以 response too large 拒绝。请关闭未使用的逐词时间戳并补响应上限回归测试。其余主流程、安全边界及 CI 审核通过。
Collaborator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
摘要
Fixes #795。
新增 ElevenLabs Scribe v2 批式语音转录供应商。ElevenLabs 使用
xi-api-key请求头和/v1/speech-to-textmultipart 协议,不能直接复用现有 Whisper-compatible client,因此本 PR 增加独立 client,并接入 OpenLess 已有的 ASR 生命周期。修复 / 新增 / 改进
asr/elevenlabs.rs:将 16 kHz mono PCM 编码为 WAV,并通过官方 multipart API 提交model_id、音频文件和tag_audio_events=false。https://api.elevenlabs.io/v1,默认模型为scribe_v2;支持用户自定义 endpoint/model。xi-api-key或音频。服务端错误只展示 HTTP 状态和本地白名单错误码,不回显不受信任的响应正文。兼容
测试计划
cargo test --manifest-path src-tauri/Cargo.tomlnpm run buildcargo check --manifest-path src-tauri/Cargo.tomlgit diff --check upstream/beta...HEAD证据路径:PR Checks。
AI 使用披露
本实现与 Issue/PR 文档整理使用了 Codex/AI 辅助;提交者已人工审阅代码,并在 macOS 上完成构建和真实语音全链路验证。
PR Type
Enhancement, Tests, Documentation
Description
New ElevenLabs Scribe batch ASR client
Full wiring: dictation, QA, retranscribe, cancel, validation
SSRF validation extracted to endpoint_security module
Per-provider credential scoping via optional provider parameter
Frontend preset, upload notice, and i18n for 5 languages
Unit tests for client, provider dispatch, and SSRF checks
Diagram Walkthrough
flowchart LR AudioBuffer --> ElevenLabsClient ElevenLabsClient --> EncodeWav[Encode WAV] EncodeWav --> MultipartForm[Multipart POST] MultipartForm --> SecCheck[SSRF Check & Redirect Block] SecCheck --> ElevenLabsAPI ElevenLabsAPI --> ParseResponse[Parse JSON] ParseResponse --> Transcript Transcript --> AppFile Walkthrough
15 files
New ElevenLabs Scribe ASR clientExport ElevenLabs moduleAdd provider-scoped credential read/writeAdd ElevenLabs provider validationIntegrate ElevenLabs ASR into coordinatorAdd ElevenLabs provider detection and QA startHandle ElevenLabs dictation sessionsHandle ElevenLabs QA transcriptionAdd ElevenLabs cancel supportShared SSRF validation moduleRegister endpoint_security moduleAdd per-provider credential methodsUpdate credential IPC for provider scopeAdd ElevenLabs preset, notice, per-provider fieldsAdd ElevenLabs ASR preset definition5 files
Add English i18n for ElevenLabsAdd Japanese i18n for ElevenLabsAdd Korean i18n for ElevenLabsAdd Simplified Chinese i18n for ElevenLabsAdd Traditional Chinese i18n for ElevenLabs