2

我写了一个小应用程序,它接收一些文本并将其转换为音频 wav。现在,它工作正常,只是生成的 wav 文件太大。

我正在寻找使 wav 输出更小并使整个过程花费更少时间的方法。

示例代码:

 public byte[] ConvertText2Wav(string text)
    {
        MemoryStream wavAudioStream = new MemoryStream();            
        SpeechSynthesizer speechEngine = new SpeechSynthesizer();
        speechEngine.SetOutputToWaveStream(wavAudioStream);
        speechEngine.Speak(text);
        wavAudioStream.Flush();
        Byte[] wavBytes = wavAudioStream.GetBuffer();
        return wavBytes;  
    }
4

4 回答 4

4

.wav 输出未压缩。

如果您想要“更小”的输出,请使用适当的编解码器并对其进行压缩。

于 2009-12-13T22:50:22.263 回答
1

您可以使用 LAME MP3 编码器将 WAV 输出转换为 MP3。这将导致像 Anon 所说的更小的输出文件。

http://lame.sourceforge.net/

于 2009-12-13T22:53:20.970 回答
1

您应该使用专为语音构建的压缩编解码器以获得最大可能的好处。Speex 是免费且优秀的。您可以像这样从 c# 中使用它:http: //www.codeproject.com/KB/cs/speexincsharp.aspx

这将产生比通用或音乐编解码器更好的结果。

于 2009-12-13T23:04:48.923 回答
0

Wave 文件本身很长。例如,您应该通过编解码器将其作为电影的 XVID 或 MP3 或 OGG 的音频传递。

看看这个关于如何使用DirectShow的教程

于 2009-12-13T22:52:48.537 回答