2010-04-12 16 views
4

Mon application C# doit convertir le texte en fichier wav et l'injecter dans un appel Skype. Le code qui crée le fichier wav est ci-dessous. Le problème est que le fichier a une fréquence d'échantillonnage de 22kHz et que Skype n'accepte que 16kHz.SpeechSynthesizer en C# crée wav qui a 22kHz ... doit être 16kHz

Y a-t-il un moyen de régler ce paramètre?

using (System.IO.FileStream stream = System.IO.File.Create("message.wav")) 
{ 

System.Speech.Synthesis.SpeechSynthesizer speechEngine = new System.Speech.Synthesis.SpeechSynthesizer(); 

speechEngine.SetOutputToWaveStream(stream); 
speechEngine.Speak(number); 
stream.Flush(); 
} 

Répondre

4

SetOutputToWaveFile() a une surcharge qui accepte un paramètre SpeechAudioFormatInfo, qui peut être utilisé pour régler la fréquence d'échantillonnage. Ne pas en voir un pour SetOutputToWaveStream(), bizarrement, mais puisque vous écrivez dans un fichier de toute façon, cela devrait fonctionner.

Modifier:

Comme @Hans souligne, la surcharge est correcte SetOutputToAudioStream() d'écrire dans un cours d'eau.

+1

SetOutputToAudioStream() est l'alternative. –

+0

@Hans, Ahh, je vois. Bizarre qu'ils ne soient pas cohérents dans leur dénomination ... 'SetOutputToAudioFile()' pour le format non wave, ou un 'SetOutputToWaveStream()' surchargé. Réponse mise à jour :) – Tanzelax

+0

Solution parfaite. J'ai mes fichiers wav dans le bon format! – screenshot345