Visual StudioのC#で音声読み上げをさせる場合の方法がいくつかあるのでまとめてみました。
うちでは「microsoft speech object library」を使った場合に動作確認ができました。入れるバージョンでも違うみたいです。
Visual StudioでC#で音声読み上げ
microsoft speech object library
いろいろやり方がありますが「microsoft speech object library」を使った場合を紹介します。
まず「プロジェクト>プロジェクト参照の追加」で「microsoft speech object library」を探します。
いくつか見つかりましたが、今回はバージョンが「11」を選択。
次に利用を宣言します。
using SpeechLib;
ボタンを押してしゃべらせるには以下のよう書きます。
private void button1_Click(object sender, EventArgs e) {
SpVoice myvoice = new SpVoice();
SpeechVoiceSpeakFlags myFlag = SpeechVoiceSpeakFlags.SVSFlagsAsync | SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak;
myvoice.Speak("こにゃにゃちは", myFlag );
}
速度を倍にするには以下のように「Rate」プロパティを変更します。
myvoice.Rate = 2;
ただしうちでは、一度ボタンを押しただけでは鳴らず、2度目のクリックからなるようになります。
初期化のタイミングとかかもしれませんが、改善したいところです。
SpeechSynthesizer
ネットを探して出てくるのが「using System.Speech.Synthesis;」を使った音声合成です。
System.Speech.Synthesis 名前空間 | Microsoft Docs
ただしDLLが見つからなくてどこにあるのか調べてみると、ある記事によれば「.NET 3.0, 3.5 and 4」対象とのこと。
現状入れたC#では5が対象のため、出てこないのかなという感じです。
.net - I can't find System.speech - Stack Overflow
Azure Text To Speech
マイクロソフトのクラウドプラットフォームAzureでは、テキストから音声化するサービスをクラウドで提供しています。
この場合「1 か月あたり 5 million 文字まで」は無料ですが、たくさん使う場合は有料となります。またクラウド処理のため、ネットワーク環境の品質も必要でしょう。