Использование SpeechSynthesizer для калькулятора в VS C # [дубликат]

Здесь важна разрывная симметрия, а не причина производительности. Представьте сначала два слоя многослойного персептрона (входные и скрытые слои):

enter image description here [/g0]

При прямом распространении каждый блок в скрытом слое получает сигнал:

enter image description here [/g1]

То есть каждый скрытый блок получает сумму входов, умноженную на соответствующий вес.

Теперь представьте, что вы инициализируете все веса до одного значения (например, ноль или один). В этом случае каждый скрытый блок получит точно такой же сигнал. Например. если все веса инициализированы до 1, каждый блок получает сигнал, равный сумме входов (и выходов sigmoid(sum(inputs))). Если все веса - это нули, что еще хуже, каждый скрытый блок получит нулевой сигнал. Независимо от того, какой был вход - если все веса одинаковы, все единицы в скрытом слое будут одинаковыми.

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

35
задан user2110292 13 March 2013 в 16:13
поделиться

5 ответов

Вы можете использовать .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");



        }

    }
}
45
ответ дан One Man Crew 25 August 2018 в 10:25
поделиться

Эта функциональность существует в основной библиотеке классов в пространстве имен 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();
    }
  }
}
19
ответ дан David 25 August 2018 в 10:25
поделиться

Недавно Google опубликовал Google Cloud Text To Speech.

.NET Client версия Google.Cloud.TextToSpeech можно найти здесь: https://github.com/jhabjan/Google.Cloud .TextToSpeech.V1

Nuget: Install-Package JH.Google.Cloud.TextToSpeech.V1

Вот краткий пример того, как использовать клиента:

GoogleCredential credentials =
    GoogleCredential.FromFile(Path.Combine(Program.AppPath, "jhabjan-test-47a56894d458.json"));

TextToSpeechClient client = TextToSpeechClient.Create(credentials);

SynthesizeSpeechResponse response = client.SynthesizeSpeech(
    new SynthesisInput()
    {
        Text = "Google Cloud Text-to-Speech enables developers to synthesize natural-sounding speech with 32 voices"
    },
    new VoiceSelectionParams()
    {
        LanguageCode = "en-US",
        Name = "en-US-Wavenet-C"
    },
    new AudioConfig()
    {
        AudioEncoding = AudioEncoding.Mp3
    }
);

string speechFile = Path.Combine(Directory.GetCurrentDirectory(), "sample.mp3");

File.WriteAllBytes(speechFile, response.AudioContent);
0
ответ дан HABJAN 25 August 2018 в 10:25
поделиться
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

5
ответ дан Pran 25 August 2018 в 10:25
поделиться

Вы можете сделать это, используя библиотеку System.Speech . взгляните на этот пример

0
ответ дан user4340666 25 August 2018 в 10:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: