c# - 在 NAudio 的内存流中将格式从 wav 更改为 mp3

标签 c# asp.net audio naudio

您好,我正在尝试将内存流中的文本转换为语音 (wav),将其转换为 mp3,然后在用户页面上播放。所以需要我帮助下一步做什么吗?

这是我的 asmx 代码:

[WebMethod]
public byte[] StartSpeak(string Word)
{
    MemoryStream ms = new MemoryStream();
    using (System.Speech.Synthesis.SpeechSynthesizer synhesizer = new System.Speech.Synthesis.SpeechSynthesizer())
    {
        synhesizer.SelectVoiceByHints(System.Speech.Synthesis.VoiceGender.NotSet, System.Speech.Synthesis.VoiceAge.NotSet, 0, new System.Globalization.CultureInfo("en-US"));
        synhesizer.SetOutputToWaveStream(ms);
        synhesizer.Speak(Word);
    }
    return ms.ToArray();

    }

谢谢。

最佳答案

只是想使用 NAudio.Lame 发布我的示例:

NuGet:

Install-Package NAudio.Lame

代码片段:我的显然返回一个 byte[] - 我有一个单独的保存到磁盘方法 b/c 我认为它使单元测试更容易。

public static byte[] ConvertWavToMp3(byte[] wavFile)
        {

            using(var retMs = new MemoryStream())
            using (var ms = new MemoryStream(wavFile))
            using(var rdr = new WaveFileReader(ms))
            using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, 128))
            {
                rdr.CopyTo(wtr);
                return retMs.ToArray();
            }


        }

关于c# - 在 NAudio 的内存流中将格式从 wav 更改为 mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058530/

相关文章:

c# - 什么可以用作双面资源词典?

c# - 如何检查我在 Web 应用程序中是处于调试版本还是发布版本?

iphone - 录制的音频文件

c# - 顺序工作流出现在 "ignore"其子事件

C# UML 类图

asp.net - asp.net如何在tablecell中添加新表

c# - LINQ To Entities 包含不区分大小写的搜索

python - pygame-永久调整主音量

c# - 如何组装 WAV 文件?

c# - 在 DataGrid 中更改页面索引后,全局变量将失去其值