Подтвердить что ты не робот

Как преобразовать текстовую строку в речевой звук

Я ищу способ преобразования текста (строки) в ENG в речь (звук) в С#. кто-нибудь знает, каким образом или какой-то открытый исходный код, который может помочь мне с этой задачей?

4b9b3361

Ответ 1

Вы можете использовать .NET lib (System.Speech.Synthesis).

Согласно Microsoft:

Пространство имен System.Speech.Synthesis содержит классы, которые позволяют вам для инициализации и настройки механизма синтеза речи, создания подсказок, генерировать речь, реагировать на события и изменять характеристики голоса. Синтез речи часто упоминается как текст-речь или TTS.

Синтезатор речи принимает текст как входной сигнал и создает аудиопоток в качестве вывода. Синтез речи также упоминается как текст-речь (TTS).

Синтезатор должен выполнять существенный анализ и обработку, чтобы точно преобразовать строку символов в звуковой поток, который звучит так же, как слова будут произноситься. Самый простой способ представить, как это работает, - это изображение переднего и заднего конца двухчастной системы.

Анализ текста

Передняя часть специализируется на анализе текста с использованием правил естественного языка. Он анализирует строку символов, чтобы определить, где слова (что легко сделать на английском, но не так просто на таких языках, как китайский и японский). Этот передний конец также определяет грамматические детали, такие как функции и части речи. Например, какие слова являются правильными существительными, числами и т.д. где предложения начинаются и заканчиваются; является ли фраза вопросом или выражением; и является ли утверждение прошедшим, настоящим или будущим.

Все эти элементы имеют решающее значение для выбора подходящих произношений и интонаций для слов, фраз и предложений. Подумайте, что на английском языке вопрос обычно заканчивается повышающимся шагом или что слово "читать" произносится очень по-разному в зависимости от его времени. Ясно, что понимание того, как используется слово или фраза, является критическим аспектом интерпретации текста в звуке. Для дальнейшего усложнения вопросов правила для каждого языка несколько отличаются. Итак, как вы можете себе представить, передняя часть должна провести очень сложный анализ.

Генерация звука

У задней части есть совсем другая задача. Это делает анализ, выполненный передним концом, и посредством некоторого нетривиального анализа генерирует соответствующие звуки для входного текста. Старые синтезаторы (и сегодня синтезаторы с наименьшими отпечатками) генерируют отдельные звуки алгоритмически, что приводит к очень роботизированному звучанию. Современные синтезаторы, такие как Windows Vista и Windows 7, используют базу данных звуковых сегментов, построенных из часов и часов записанной речи. Эффективность заднего конца зависит от того, насколько хорошо он выбирает соответствующие сегменты звука для любого заданного входа и плавно сплачивает их вместе.

Готов к использованию

Возможности текстовой речи, описанные выше, встроены в операционные системы Windows Vista и Windows 7, что позволяет приложениям легко использовать эту технологию. Это устраняет необходимость создания собственных речевых движков. Вы можете вызвать всю эту обработку с помощью одного вызова функции. См. "Обсуждение содержимого строки".

попробуйте этот код:

using System.Speech.Synthesis;

namespace ConsoleApplication5
{
    class Program
    {

        static void Main(string[] args)
        {
            SpeechSynthesizer synthesizer = new SpeechSynthesizer();
            synthesizer.Volume = 100;  // 0...100
            synthesizer.Rate = -2;     // -10...10

            // Synchronous
            synthesizer.Speak("Hello World");

            // Asynchronous
            synthesizer.SpeakAsync("Hello World");



        }

    }
}

Ответ 2

Эта функциональность существует в основной библиотеке классов в пространстве имен System.Speech. В частности, посмотрите System.Speech.Synthesis.

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

Класс SpeechSynthesizer предоставляет доступ к функциям механизм синтеза речи, установленный на главном компьютере. Установленные двигатели синтеза речи представлены голосом для пример Microsoft Anna. Экземпляр SpeechSynthesizer инициализируется голос по умолчанию. Чтобы настроить экземпляр SpeechSynthesizer для использования один из других установленных голосов, вызовите SelectVoice или Методы SelectVoiceByHints. Чтобы получить информацию о том, какие голоса установлен, используйте метод GetInstalledVoices.

Как и во всех документах MSDN, используются примеры кода. Ниже приведен список из класса System.Speech.Synthesis.SpeechSynthesizer.

using System;
using System.Speech.Synthesis;

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

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

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

      // Speak a string.
      synth.Speak("This example demonstrates a basic use of Speech Synthesizer");

      Console.WriteLine();
      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }
  }
}

Ответ 3

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis; // first import this package

    namespace textToSpeech
    {
        public partial class home : Form
        {
            public string s = "pran"; // storing string (pran) to s

            private void home_Load(object sender, EventArgs e)
                {
                    speech(s); // calling the function with a string argument
                }

            private void speech(string args) // defining the function which will accept a string parameter
                {
                    SpeechSynthesizer synthesizer = new SpeechSynthesizer();
                    synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult); // to change VoiceGender and VoiceAge check out those links below
                    synthesizer.Volume = 100;  // (0 - 100)
                    synthesizer.Rate = 0;     // (-10 - 10)
                    // Synchronous
                    synthesizer.Speak("Now I'm speaking, no other function'll work");
                    // Asynchronous
                    synthesizer.SpeakAsync("Welcome" + args); // here args = pran
                }       
         }
    }
  • Лучше использовать "SpeakAsync", потому что, когда функция "Говорить" выполняется/работает, никакая другая функция не будет работать до тех пор, пока она не закончит работу (рекомендуется лично)

Изменить VoiceGender
Изменить VoiceAge