voz visual texto reconocimiento reconocedor platformnotsupportedexception ningún instalado hay convertir c# .net text-to-speech

c# - visual - system platformnotsupportedexception no hay ningún reconocedor instalado



Cómo convertir cadena de texto en sonido de voz (6)

Esta funcionalidad existe en la Biblioteca de clases principal en el espacio de nombres System.Speech . Particularmente, busque en System.Speech.Synthesis .

Tenga en cuenta que es probable que necesite agregar una referencia a System.Speech.dll .

La clase SpeechSynthesizer proporciona acceso a la funcionalidad de un motor de síntesis de voz que está instalado en la computadora host. Los motores de síntesis de voz instalados están representados por una voz, por ejemplo, Microsoft Anna. Una instancia de SpeechSynthesizer se inicializa a la voz predeterminada. Para configurar una instancia de SpeechSynthesizer para utilizar una de las otras voces instaladas, llame a los métodos SelectVoice o SelectVoiceByHints. Para obtener información sobre qué voces están instaladas, use el método GetInstalledVoices.

Al igual que con toda la documentación de MSDN, hay ejemplos de código para usar. Lo siguiente es de la clase 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(); } } }

Estoy buscando una forma de convertir texto (cadena) en ENG a voz (sonido) en c #. ¿Alguien sabe de alguna manera o alguna lib de código abierto que me puede ayudar con esta tarea?


Puede hacer esto con la ayuda del espacio de nombres System.Speech.Synthesis . Para eso, primero debe agregar una referencia a System.speech.dll .

Prueba esto:

using System.Speech.Synthesis; namespace TextToSpeech { public partial class Form1 : Form { SpeechSynthesizer speak; public Form1() { InitializeComponent(); speak = new SpeechSynthesizer(); } private void button1_Click(object sender, EventArgs e) { string text="Speak this"; speak.SpeakAsync(text); } } }


Puede usar .NET lib ( System.Speech.Synthesis ).

De acuerdo con Microsoft :

El espacio de nombres System.Speech.Synthesis contiene clases que le permiten inicializar y configurar un motor de síntesis de voz, crear avisos, generar voz, responder a eventos y modificar las características de la voz. La síntesis de voz a menudo se denomina texto a voz o TTS.

Un sintetizador de voz toma el texto como entrada y produce una secuencia de audio como salida. La síntesis de voz también se conoce como texto a voz (TTS).

Un sintetizador debe realizar análisis y procesamiento sustanciales para convertir con precisión una cadena de caracteres en una secuencia de audio que suena exactamente como se pronunciarán las palabras. La forma más fácil de imaginar cómo funciona esto es imaginar la parte frontal y posterior de un sistema de dos partes.

Análisis de texto

El front end se especializa en el análisis de texto usando reglas de lenguaje natural. Analiza una cadena de caracteres para determinar dónde están las palabras (lo cual es fácil de hacer en inglés, pero no tan fácil en idiomas como el chino y el japonés). Este front end también resuelve detalles gramaticales como funciones y partes del discurso. Por ejemplo, qué palabras son nombres propios, números, etc. donde las oraciones comienzan y terminan; si una frase es una pregunta o una declaración; y si un enunciado es tiempo pasado, presente o futuro.

Todos estos elementos son críticos para la selección de pronunciaciones y entonaciones apropiadas para palabras, frases y oraciones. Considere que en inglés, una pregunta generalmente termina con un tono ascendente, o que la palabra "leer" se pronuncia de manera muy diferente dependiendo de su tiempo. Claramente, entender cómo se usa una palabra o frase es un aspecto crítico de la interpretación de texto en sonido. Para complicar aún más las cosas, las reglas son ligeramente diferentes para cada idioma. Entonces, como se puede imaginar, la parte delantera debe hacer un análisis muy sofisticado.

Generación de sonido

El back-end tiene una tarea bastante diferente. Toma el análisis hecho por el front-end y, a través de un análisis propio no trivial, genera los sonidos apropiados para el texto de entrada. Los sintetizadores más antiguos (y los sintetizadores actuales con las huellas más pequeñas) generan los sonidos individuales de forma algorítmica, lo que resulta en un sonido muy robótico. Los sintetizadores modernos, como el de Windows Vista y Windows 7, usan una base de datos de segmentos de sonido construidos a partir de horas y horas de voz grabada. La efectividad del back-end depende de cuán bueno es seleccionar los segmentos de sonido apropiados para cualquier entrada dada y unirlos suavemente.

Listo para usar

Las capacidades de conversión de texto a voz descritas anteriormente están integradas en los sistemas operativos Windows Vista y Windows 7, lo que permite a las aplicaciones utilizar esta tecnología fácilmente. Esto elimina la necesidad de crear sus propios motores de voz. Puede invocar todo este procesamiento con una sola llamada de función. Consulte Habla el contenido de una cadena.

prueba este código:

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"); } } }



Recientemente Google publicó Google Cloud Text To Speech .

La versión .NET Client de Google.Cloud.TextToSpeech se puede encontrar aquí: https://github.com/jhabjan/Google.Cloud.TextToSpeech.V1

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

Aquí hay un pequeño ejemplo de cómo usar el cliente:

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);


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 } } }

  • Sería mejor opción usar "SpeakAsync" porque cuando la función "Speak" se está ejecutando / funcionando ninguna de las otras funciones funcionará hasta que termine su trabajo (recomendado personalmente)

Cambiar VoiceGender
Cambiar VoiceAge