Microsoft.Speech.Synthesis не работает для преобразования текста в речь, НО System.Speech.Synthesis работает.Почему?

Я просто пытаюсь запустить простой пример Microsoft для преобразования текста в речь, используя Microsoft.Speech.dll;

using System;
using Microsoft.Speech.Synthesis;

namespace TTS
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Testing TTS!");

            // Initialize a new instance of the SpeechSynthesizer.
            using (SpeechSynthesizer synth = new SpeechSynthesizer())
            {

                // Output information about all of the installed voices.
                Console.WriteLine("Installed voices -");
                foreach (InstalledVoice voice in synth.GetInstalledVoices())
                {
                    VoiceInfo info = voice.VoiceInfo;
                    Console.WriteLine(" Voice Name: " + info.Name);
                }

                // Select the US English voice.
                synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (en-GB, Hazel)");

                // Build a prompt.
                PromptBuilder builder = new PromptBuilder();
                builder.AppendText("That is a big pizza!");

                // Speak the prompt.
                synth.Speak(builder);
            }

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

Хотя у меня есть подходящие голоса, он не издает ни звука. Голос без преобразования текста в речь (TTS).

введите описание изображения здесь

Когда я использую Microsoft System.Speech.dll, я слышу голос. Так что проблем со звуком нет.

using System;
using System.Speech.Synthesis;

namespace TTS
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Testing TTS!");

            // Initialize a new instance of the SpeechSynthesizer.
            using (SpeechSynthesizer synth = new SpeechSynthesizer())
            {

                // Output information about all of the installed voices.
                Console.WriteLine("Installed voices -");
                foreach (InstalledVoice voice in synth.GetInstalledVoices())
                {
                    VoiceInfo info = voice.VoiceInfo;
                    Console.WriteLine(" Voice Name: " + info.Name);
                }

                // Build a prompt.
                PromptBuilder builder = new PromptBuilder();
                builder.AppendText("That is a big pizza!");

                // Speak the prompt.
                synth.Speak(builder);
            }

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

введите описание изображения здесь

В ближайшее время

Почему я не слышу голос или не могу преобразовать текст в речь (TTS) с помощью Microsoft Speech Platform с помощью Microsoft.Speech? Должен ли я сделать дополнительную настройку?


person Hippias Minor    schedule 10.07.2013    source источник


Ответы (3)


Потому что вы используете два разных движка TTS. Microsoft.Speech использует серверные голоса TTS; System.Speech использует голоса TTS рабочего стола. См. Обсуждение здесь.

В Windows Vista и более поздних версиях по умолчанию зарегистрированы голоса TTS на рабочем столе, но нет голоса TTS на сервере. При установке среды выполнения серверной речевой платформы, которая Я считаю, что вам нужно сделать, чтобы загрузить Microsoft.Speech.dll в первую очередь, у вас также должна быть возможность установить некоторые серверные голоса TTS.

person Eric Brown    schedule 12.07.2013
comment
Я установил сервер tts voices ... И моя тестовая программа Microsoft.Speech перечисляет их. Я вижу введенные голоса и проверяю их в реестре Windows. - person Hippias Minor; 14.07.2013
comment
Вы вызывали SetOutputToDefaultAudioDevice? По умолчанию этого не происходит с механизмом Microsoft.Speech, в отличие от механизма System.Speech. - person Eric Brown; 24.08.2013

В Visual Studio выберите Project, затем выберите Добавить ссылки, затем установите флажок рядом с System.Speech

В вашей программе также используйте system.speech.

У меня отлично работает.

person John Starr    schedule 07.11.2013

Чтобы ответить на ваш вопрос, который вы задали:

Почему я не слышу голос или не могу преобразовать текст в речь (TTS) с помощью Microsoft Speech Platform с помощью Microsoft.Speech?

В вашем коде отсутствует важная вещь. Вы не слышите голос, потому что отсутствует следующая строка:

synth.SetOutputToDefaultAudioDevice();

Это позволяет вам слышать голос. У меня такая же проблема. Я изменил ваш код и вставил пример кода выше:

using System;

using System.Speech.Synthesis;
using Microsoft.Speech.Synthesis;
namespace ConsoleApplication1
{
 class Program
   {

    static void Main(string[] args)
    {
     Console.WriteLine("Testing TTS!");

     // Initialize a new instance of the SpeechSynthesizer.
     using (SpeechSynthesizer synth = new SpeechSynthesizer())
     {
        // Configure the synthesizer to send output to the default audio device.
        synth.SetOutputToDefaultAudioDevice();

        // Output information about all of the installed voices.
        Console.WriteLine("Installed voices -");
        foreach (InstalledVoice voice in synth.GetInstalledVoices())
        {
           VoiceInfo info = voice.VoiceInfo;
           Console.WriteLine(" Voice Name: " + info.Name);
        }

        // Select the US English voice.
        synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (en-GB, Hazel)");

        // Speak.
        synth.Speak("That is a big pizza!");
     }

     Console.Write("Press any key to continue . . . ");
     Console.ReadKey(true);
  }
 }
}

Обратите внимание, что SetOutputToDefaultAudioDevice не требуется при использовании System.Speech.dll. Вот ссылку на документацию по методу.

person georges619    schedule 01.02.2019