从 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 流播放的主要内容,如果未能解决你的问题,请参考以下文章

从内存流播放 mp3/wav 文件到网页

使用 NAudio 从内存流中播放 .wma

使用 MediaPlayer 类从内存播放 WAV 文件

“播放”声音变成 .wav

如何从内存中播放 Wav 声音样本

使用java从jar作为资源播放.wav文件