From dc5c6f0c2538e47162b8ab6bce1ca85604838281 Mon Sep 17 00:00:00 2001 From: Valentin Silyutin Date: Tue, 23 Sep 2025 20:52:17 +0400 Subject: [PATCH] Fix getVoices() --- index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 05eccf7..82cab39 100644 --- a/index.js +++ b/index.js @@ -131,15 +131,28 @@ const getStorage = async () => { } }; -const getVoices = () => { +const getVoices = async () => { try { if (!window.speechSynthesis) return null; - return window.speechSynthesis.getVoices().map((v) => ({ + + const mapVoice = (v) => ({ name: v.name, lang: v.lang, local: v.localService, default: v.default, - })); + }); + + const voices = window.speechSynthesis.getVoices(); + if (voices.length > 0) { + return voices.map((v) => mapVoice(v)); + } + + return await new Promise((resolve) => { + window.speechSynthesis.onvoiceschanged = () => { + const list = window.speechSynthesis.getVoices(); + resolve(list.map((v) => mapVoice(v))); + }; + }); } catch { return null; } @@ -267,7 +280,7 @@ export const get = async () => { mimes: [...(navigator.mimeTypes ?? [])].map(({ type, suffixes }) => ({ type, suffixes })), // Voices - voices: getVoices(), + voices: await getVoices(), // Network network: getNetwork(),