feat(caption): let live captions use their own speech model
The speech engine now keeps an auxiliary model next to the dictation model and transcribes with whichever the request names, reloading it once if the engine restarted. Settings > STT gains a live-caption model so captions can run on large-v3-turbo while dictation keeps its own model. The runtime minimum rises to 1.7.0 because older engines would silently ignore the model choice. Suggestion paging moves to Up/Down: the page follows the selection and the last item waits while more candidates are being generated. The Left/Right page shortcuts are removed; they did nothing until a page had filled and clash with Intel's display-rotation hotkeys.
This commit is contained in:
parent
39b8e7448e
commit
4b0f685941
29 changed files with 222 additions and 234 deletions
|
|
@ -1235,8 +1235,6 @@ export const SUGGESTION_DEFAULTS = {
|
|||
* 한 번에 요청하면 느리다(사용자 요청) — 1개씩 순차 요청해 채운다.
|
||||
*/
|
||||
maxCandidatesTotal: 12,
|
||||
/** 오버레이 한 페이지에 보여줄 후보 수. */
|
||||
pageSize: 3,
|
||||
maxOutputTokens: 64,
|
||||
/** 표시된 제안의 연속 접두가 이만큼 자랐을 때만 재생성한다. */
|
||||
regenerateAfterChars: 12,
|
||||
|
|
|
|||
|
|
@ -681,8 +681,6 @@ export type KeyBindingActionId =
|
|||
| 'suggestion-next'
|
||||
| 'suggestion-prev'
|
||||
| 'suggestion-dismiss'
|
||||
| 'suggestion-page-next'
|
||||
| 'suggestion-page-prev'
|
||||
|
||||
/** 액션 그룹 (설정 화면 섹션) */
|
||||
export type KeyBindingActionGroup = 'voice' | 'window' | 'input'
|
||||
|
|
@ -786,8 +784,8 @@ export const KEYBINDING_ACTIONS: readonly KeyBindingActionSpec[] = Object.freeze
|
|||
descriptionKey: 'keybinding.action.suggestionAccept.desc',
|
||||
holdMode: false,
|
||||
doublePress: false,
|
||||
// Ctrl+Alt+화살표 계열: 아래/위로 후보 순환, 좌우로 페이지 이동(12개까지
|
||||
// 순차 생성 — 사용자 요청). 화살표를 페이지 이동에 내주기 위해 수락은 Enter로 옮겼다.
|
||||
// Ctrl+Alt+↑/↓ 로 후보를 오가고(페이지는 따라 넘어간다), 수락은 Enter.
|
||||
// 좌우 화살표는 쓰지 않는다 — Intel 그래픽 드라이버의 화면 회전 단축키와 겹친다.
|
||||
defaultBindings: [kb(VK.Enter, { ctrl: true, alt: true })]
|
||||
},
|
||||
{
|
||||
|
|
@ -808,24 +806,6 @@ export const KEYBINDING_ACTIONS: readonly KeyBindingActionSpec[] = Object.freeze
|
|||
doublePress: false,
|
||||
defaultBindings: [kb(VK.ArrowUp, { ctrl: true, alt: true })]
|
||||
},
|
||||
{
|
||||
id: 'suggestion-page-next',
|
||||
group: 'input',
|
||||
labelKey: 'keybinding.action.suggestionPageNext',
|
||||
descriptionKey: 'keybinding.action.suggestionPageNext.desc',
|
||||
holdMode: false,
|
||||
doublePress: false,
|
||||
defaultBindings: [kb(VK.ArrowRight, { ctrl: true, alt: true })]
|
||||
},
|
||||
{
|
||||
id: 'suggestion-page-prev',
|
||||
group: 'input',
|
||||
labelKey: 'keybinding.action.suggestionPagePrev',
|
||||
descriptionKey: 'keybinding.action.suggestionPagePrev.desc',
|
||||
holdMode: false,
|
||||
doublePress: false,
|
||||
defaultBindings: [kb(VK.ArrowLeft, { ctrl: true, alt: true })]
|
||||
},
|
||||
{
|
||||
id: 'suggestion-dismiss',
|
||||
group: 'input',
|
||||
|
|
|
|||
|
|
@ -499,6 +499,8 @@ export interface AppConfig {
|
|||
captionOverlayPosition: { x: number; y: number } | null
|
||||
/** 확정된 자막 줄을 로컬 LLM으로 문맥에 맞게 다듬는다 */
|
||||
captionRefineEnabled: boolean
|
||||
/** 실시간 자막 전용 로컬 Whisper 모델. null 이면 받아쓰기 모델(sttModelId)을 쓴다 */
|
||||
captionSttModelId: string | null
|
||||
/** Auto-update 채널 (latest=stable / beta / alpha). UpdateService */
|
||||
updateChannel: 'latest' | 'beta' | 'alpha'
|
||||
/** staged rollout용 영구 기기 식별자 (개인정보 아님, 최초 실행 시 생성) */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue