diff --git a/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx b/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx index e0f932d6..9bf58259 100644 --- a/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx +++ b/apps/readest-app/src/app/reader/components/annotator/Annotator.tsx @@ -23,6 +23,7 @@ import { useFoliateEvents } from '../../hooks/useFoliateEvents'; import { useNotesSync } from '../../hooks/useNotesSync'; import { getPopupPosition, getPosition, Position, TextSelection } from '@/utils/sel'; import { eventDispatcher } from '@/utils/event'; +import { getBookLangCode } from '@/utils/book'; import AnnotationPopup from './AnnotationPopup'; import WiktionaryPopup from './WiktionaryPopup'; import WikipediaPopup from './WikipediaPopup'; @@ -339,7 +340,9 @@ const Annotator: React.FC<{ bookKey: string }> = ({ bookKey }) => { if (!selection || !selection.text) return; setShowAnnotPopup(false); - await view!.initTTS(); + const lang = getBookLangCode(bookData.bookDoc!.metadata.language); + const granularity = ['zh', 'ja', 'ko'].includes(lang) ? 'sentence' : 'word'; + await view!.initTTS(granularity); const ssml = view!.tts.from(selection.range)!; eventDispatcher.dispatch('speak', { bookKey, ssml }); }; diff --git a/apps/readest-app/src/types/view.ts b/apps/readest-app/src/types/view.ts index 135b2698..303f5188 100644 --- a/apps/readest-app/src/types/view.ts +++ b/apps/readest-app/src/types/view.ts @@ -2,6 +2,8 @@ import { BookDoc } from '@/libs/document'; import { BookNote, BookSearchConfig, BookSearchResult } from '@/types/book'; import { TTS } from 'foliate-js/tts.js'; +type TTSGranularity = 'sentence' | 'word'; + export interface FoliateView extends HTMLElement { open: (book: BookDoc) => Promise; close: () => void; @@ -18,7 +20,7 @@ export interface FoliateView extends HTMLElement { clearSearch: () => void; select: (target: string | number | { fraction: number }) => void; deselect: () => void; - initTTS: () => Promise; + initTTS: (granularity?: TTSGranularity) => Promise; tts: TTS; history: { canGoBack: boolean; diff --git a/packages/foliate-js b/packages/foliate-js index aa5f950b..238fbc21 160000 --- a/packages/foliate-js +++ b/packages/foliate-js @@ -1 +1 @@ -Subproject commit aa5f950b1f839f025a2f09432e5c3b62f8565234 +Subproject commit 238fbc216cff43ee41582b8549ba2bfdba3e2ce5