HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
English Translate 中文翻訳
LINK
BACK
 

[NEW] 2018/02/01

Windows 10対応の音声合成エンジン TTSアプリを C#で作成する Windows 10対応の音声合成エンジン TTSアプリを C#で作成する

(Visual Studio 2013の C#で入力した文字列を喋る音声合成 TTSアプリを作成する)

Tags: [Windows], [無人インストール]





● 過去に作成した TTS音声合成エンジンアプリが Windows 10で動かないので新規に作った

 Visual Studio 2013の C#で System.Speech.Synthesisの SpeechSynthesizerクラスを使います。
using System.Speech.Synthesis;

var synthesizer = new System.Speech.Synthesis.SpeechSynthesizer();
var voices = synthesizer.GetInstalledVoices();
synthesizer.SelectVoice(voices[voiceIndex].VoiceInfo.Name);
synth.SetOutputToDefaultAudioDevice();
synthesizer.Speak(speechStr);
synthesizer.Dispose();

 .NET Framework クラス ライブラリ > System.Speech 名前空間 > System.Speech.Synthesis
SpeechSynthesizer クラス
 インストール済みの音声合成エンジン機能へのアクセスを提供します。

 名前空間: System.Speech.Synthesis
 .NET Framework 3.0 以降で使用可能


● 過去に作成した TTS音声合成エンジンアプリ

 過去に Visual C++で作成しました。
 Windows 10では正常に動きません。(TTSエンジンを認識しない、TTS音声を選択しても日本語でしか喋らない等)

2010/06/14
音声合成エンジン(SAPI 5、TTS)を使用して入力した文字列を喋ります
音声合成エンジン(SAPI 5、TTS)を使用して入力した文字列を喋ります

  SpeechApp Microsoft Speech API 5(SAPI 5)の Text-to-Speech(TTS)のアプリ

2012/04/03
音声合成エンジン(MSSP 11、TTS)を使用して入力した文字列を喋ります
音声合成エンジン(MSSP 11、TTS)を使用して入力した文字列を喋ります

  SpeechApp11 Microsoft Speech Platform 11用の Text-to-Speech(TTS)のアプリ


● Visual Studio 2013の練習で作成した TTS音声合成エンジンアプリ

 Visual Studio 2013の練習で作成した TTS音声合成エンジンアプリ。

SpeechTest.cs
 // SPEECH_ASYNCを有効にすると「非同期再生」となる
 //#define SPEECH_ASYNC

using System;
using System.Speech.Synthesis;
using System.Threading;

 // アセンブリに追加 System.Speech

namespace SpeechTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize a new instance of the SpeechSynthesizer.
            var synthesizer = new System.Speech.Synthesis.SpeechSynthesizer();

            // Returns the collection of speech synthesis TTS voices.
            var voices = synthesizer.GetInstalledVoices();

            // Display TTS voice list.
            if (args.Length == 0)
            {
                int index = 0;
                Console.WriteLine("SpeechSynthesizer.GetInstalledVoices()");
                foreach (InstalledVoice voice in voices)
                {
                    Console.WriteLine("{3}: {0,-26} {1,-26} {2, -6}", voice.VoiceInfo.Id, voice.VoiceInfo.Name, voice.VoiceInfo.Gender, index);
                    ++index;
                }
                return;
            }

            // Check args
            if (args.Length != 2)
            {
                Console.WriteLine("Error: args");
                return;
            }

            // Get Voice Index
            int voiceIndex = 0;
            try
            {
                voiceIndex = Int32.Parse(args[0]);
            }
            catch (FormatException e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            // Check Voice Index
            if (voiceIndex < 0 || voiceIndex >= voices.Count)
            {
                Console.WriteLine("Error: voiceIndex");
            }

            // Speech string.
            string speechStr = args[1];

            // Selects a specific TTS voice by name.
            synthesizer.SelectVoice(voices[voiceIndex].VoiceInfo.Name);

            // Set the volume of the SpeechSynthesizer's ouput (0 ~ 100).
            synthesizer.Volume = 100;

            // Set a value for the speaking rate (-10 ~ 10).
            synthesizer.Rate = 0;

            // Configure the audio output.
            synthesizer.SetOutputToDefaultAudioDevice();

#if SPEECH_ASYNC
            ManualResetEvent speechDoneEvent = new ManualResetEvent(false);

            // Speech asynchronously.
            synthesizer.SpeakAsync(speechStr);
            synthesizer.SpeakCompleted += (s, arg) =>
            {
                // Sets the state of the event to signaled.
                speechDoneEvent.Set();
            };

            // Blocks the current thread until receives a signal.
            speechDoneEvent.WaitOne();
#else
            // Speech output synchronously.
            synthesizer.Speak(speechStr);
#endif

            // Disposes the SpeechSynthesizer object
            synthesizer.Dispose();
        }
    }
}


