Word Tracking & Voice Activated broken for CJK (Chinese/Japanese/Korean) text
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- swift
- Ambito
- audio-video-rtc, desktop
Direzione di ricerca
Apri SpeechRecognizer.swift e riproduci innanzitutto il comportamento segnalato di CJK Word Tracking e Voice Activated nell’app macOS tramite Xcode. Verifica che il breve testo CJK pronunciato non salti più alla fine e che lo scorrimento di Voice Activated continui successivamente; ricompila in Xcode per confermare la correzione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
根本原因(两处 Bug):
Bug 1 — isFuzzyMatch 前缀匹配无长度限制
中文文本没有空格,整段稿子被当作一个"词"。你刚说出前6个字,isFuzzyMatch 用前缀匹配判断"今天天气很好" 是 "今天天气很好……全文" 的前缀 → 返回 true → wordResult = 整段文字长度(26)→ 飞跳到末尾。
Bug 2 — isDone 锁死滚动计时器
跳到末尾后 isDone = true,计时器有 guard !isDone → Voice Activated 的计时器也同时被锁死,所以两种模式都不动。
代码修复(需要 Xcode 重编译):
修改 SpeechRecognizer.swift 两处:
// 修复1:isFuzzyMatch 加长度比例限制(防止短词匹配超长句)
// 原来:
if shorter >= 3 && (a.hasPrefix(b) || b.hasPrefix(a)) { return true }
// 改为:
if shorter >= 3 && max(a.count, b.count) <= shorter * 3
&& (a.hasPrefix(b) || b.hasPrefix(a)) { return true }
// 修复2:matchCharacters 里,中文跳过 wordLevelMatch
// 在 charResult 计算后加:
let hasCJK = sourceText.unicodeScalars.contains {
$0.value >= 0x4E00 && $0.value <= 0x9FFF
}
let wordResult = hasCJK ? charResult : wordLevelMatch(spoken: spoken)
- Lingua principale
- Swift
- Stelle
- 3.8k
- Fork
- 269
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di f/textream
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 74/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
Issue simili
-
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
521xueweihan/HelloGitHub#3870 ·
-
🐛 bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
margelo/react-native-vision-camera#4211 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
TokenIterator.prepare drops LMOutput.State in the .logits branch, breaking generation for every VLMAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
ml-explore/mlx-swift-lm#681 ·
I maintainer di solito rispondono entro 2 giorni