feat(editor): transcribe embedded audio blocks
Add a gated "Transcribe" action to the audio block's bubble menu so an already-embedded audio file can be transcribed (previously only live microphone dictation was supported). The button fetches the embedded file, normalizes its MIME type to the STT whitelist, reuses the existing POST /ai-chat/transcribe endpoint, and inserts the result as a paragraph right below the audio block. - Mount the previously-unwired AudioMenu in page-editor (edit mode only), which also surfaces the existing Download/Delete actions for audio. - Gate the Transcribe button on settings.ai.dictation; show a spinner and block double-submits while transcribing; map errors like the mic hook. - Disambiguate duplicate-src blocks by re-scanning the doc and inserting after the audio node closest to the originally selected one. - Add i18n keys (en-US, ru-RU): Transcribe, Transcribing…, No speech detected, plus ru-RU translations for the transcription error messages.
This commit is contained in:
@@ -49,6 +49,7 @@ import { TableHandlesLayer } from "@/features/editor/components/table/handle/tab
|
||||
import ImageMenu from "@/features/editor/components/image/image-menu.tsx";
|
||||
import CalloutMenu from "@/features/editor/components/callout/callout-menu.tsx";
|
||||
import VideoMenu from "@/features/editor/components/video/video-menu.tsx";
|
||||
import AudioMenu from "@/features/editor/components/audio/audio-menu.tsx";
|
||||
import PdfMenu from "@/features/editor/components/pdf/pdf-menu.tsx";
|
||||
import SubpagesMenu from "@/features/editor/components/subpages/subpages-menu.tsx";
|
||||
import {
|
||||
@@ -461,6 +462,7 @@ export default function PageEditor({
|
||||
<TableHandlesLayer editor={editor} />
|
||||
<ImageMenu editor={editor} />
|
||||
<VideoMenu editor={editor} />
|
||||
<AudioMenu editor={editor} />
|
||||
<PdfMenu editor={editor} />
|
||||
<CalloutMenu editor={editor} />
|
||||
<SubpagesMenu editor={editor} />
|
||||
|
||||
Reference in New Issue
Block a user