Como salvar texto-para-voz como um wav com Microsoft SAPI?
-
12-09-2019 - |
Pergunta
Eu preciso para transformar um texto em fala e, em seguida, salvá-lo como arquivo de wav.
Solução
O seguinte código C # usa o namespace System.Speech no framework .Net. É necessário fazer referência ao namespace antes de usá-lo, porque ele não é referenciado automaticamente pelo Visual Studio.
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.Volume = 100;
ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav");
ss.Speak("Hello World");
Espero que isso é relevante e útil.
Outras dicas
E, como eu encontrei para saber como alterar o formato de saída, nós código algo como isto:
SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
//Same code comes here
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info);
Isso é muito fácil e compreensível.
Cool .net
Esta é do jogo por alguns instantes, de modo caveat.emptor. Funcionou bem para mim. Eu notei que SpFileStream (que não implementa IDisposable, portanto, o try / finally) prefere caminhos absolutos para relativos. 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();
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow