Sto cercando un modo per convertire il testo (stringa) in ENG a voce (suono) in C#. Qualcuno sa per un modo o qualche lib open source che può aiutarmi con questo compito?Come convertire la stringa di testo in audio vocale
risposta
È possibile utilizzare .NET lib (System.Speech.Synthesis).
Secondo Microsoft:
Il namespace System.Speech.Synthesis contiene classi che consentono di inizializzare e configurare un motore di sintesi vocale, creare istruzioni, generare discorso, rispondere agli eventi, e modificare la voce caratteristiche. La sintesi vocale viene spesso definita sintesi vocale o TTS.
Un sintetizzatore vocale riceve il testo come input e produce un flusso audio come output. La sintesi vocale viene anche definita sintesi vocale (TTS).
Un sintetizzatore deve eseguire un'analisi e un'elaborazione sostanziale per convertire con precisione una stringa di caratteri in un flusso audio che suona esattamente come le parole sarebbero pronunciate. Il modo più semplice per immaginare come funziona è quello di immaginare il front-end e il back-end di un sistema a due parti.
Text Analysis
Il frontale è specializzata nell'analisi del testo usando regole di linguaggio naturale. Analizza una serie di caratteri per determinare dove sono le parole (che è facile da fare in inglese, ma non è facile in lingue come il cinese e il giapponese). Questo front-end individua anche dettagli grammaticali come funzioni e parti del discorso. Ad esempio, quali parole sono nomi, numeri e così via; dove le frasi iniziano e finiscono; se una frase è una domanda o una dichiarazione; e se una dichiarazione è passata, presente o futura.
Tutti questi elementi sono fondamentali per la selezione di pronunce e intonazioni appropriate per parole, frasi e frasi.Considera che in inglese, una domanda di solito finisce con un tono crescente, o che la parola "leggere" viene pronunciata in modo molto diverso a seconda del suo tempo. Chiaramente, capire come viene usata una parola o una frase è un aspetto critico dell'interpretazione del testo in suono. Per complicare ulteriormente le cose, le regole sono leggermente diverse per ogni lingua. Quindi, come puoi immaginare, il front end deve fare delle analisi molto sofisticate.
suono Generation
Il back-end ha un compito diverso. Prende l'analisi fatta dal front-end e, attraverso alcune sue analisi non banali, genera i suoni appropriati per il testo di input. I sintetizzatori più vecchi (e i sintetizzatori di oggi con le impronte più piccole) generano i singoli suoni in modo algoritmico, risultando in un suono molto robotico. Sintetizzatori moderni, come quello di Windows Vista e Windows 7, utilizzano un database di segmenti sonori costruiti a partire da ore e ore di registrazione vocale. L'efficacia del back-end dipende da quanto è buona per selezionare i segmenti di suono appropriati per ogni dato input e per unirli uniformemente.
Ready to Use
Le funzionalità di text-to-speech di cui sopra sono costruiti in Windows Vista e sistemi operativi Windows 7, consentendo alle applicazioni di utilizzare facilmente questa tecnologia. Questo elimina la necessità di creare i tuoi motori vocali. È possibile richiamare tutta questa elaborazione con una singola chiamata di funzione. Vedi Pronunciare il contenuto di una stringa.
provare questo codice:
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");
}
}
}
Un quarto di secolo fa, ho utilizzato un programma che esprimeva le parole foneticamente utilizzando le cifre per esprimere lo stress (quindi "Che cos'è?" Potrebbe essere [IIRC] "WHUH1T IH2IH4IH4ZAE1T." O "WHUH3T IH1Z DHAE3T. "A seconda di dove l'enfasi appartiene). Ottenere una prosodia dal suono naturale richiederebbe spesso un sacco di ritocchi, ma il tweaking ha permesso un livello di controllo molto dettagliato. Se il tuo obiettivo è produrre un discorso componendo una raccolta fissa di stringhe di testo in varie sequenze, c'è un modo carino per inviare i dati all'API vocale come una stringa fonetica che include mark-up per stress e prosodia? – supercat
Bug interessante: non avrebbe detto nulla finché non avessi riavviato Visual Studio. –
@supercat, non è sicuro ma stai cercando supporto SSML? Synthesizer ha il metodo [SpeakSsml] (https://msdn.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.speakssml (v = vs.110) .aspx). [SSML] (https://msdn.microsoft.com/en-us/library/vs/alm/hh361578%28v=office.14%29.aspx) sembra supportare [prosody] (https://msdn.microsoft .com/it-it/library/vs/alm/hh361583% 28v = office.14% 29.aspx). PS: Non ho idea di cosa significhi tutto questo. :) – publicgk
Questa funzionalità esiste nella libreria di classi principale nello spazio dei nomi System.Speech. In particolare, guarda in System.Speech.Synthesis.
Nota che è probabile che sia necessario aggiungere un riferimento a System.Speech.dll.
La classe SpeechSynthesizer fornisce accesso alle funzionalità di un motore di sintesi vocale che è installato sul computer host. I motori di sintesi vocale installati sono rappresentati da una voce, per esempio Microsoft Anna. Un'istanza SpeechSynthesizer viene inizializzata su la voce predefinita. Per configurare un'istanza di SpeechSynthesizer per utilizzare una delle altre voci installate, chiamare i metodi SelectVoice o SelectVoiceByHints. Per ottenere informazioni su quali voci sono installate , utilizzare il metodo GetInstalledVoices.
Come per tutta la documentazione MSDN, ci sono esempi di codice da utilizzare. Quanto segue è dalla classe 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();
}
}
}
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
}
}
}
- Sarà meglio scelta di utilizzare "SpeakAsync" perché quando "parlare" la funzione è in esecuzione/nessuno di altra funzione in esecuzione funzionerà fino a quando non finisce è un lavoro (personalmente consigliato)
È possibile farlo utilizzando la libreria System.Speech. Date un'occhiata a this example
- 1. Convertire la stringa di testo HTML formattata in parti NSString
- 2. Come fare una conversione vocale in un convertitore di testo?
- 3. Come convertire la formula R in testo?
- 4. riconoscimento vocale da file audio anziché microfono
- 5. Utilizzo di System.Speech per convertire il file mp3 in testo
- 6. python: come convertire la stringa letterale in stringa raw letterale?
- 7. Come convertire la stringa base64 in immagine?
- 8. Come convertire la stringa in controllo?
- 9. come convertire la stringa percentuale in BigDecimal?
- 10. come convertire la stringa binaria in decimale?
- 11. Come convertire la stringa in long
- 12. Converti audio in testo
- 13. convertire la stringa di DateTime
- 14. Come convertire BeautifulSoup.ResultSet in stringa
- 15. Windows 8 vocale a testo e sintesi vocale API
- 16. Come convertire la stringa in maiuscolo nella finestra di testo di Windows?
- 17. Salvataggio ingresso audio del motore di riconoscimento vocale Android Stock
- 18. Come convertire la matrice di byte in stringa in Java?
- 19. Come convertire la stringa in handle di funzione in Matlab?
- 20. Come convertire la formula excel effettiva (non il risultato) in una stringa di testo
- 21. Come convertire stringa esadecimale in stringa java
- 22. Come convertire PathBuf in stringa
- 23. C'è un modo per inviare file audio al riconoscimento vocale per il testo
- 24. Servizio di riconoscimento vocale per la ricerca vocale di Google
- 25. come convertire la stringa di data/ora in java.util.Date
- 26. Come convertire la stringa di percentuale in doppio?
- 27. Come convertire la stringa timestamp di Python in epoch?
- 28. Vuoi avviare il registratore vocale predefinito dall'applicazione per acquisire audio
- 29. Come implementare il riconoscimento vocale e la sintesi vocale in C++?
- 30. Riconoscimento vocale per android
Perché open source? La risposta .Net è così ovvia che dovresti davvero specificare perché è fuori dal tavolo. – flup
L'opzione .NET è ok per me – user2110292