从 wav 流播放

Posted

技术标签:

【中文标题】从 wav 流播放【英文标题】:Playing from wav stream 【发布时间】:2020-03-26 10:08:25 【问题描述】:
            var result = service.Synthesize(

                text: text,
                accept: "audio/wav",

                voice: "en-US_AllisonVoice"
                //voice: "en-US_HenryV3Voice"

                );

            using (FileStream fs = File.Create(@"C:\Users\nkk01\Desktop\voice.wav"))

            
                result.Result.WriteTo(fs);
                fs.Close();
                result.Result.Close();
            

            var waveStream = new WaveFileReader(@"C:\Users\nkk01\Desktop\voice.wav");
            var waveOut = new WaveOutEvent();
            waveOut.Init(waveStream);

            Console.WriteLine("Playing");
            waveOut.Play();

            Console.WriteLine("Finished playing");

您好,这是我当前的代码,效率极低,因为它必须将音频流保存到文件中才能播放。我想使用 NAudio 库将音频流直接传递到笔记本电脑的扬声器。我仍然没有设法找到解决方案。会有很大帮助的,谢谢。

【问题讨论】:

【参考方案1】:

我不熟悉 naudio,但据我从他们的 git hub repo 中可以看出,WaveFileReader 的构造函数也接受流而不是文件名...

只需尝试将所有内容写入内存流而不是文件...不要忘记在读取内存流之前重新定位它('seek' to offset 0)

【讨论】:

以上是关于从 wav 流播放的主要内容,如果未能解决你的问题,请参考以下文章