Come salvare text-to-speech come wav con Microsoft SAPI?
-
12-09-2019 - |
Domanda
Ho bisogno di trasformare un testo in voce e quindi salvarlo come file WAV.
Soluzione
Il seguente codice C # utilizza lo spazio dei nomi System.Speech nel quadro .Net. E 'necessario fare riferimento allo spazio dei nomi prima di usarlo, perché non viene fatto riferimento automaticamente da Visual Studio.
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.Volume = 100;
ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav");
ss.Speak("Hello World");
Spero che questo sia pertinente e utile.
Altri suggerimenti
E come ho trovato su come modificare il formato di output, abbiamo qualcosa di codice come questo:
SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
//Same code comes here
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info);
Questo è abbastanza facile e comprensibile.
Cool .net
Questo è dal gioco qualche minuto, caveat emptor così. Ha funzionato bene per me. Ho notato che SpFileStream (che non implementa IDisposable, quindi il try / finally) preferisce percorsi assoluti alla relativa. C #.
SpFileStream fs = null;
try
{
SpVoice voice = new SpVoice();
fs = new SpFileStream();
fs.Open(@"c:\hello.wav", SpeechStreamFileMode.SSFMCreateForWrite, false);
voice.AudioOutputStream = fs;
voice.Speak("Hello world.", SpeechVoiceSpeakFlags.SVSFDefault);
}
finally
{
if (fs != null)
{
fs.Close();
}
}