📌
MAUIでWindows上の追加した合成音声を聞きたい!
前提
VOICEVOXのきゃわいい声を聞けるようにしたい!
実装的には「MAUIでWindows上の新たにSAPIForVOICEVOXで追加した合成音声を聞きたい!」と思い手を動かしました。
VOICEVOXとSAPIForVOICEVOXは、事前に入れておいてね。
ちなみに当然のことながら、Windows限定の動作なので、実装するときは、プラットフォーム制限掛けてね。
結論
MAUIデフォのTextToSpeechでは無理
そもそも論、最近のWindowsの合成音声事情が関係してて、SAPIForVOICEVOXでは、名前の通りWindowsではレガシ機能として分類されているSAPIに、音声を追加している。でも、最近のWindowsは、UWP(Windows.Media.SpeechSynthesis)を使う方針になっている。MAUIもその関係上、UWP(Windows.Media.SpeechSynthesis)を使っている。なので、無理。
ちなみに、MAUIデフォにあるTextToSpeechの中身はこちら…
System.Speech.Synthesisを使う
かなぁぁ~~~り丁寧に説明されてた。
なお、System.Speech.Synthesisは、特に依存関係がないので、結構安心して使える。
NuGetで、System.Speechをインストールする。
今回は、テストで、色んな声が入っているか確認したいので、下記のように書いた。
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.SetOutputToDefaultAudioDevice();
foreach(InstalledVoice item in synth.GetInstalledVoices()){
synth.SelectVoice(item.VoiceInfo.Name);
synth.Speak(item.VoiceInfo.Name);
}
以上、今回は、speak関数使っているので、同期的に動いていますが、SpeakAsyncとeventなどを駆使すれば、非同期にもちゃんと使えます。
Discussion