2015年9月23日水曜日

C#で音声合成出力

C#で音声合成出力を試してみた。OSはWin10、環境はVS2015WinDesktopのC#を使った。
参照にSystem.Speechを加える必要がある。

using System;
using System.Speech.Synthesis;
using System.Windows.Forms;

namespace Speech
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (SpeechSynthesizer syn = new SpeechSynthesizer())
            {
                syn.SelectVoice("Microsoft Zira Desktop");
                syn.Speak(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
            }
        }
    }
}

今回はSelectVoiceでZira(en-US)を指定した。デフォルトはHanako(ja-JP)だが、日本語だとイントネーションが不思議な感じになる。やはり英語のほうが自然。
それとSpeakで音声を出力している間はスレッドをブロックしてしまうので、実際に使うなら何らかの工夫が必要だと思う。
読み上げる速度はOSの設定から「音声認識のプロパティ」ダイアログ内「音声合成」タブにある「音声の速度」で設定できる。最速だと何を言ってるかわからないし、最遅でも何を言ってるかわからない。あんまり速度の調整はやらないほうが良さそう。

0 件のコメント:

コメントを投稿