Fix getVoices()

This commit is contained in:
Valentin Silyutin
2025-09-23 20:52:17 +04:00
parent 5405585cea
commit dc5c6f0c25

View File

@@ -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(),