- - PR -
.NET3.0 音声合成エンジンのリストを得る方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-07-14 19:05
質問
Windowsにインストールされている音声合成エンジンの名前のリストを得る方法を教えてください。 下記の方法でパソコンをしゃべらせています。 下記では音声合成エンジン名を直接テキストで与えています。 しかし、富士通けんじや富士通なおこがインストールさているとは限りません。 また、別の音声合成エンジンがインストールされている可能性もあります。 そこで、Windowsにインストールされている音声合成エンジンのリストを作成し、 ドロップダウンリストから選択できるようにしたいと考えています。 private void button1_Click(object sender, EventArgs e) { // .NET Framework3.0 System.Speech.Synthesis.SpeechSynthesizer syn = new System.Speech.Synthesis.SpeechSynthesizer(); // WindowsVista標準 syn.SelectVoice("Microsoft Anna"); syn.Speak("Godd morning."); // Office2003添付の富士通けんじ syn.SelectVoice("LH Kenji"); syn.Speak("お早うございます。"); // Office2003添付の富士通なおこ syn.SelectVoice("LH Naoko"); syn.Speak("お早うございます。"); } |
|
投稿日時: 2007-07-14 20:34
3.0 系のクラスは全然使わないので気付かなかったんですが、ヘルプ関連が圧倒的に不足しているんですね。。。MSDN見てもメソッドの概要すら載ってない。。。
GetInstalledVoices あたりでとれるみたいですよ。 _________________ かるあ のメモ と スニペット |
|
投稿日時: 2007-07-15 15:51
ご回答ありがとうございます。
解決できました。 .NET Framework3.0を使うと、こんなに簡単にパソコンをしゃべらせることが できることを知って驚きました。早くヘルプが充実するとよいですね。 using System.Collections.ObjectModel; using System.Speech.Synthesis; using System.Globalization; .... private void button1_Click(object sender, EventArgs e) { // .NET Framework3.0 SpeechSynthesizer syn = new SpeechSynthesizer(); // 音声合成エンジンのリストを得る ReadOnlyCollection<InstalledVoice> list = syn.GetInstalledVoices(); // 英語と日本語でリストを読み上げます foreach(InstalledVoice voice in list) { VoiceInfo info = voice.VoiceInfo; string text; switch (info.Culture.Name) { case "en-US": text = "Good morning."; break; case "ja-JP": text = "お早うございます。"; break; default: text = null; break; } if (text != null) { syn.SelectVoice(info.Name); syn.Speak(text); } } } |
1