В следующем примере показано, что JSON.stringify() возвращает строку "{}" для объектов SpeechSynthesisVoice:
var voiceObject = window.speechSynthesis.getVoices()[0];
JSON.stringify(voiceObject); //returns "{}"?
Полный пример: JSFiddle
Почему он возвращает "{}", а не что-то вроде "{voiceURI: "Google Deutsch", name: "Google Deutsch", lang: "de-DE", localService: false, default: false}"?
Обратите внимание, что приведенный выше пример не работает для chrome или iOS; он предназначен для Mozilla Firefox.