- PR -

.NET3.0 音声合成エンジンのリストを得る方法

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 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("お早うございます。");
}

かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-07-14 20:34
3.0 系のクラスは全然使わないので気付かなかったんですが、ヘルプ関連が圧倒的に不足しているんですね。。。MSDN見てもメソッドの概要すら載ってない。。。

GetInstalledVoices あたりでとれるみたいですよ。

_________________
かるあ のメモスニペット
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)