Je veux modifier un fichier WAV en 8 kHz et 8 bits à l'aide de Naudio. mais lorsque je joue au fichier de sortie, le son n'est que sizzle. Mon code est-il correct ou ce qui ne va pas? P> Si je définis les formats d'onde sur WaveFormat (44100, 16, 1), cela fonctionne bien. P> Merci. P> P>
3 Réponses :
Quelques pointeurs:
Voici un exemple de code indiquant comment convertir d'un format à un autre. N'oubliez pas que vous devrez peut-être faire la conversion en plusieurs étapes en fonction du format de votre fichier d'entrée: P>
using (var reader = new WaveFileReader("input.wav"))
{
var newFormat = new WaveFormat(8000, 16, 1);
using (var conversionStream = new WaveFormatConversionStream(newFormat, reader))
{
WaveFileWriter.CreateWaveFile("output.wav", conversionStream);
}
}
Mark - Pourriez-vous élargir un peu les détails de la rédaction de la rédaction? Quelle est la raison d'utiliser un filtre ChebysHev (par opposition à Butterworth ou à un autre type de passe-passe, par exemple)? Lorsque vous descendez, faites-vous défaire, ou appliquez-vous une moyenne entre des échantillons?
Le code suivant a résolu mon problème avec G.711 MU-Law avec une extension de fichier VOX au fichier WAV. J'ai continué à obtenir une erreur "No Riff en-tête" avec WaveFilereader Différemment.
FileStream fileStream = new FileStream(fileName, FileMode.Open);
var waveFormat = WaveFormat.CreateMuLawFormat(8000, 1);
var reader = new RawSourceWaveStream(fileStream, waveFormat);
using (WaveStream convertedStream = WaveFormatConversionStream.CreatePcmStream(reader))
{
WaveFileWriter.CreateWaveFile(fileName.Replace("vox", "wav"), convertedStream);
}
fileStream.Close();
openFileDialog openFileDialog = new openFileDialog();
openFileDialog.Filter = "Wave Files (*.wav)|*.wav|All Files (*.*)|*.*";
openFileDialog.FilterIndex = 1;
WaveFileReader reader = new NAudio.Wave.WaveFileReader(dpmFileDestPath);
WaveFormat newFormat = new WaveFormat(8000, 16, 1);
WaveFormatConversionStream str = new WaveFormatConversionStream(newFormat, reader);
try
{
WaveFileWriter.CreateWaveFile("C:\\Konvertierten_Dateien.wav", str);
}
catch (Exception ex)
{
MessageBox.Show(String.Format("{0}", ex.Message));
}
finally
{
str.Close();
}
MessageBox.Show("Konvertieren ist Fertig!");
}