●エラー 1 型または名前空間名 'Speech' は名前空間 'System' に存在しません。アセンブリ参照が不足しています。

 「参照設定」で「参照の追加(R)...」で Speechで検索(絞込み)
System.Speech
 を追加する。

 .NET Framework: 3.0以降で使用可能


● Visual Studio 2013で音声認識

音声認識は SpeechRecognitionEngine.InstalledRecognizers メソッド ()のサンプルでそのまま使えます。

 認識精度はとても悪いです。(認識精度を上げるには特定の単語を認識辞書に覚えさせる必要が有ります)

SpeechRecognitionEngine.InstalledRecognizers メソッド ()

 TwoLetterISOLanguageName.Equals("ja")で日本語を認識出来る様にしています。
using System;
using System.Speech.Recognition;

namespace SpeechRecognitionApp
{
  class Program
  {
    static void Main(string[] args)
    {

      // Select a speech recognizer that supports English.
      RecognizerInfo info = null;
      foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers())
      {
        if (ri.Culture.TwoLetterISOLanguageName.Equals("ja"))
        {
          info = ri;
          break;
        }
      }
      if (info == null) return;

      // Create the selected recognizer.
      using (SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(info))
      {

        // Create and load a dictation grammar.
        recognizer.LoadGrammar(new DictationGrammar());

        // Add a handler for the speech recognized event.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

        // Configure input to the speech recognizer.
        recognizer.SetInputToDefaultAudioDevice();

        // Start asynchronous, continuous speech recognition.
        recognizer.RecognizeAsync(RecognizeMode.Multiple);

        // Keep the console window open.
        while (true)
        {
          Console.ReadLine();
        }
      }
    }

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine("Recognized text: " + e.Result.Text);
    }
  }
}




Tags: [Windows], [無人インストール]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Visual Studio 2013 Professionalを無人インストールする方法、完全自動でインストール。
Visual Studio 2013 Professionalを無人インストールする方法、完全自動でインストール。

  VS2013を Update 5適用済みとコンポーネント選択の事前設定でインストール時の手間を省く。

Visual Studio 2015 Professionalを無人インストールする方法、完全自動でインストール。
Visual Studio 2015 Professionalを無人インストールする方法、完全自動でインストール。

  VS2015を Update 3適用済みとコンポーネント選択の事前設定でインストール時の手間を省く。

Visual Studio 2017 Professionalを無人インストールする方法、完全自動でインストール。
Visual Studio 2017 Professionalを無人インストールする方法、完全自動でインストール。

  VS2017を完全オフラインインストール&コンポーネント選択の事前設定で自動インストールする。

ZIPファイル解凍ツールをソースリスト 1行で作る方法、Windows専用
ZIPファイル解凍ツールをソースリスト 1行で作る方法、Windows専用

  Visual Studio 2013の C#で ZipFile.ExtractToDirectoryを使います



[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外はweb構成の変更で移動する場合があります)
Copyright (c) 2018 FREE WING, Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/software/visual_c_sharp_speach_tts_windows_10/