Je dois transformer un texte en discours, puis l'enregistrer en tant que fichier wav.Comment enregistrer la synthèse vocale sous forme de fichier avec Microsoft SAPI?
Répondre
Le code C# suivant utilise l'espace de noms System.Speech dans l'infrastructure .Net. Il est nécessaire de référencer l'espace de nom avant de l'utiliser, car il n'est pas automatiquement référencé par Visual Studio.
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.Volume = 100;
ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav");
ss.Speak("Hello World");
J'espère que c'est pertinent et utile.
Ceci est à partir de quelques instants, donc caveat emptor. Travaillé bien pour moi. J'ai remarqué que SpFileStream (qui n'implémente pas IDisposable, donc try/finally) préfère les chemins absolus à relatif. 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();
}
}
Merci pour vos efforts. – Tarik
Et comme je l'ai trouvé sur la façon de changer le format de sortie, on code quelque chose comme ceci:
SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
//Same code comes here
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info);
C'est assez facile et compréhensible.
Cool .net
Salut, avant que j'ai besoin d'importer une DLL, parce que System.Speech n'est pas disponible dans mon projet, même si j'ai ajouté en utilisant "using System.Speech". – Tarik
@Mackenzie: c'est une meilleure réponse que la mienne, car elle utilise des classes natives .net plutôt que de se moquer de COM. –
@atarikg: référence l'assembly System.Speech. –