読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

ブラウザで多言語音声合成する時のワークアラウンド

ブラウザで音声合成ができる便利な時代です。
それも多言語サポートされていて、speechSynthesis.getVoices()をコールすると、様々な言語用のVoiceが取得できます。

ところが、少なくともMacGoogle Chromeでは、初回のspeechSynthesis.getVoices()コールでは戻り値が空の配列です。
初回コールしてから少なくとも30ms程度経たないとgetVoices()の実体が得られないようです。

なので、対処方法として、デフォルト以外の声で音声合成する場合には、ダミーで一度speechSynthesis.getVoices()をコールしておきましょう。