Tag: naudio

NAudio Asio录制和播放

我正在尝试编写自己的VST主机,为此我需要录制和播放Asio驱动程序的音频(在我的情况下是音频接口)。 这就是我试图使用NAudio的AsioOut的原因。 出于测试目的,我目前只是尝试记录输入,复制并将其播放到输出。 我的代码如下所示: var asioout = new AsioOut(); BufferedWaveProvider wavprov = new BufferedWaveProvider(new WaveFormat(44100, 2)); asioout.AudioAvailable += new EventHandler(asio_DataAvailable); asioout.InitRecordAndPlayback(wavprov, 2, 25); asioout.Play(); … void asio_DataAvailable(object sender, AsioAudioAvailableEventArgs e) { Array.Copy(e.InputBuffers, e.OutputBuffers, e.InputBuffers.Length); e.WrittenToOutputBuffers = true; } 这样我听不到任何输出。 我也这样试过: void asio_DataAvailable(object sender, AsioAudioAvailableEventArgs e) { byte[] buf = new byte[e.SamplesPerBuffer]; for (int i = […]

记录5秒后,NAudio记录缓冲区已满

我正在使用从麦克风录制的Visual C#Studio制作程序。 我希望录制几分钟,但是当我尝试录制时,它会在录制5秒钟后显示“缓冲区已满”错误。 这是我正在使用的代码: private void button2_Click(object sender, EventArgs e) //Play Button { fileName = “lastReplay.wav”; FileStream FS_Write = File.OpenWrite(“lastReplay.wav”); FS_Write.Close(); int deviceNumber = sourceList.SelectedItems[0].Index; sourceStream = new NAudio.Wave.WaveIn(); sourceStream.DeviceNumber = deviceNumber; sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(deviceNumber).Channels); NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream); sourceStream.DataAvailable += new EventHandler (sourceStream_DataAvailable); waveWriter = new NAudio.Wave.WaveFileWriter(fileName, sourceStream.WaveFormat); sourceStream.StartRecording(); } private […]

WaveMixerStream32和IWaveProvider

有没有办法让NAudio将WaveMixerStream32与WaveProviders链接,而不是WaveStreams? 我正在使用BufferedWaveProvider传输多个网络流。 似乎没有一种简单的方法将其转换为WaveStream。 干杯! 卢克

Lex chatbot C#client with voice

我有聊天机器人客户端运行文本但现在想将其更改为语音,但我不知道如何从麦克风获取流发布。 为了录制音频我正在使用NAudio但是在发送内存流时我得到一个错误说明 System.IO.IOException:在写入所有字节之前无法关闭流。 这是我的代码: private void recordAudio() { if (memoryStream == null) memoryStream = new MemoryStream(); sourceStream = new NAudio.Wave.WaveIn(); sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(16000, 1); waveIn = new NAudio.Wave.WaveInProvider(sourceStream); waveWriter = new WaveFileWriter(new IgnoreDisposeStream(memoryStream), waveIn.WaveFormat); sourceStream.DataAvailable += new EventHandler(sourceStream_DataAvailable); buff = new BufferedWaveProvider(waveIn.WaveFormat); sourceStream.StartRecording(); mytimer.Enabled = true; } private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { […]

NAudio使用C#播放正弦波x毫秒

我正在使用NAudio播放给定频率的正弦波,如在博客文章中播放的Nir的Sine Wave 。 我只想让声音播放()x毫秒然后停止。 我尝试了一个thread.sleep,但声音立即停止。 我尝试了一个计时器,但是当处理WaveOut时,会出现一个跨线程exception。 我尝试了这段代码,但是当我打电话给哔哔声时,程序冻结了。 public class Beep { public Beep(int freq, int ms) { SineWaveProvider32 sineWaveProvider = new SineWaveProvider32(); sineWaveProvider.Amplitude = 0.25f; sineWaveProvider.Frequency = freq; NAudio.Wave.WaveOut waveOut = new NAudio.Wave.WaveOut(WaveCallbackInfo.FunctionCallback()); waveOut.Init(sineWaveProvider); waveOut.Play(); Thread.Sleep(ms); waveOut.Stop(); waveOut.Dispose(); } } public class SineWaveProvider32 : NAudio.Wave.WaveProvider32 { int sample; public SineWaveProvider32() { Frequency = 1000; Amplitude […]

AlreadyAllocated调用waveOutOpen错误

private void receiveAudio(object sender) { IPEndPoint senderEP = new IPEndPoint(IPAddress.Any, 0); MemoryStream audioDataStream; BufferedWaveProvider bufferedWaveProvider; //RawSourceWaveStream receivedRawAudioData; byte[] receivedAudioData; waveOutStream = new WaveOut(); while (IsAudioTransferActive) { receivedAudioData = audioUDPClient.Receive(ref senderEP); audioDataStream = new MemoryStream(receivedAudioData); //receivedRawAudioData = new RawSourceWaveStream(audioDataStream, audioFormat); bufferedWaveProvider = new BufferedWaveProvider(audioFormat); //How can I feed “audioDataStream ” to “bufferedWaveProvider ” waveOutStream.Init(bufferedWaveProvider); waveOutStream.Play(); } […]

NAudio错误:“NoDriver调用acmFormatSuggest”

我有一个使用NAudio从mp3转换为wav的项目。 (使用WaveFormatConversionStream.CreatePcmStream()方法) 它在我的开发机器上工作正常,但现在我在一个新的服务器上尝试它并抛出这个错误: NAudio.MmException:NoDriver调用acmFormatSuggest 在NAudio.MmException.Try(MmResult结果,字符串函数) at NAudio.Wave.Compression.AcmStream.SuggestPcmFormat(WaveFormat compressedFormat) 在NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(WaveStream sourceStream) 我假设NAudio需要一些不在新服务器上的依赖。 它是什么,我应该从哪里安装它? Server是一个新设置的Amazon EC2 Windows 2008 32位实例,安装了“Web服务器”和“应用服务器”角色。

使用NAudio解码mu-law音频

我正在尝试使用NAudio将mu-law编码音频解码为pcm音频。 我的服务是POST原始mu-law编码的音频字节,我从NAudio得到一个错误,数据没有RIFF标题。 我需要以某种方式添加它吗? 我正在使用的代码是: WaveFileReader reader = new WaveFileReader(tmpMemStream); using (WaveStream convertedStream = WaveFormatConversionStream.CreatePcmStream(reader)) { WaveFileWriter.CreateWaveFile(recordingsPath + “/” + outputFileName, convertedStream); } 我也将原始数据保存到磁盘并在Matlab中进行解码,这没有问题。 谢谢。

记录来自NAudio WaveIn的输入,并输出到NAudio WaveOut

我希望能够通过NAudio.WaveIn从麦克风设备获取输入,然后通过NAudio.WaveOut将精确输入输出到输出设备。 我该怎么办?

褪色声音输入/输出

我有一个无限循环播放的背景声音。 当用户按下按钮时我希望它淡出。 我尝试了以下方法: 使用WaveStream启动DirectSoundOut 计时器会更改WaveChannel32的音量。 问题: 在播放声音时改变音量会产生噪音。 有谁知道更好的解决方案?