我怎样才能用Naudio c#使声音变大?
我正在尝试增加代码中声波的幅度.我的缓冲区由制造波浪的所有字节组成. 这是我的音频播放的代码: public void AddSamples(byte[] buffer) { //somehow adjust the buffer to make the sound louder bufferedWaveProvider.AddSamples(buffer, 0, buffer.Length); WaveOut waveout = new WaveOut(); waveout.Init(bufferedWaveProvider); waveout.Play(); //to make the program more memory efficient bufferedWaveProvider.ClearBuffer(); } 解决方案 您可以转换为ISampleProvider,然后尝试通过以增益> 1.0传递
18 2024-04-22
编程技术问答社区
使用C#的NAudio播放正弦波x毫秒
我正在使用 naudio 播放一个给定频率的正弦波a href =" http://mark-dot-net.blogspot.com/2009/10/playback-of-sine-wave-in-naudio.html" rel =" noreferrer"> naudio中的Sine Wave的播放 .我只想让x毫秒的声音播放(),然后停止. 我尝试了一个线程.我尝试了一个计时器,但是当挥发器处置时,会有一个跨线程异常. 我尝试了此代码,但是当我调用哔哔声冻结时. public class Beep { public Beep(int freq, int ms) { SineWaveProvider32 sineWaveProvider = new SineWaveProvider32(); sineWaveProvider.Amplitude = 0.25f; sineWaveProvider.F
12 2024-04-13
编程技术问答社区
从原始波形数据中检测出一个特定的频率/音调
我正在阅读来自麦克风的原始波流. (此部分可以将其发送给扬声器并获得一个不错的回声.) 为简单起见,我想在波数据中检测DTMF-TONE.实际上,我想检测到任何频率,而不仅仅是DTMF中的频率.但是我总是知道我要寻找的频率. 我已经尝试通过FFT运行它,但是如果我想在检测中高精度,它似乎并不有效(例如,它仅持续20毫秒).我可以将其检测到200毫秒左右的精度. 我对算法有什么选择? 有任何.net libs吗? 解决方案 您可能想查看 goertzel algorithm 检测特定频率,例如DTMF输入.有一个 c#dtmf generator/detator/detector sourceforge上的库基于此算法. 其他解决方案 Goertzel的实现非常好是在那里. C#修改: private double GoertzelFilter(float[] samples, double freq, int start, int end)
6 2024-04-11
编程技术问答社区
boto3 S3对象解析
我正在尝试编写一个python脚本,以处理存储在S3上的音频数据. 我有一个S3对象,我正在使用 来调用该对象 def grabAudio(filename, directory): obj = s3client.get_object(Bucket=bucketname, Key=directory+'/'+filename) return obj['Body'].read() 使用 访问数据 print(obj['Body'].read()) 产生正确的音频信息.因此,它可以从存储桶中访问数据. 当我尝试在音频处理库(PYDUB)中使用此数据时,它会失败: audio = AudioSegment.from_wav(grabAudio(filename, bucketname)) Traceback (most recent call last): File "split_audio.py", line 38, in
24 2024-04-05
编程技术问答社区
如何用Python正确解码.wav
我正在编码Wave Audio文件的基本频率分析,但是我在转换为整数方面遇到了麻烦. 这是我代码的相关部分: import wave track = wave.open('/some_path/my_audio.wav', 'r') byt_depth = track.getsampwidth() #Byte depth of the file in BYTES frame_rate = track.getframerate() buf_size = 512 def byt_sum (word): #convert a string of n bytes into an int in [0;8**n-1] return sum( (256**k)*word[k] for k in range(len(word)) ) raw_buf = track.readframes(buf_size) ''' One frame is a string of n bytes
14 2024-04-05
编程技术问答社区
如何将Numpy数组波形转换为类似WAV文件的对象?
我想将numpy数组波形转换为一个类似WAV的对象,以便我可以将其上传到S3,而无需保存波形以在本地归档.想象一下我有一个numpy阵列波形,y, y, sr = librosa.load('something.wav', sr = 44100) 如何使用boto3's upload_fileobj方法转换为wav文件样对象y上传到S3? 根据boto3文档,类似文件的对象必须具有属性: 类似文件的对象上传.至少必须实现读取 方法,并且必须返回字节. 这就是我想上传类似文件的对象的方式: import boto3 s3 = boto3.resource('s3') bucket = s3.Bucket('mybucket') # with open('filename', 'rb') as data: # bucket.upload_fileobj(data, 'mykey') bucket.upload_fileobj(wav_object,
6 2024-04-03
编程技术问答社区
通过ajax传递Blob,生成一个文件
我正在尝试捕获AudioreCorder( https://github.com/cwilso/cwilso/audiorecorder )并通过ajax a php文件发送斑点,该文件将接收斑点内容并创建文件(在这种情况下为Wave文件). ajax调用: audioRecorder.exportWAV(function(blob) { var url = (window.URL || window.webkitURL).createObjectURL(blob); console.log(url); var filename = ; $.ajaxFileUpload({ url : "lib/vocal_render.php", secureuri :false, dataType : blob.type,
12 2024-04-01
编程技术问答社区
将.wav文件转换为二进制文件,然后再转换为.wav?
我正在Java进行一个项目,这需要我加密波浪文件.那么,是否有直接的过程将波浪文件转换为二进制和返回?我将在二进制数据上应用加密算法. 解决方案 是. File file = new File("music.wav"); byte[] data = new byte[file.length()]; FileInputStream in = new FileInputStream(file); in.read(data); in.close(); //encrypt data FileOutputStream out = new FileOutputStream(file); out.write(data); out.close(); 当然,假设您播放数据后仍然是有效的WAV文件. 其他解决方案 大多数语言都有用实用程序以二进制模式读写文件.如果您碰巧在Linux系统上,则与字符模式相同.无论如何,这不是"转换"到二进制的问题,而只是读取它的另一种方法.
40 2024-03-30
编程技术问答社区
AVAudioPlayer拒绝播放任何东西,但没有错误,等等。
这是最简单的Avaudioplayer代码,它只是无法播放任何内容.没有错误,根本没有任何错误,肯定会发现该文件,好像我将URL字符串更改为不存在的东西一样,我确实会崩溃.我在这里做错了什么?我已经尝试过有或没有代表,以及有没有准备性的,我无法做到任何东西.我也尝试了各种声音文件.真的把我的头发撕下来! @implementation ViewController - (IBAction)playSound:(id)sender { NSURL *soundLocation = [[NSURL alloc] initWithString:@"Lot01.wav"]; AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundLocation error:nil]; [audioPlayer setDelegate:self]; [audioPlaye
8 2024-03-21
编程技术问答社区
在Python中同时录制麦克风的音频并播放其效果
我的目标是通过笔记本电脑麦克风记录我的声音,并同时在Python中添加效果.我需要的是类似于连接吉他或麦克风的音乐效果踏板,它添加了混响,回声或失真等. 我正在使用" Pyaudio"和" Wave"录制和播放音频.使用'scikits.audiolab'将音频导入数组,并能够使用诸如倒置,剪辑,瓷砖等功能的功能编辑此数组.对音频阵列的操作使我可以"添加"效果. 我有问题,这并不是一个问题,这不是我想要的效果.假设我录制了" Hello"一词.我的记录功能设置为记录3秒.然后,我拿起此音频阵列,然后瓷砖一次.现在,当我回电时,它将两次打招呼,延迟效果.但是,两个hellos之间都有一个"空白空间"的时间间隔,这是因为在我说打招呼之后,音频仍在录制.因此,当它重复时,单词之间存在太多空白空间.我想消除这个空的空间,以便播放更快地说你好. 我的老师建议穿线.他说,我应该录制,同时拿起前500个样本,说一个数字.他建议在录制时取500个样品并将其播放.我不太确定如何实施.
16 2024-03-19
编程技术问答社区
(Python wave模块) 不能在不影响播放速度的情况下改变音频采样率
我目前正在从事一个项目,其中包括使用PyGame在按钮上播放声音.由于我没有找到从应用程序中录制声音的好方法(我反复尝试了Pyaudio,但无法使用Portaudio),因此我被迫使用外部程序来录制音频. 我在Pyaudio混音器中导入的声音的采样率为44,1 kHz,而该程序的录制声音为48 kHz. 这是一个问题: 当我录制音频时,一切都很好,但是如果我想导入录制的文件以进一步使用它的播放效果要慢. 我发现这是因为采样率,并且由于我只能使用Pyaudio Mixer设置一个采样率,因此我决定尝试使用此代码将新文件的采样率重新修改为44,1 kHz: import wave spf = wave.open('C:\Users\mavri\Desktop\My Recordings\zvuk.wav', 'rb') CHANNELS = spf.getnchannels() swidth = spf.getsampwidth() R
20 2024-03-19
编程技术问答社区
Android如何将字节写入wav文件
我从WAV文件中获取数据,并希望将字节写回WAV. 我已经从wav中获得了字节.在这里是我的代码 我知道0-43字节是标题,44个是数据 byte[] soundBytes; try { InputStream inputStream = new FileInputStream(getRealPathFromURI(this,uri)); soundBytes = toByteArray(inputStream); for (int i = 0; i != -1 ; i++) { if(soundBytes[i]
36 2024-03-19
编程技术问答社区
如何用自定义的频率音/波创建.wav文件?
我的波生成器有问题.我正在尝试创建一个具有给定频率的.WAV文件.我使用的代码: $freqOfTone = 21000; $sampleRate = 44100; $samplesCount = 80000; $amplitude = 0.25 * 32768; $w = 2 * pi() * $freqOfTone / $sampleRate; for ($n = 0; $n samples[1][] = 32768 + (int)($amplitude * sin($n * $w)); } 不幸的是,输出波不正确,我几乎没有一个频率,而不是一个: http:http://i49. tinypic.com/ab1nx0.png 应该像这样: http://i50.tinypic.com/33zbslk.png 我在哪里做错了什么? :( 解决方案 鉴于该采样率,所需频率太接近
10 2024-03-19
编程技术问答社区
Python 3:将波数据(字节阵列)转换为浮点值的numpy阵列
我的目标是将波浪数据(从Wave模块中读取.wav文件)为numpy阵列. 当前,数据格式为字节数组.这意味着字节阵列的每个元素宽度为8位. WAV文件是单声道,因此仅包含1个通道.但是,大多数WAV文件都是立体声的,因此,将数据格式化为左右通道的样本序列. 样品为16位,因此阵列中的每对顺序字节为1" 16位"样本.某些音频文件是每个样本24位.可以从 获得每个样品的位数 len(bytearray) // (wave.getnframes() * wave.getnchannels()) 所以我需要以某种方式 将字节组成成对的字节(样本) 将字节的对复制到一些新的存储空间,并带有"大步".对于Mono步幅= 0?对于立体声而言,大步大概是1? (这取决于python在内存中的计数) 将新存储转换为numpy数组 在某个时候,从16位签名的整数格式转换为浮点格式,可以在该过程的任何阶段完成 我可以使用用于循环和索引的C ++样式解决方案.我认为这
24 2024-03-19
编程技术问答社区
Python Wave的字节数据
我正在尝试从.wav文件读取数据. import wave wr = wave.open("~/01 Road.wav", 'r') # sample width is 2 bytes # number of channels is 2 wave_data = wr.readframes(1) print(wave_data) 这给出了: b'\x00\x00\x00\x00' 这是歌曲的"第一帧".这4个字节显然对应于(2个通道 * 2个字节样品宽度)每个框架的字节,但是每个字节对应于什么? 特别是,我正在尝试将其转换为单声振幅信号. 解决方案 如果您想了解"框架"是什么,则必须读取波浪文件格式的标准.例如:来自该文档: 即将"播放"的样品点,同时发送到模拟转换器(DAC)的样本点共同称为样本帧.在我们的立体声波形的示例中,每两个示例构成另一个样本框架.下面为该立体声示例说明了这一点. sample sample
18 2024-03-19
编程技术问答社区
如何转换一个wav文件->类字节对象?
我正在尝试使用Python 3.5.1的AudiOop模块进行编程分析WAV文件,以获取频道,持续时间,采样率,量等.但是,我找不到任何文档来描述如何将WAV文件转换为'片段的参数必须是一个字节样的对象. 有人可以帮忙吗? 解决方案 file.read.eard.eard()返回A 对象,因此,如果您只是想将文件的内容作为bytes>,那么以下内容就足够了: with open(filename, 'rb') as fd: contents = fd.read() 但是,由于您正在使用 audioop ,您需要的是RAW 音频数据,而不是原始文件内容.尽管未压缩的WAV包含原始音频数据,但它们还包含标题,这些标头告诉您有关原始音频的重要参数.另外,这些标头不能被视为原始音频. 您可能想使用 wave wave 模块来解析Wav文件并获取WAV文件并获取到他们的原始音频数据.一个完整的示例,将WAV文件中的音频逆转如下: import wave
4 2024-03-19
编程技术问答社区
使用Naudio将每个WAV通道保存为单通道WAV文件
我正在尝试将WAV文件(PCM,48kHz,4通道,16位)转换为单渠道WAV文件. 我尝试将wav文件分配到这样的4个字节阵列中,例如答案并创建了一个wavememorystream,如下所示,但不起作用. byte[] chan1ByteArray = new byte[channel1Buffer.Length]; Buffer.BlockCopy(channel1Buffer, 0, chan1ByteArray, 0, chan1ByteArray.Length); WaveMemoryStream chan1 = new WaveMemoryStream(chan1ByteArray, sampleRate, (ushort)bitsPerSample, 1); 我是否缺少创建波浪标头的东西?还是有更多的 WAV进入单通道WAV文件? 解决方案 基本思想是源波文件包含交错的样品.一个用于第一个频道,一个用于第二个频道,依此类推.这是一些未经测试的示例代
22 2024-03-19
编程技术问答社区
C++-回放由正弦波产生的音调
大家好,我目前正在尝试弄清楚如何使用正弦波产生的音调. 这是我的代码: #include #include #include #include using namespace std; int main (int argc, char * const argv[]) { int number = 0; int i, size; double const Pi=4*atan(1); cout
12 2024-03-19
编程技术问答社区
如何将wav文件转换为浮动振幅
所以我问了标题中的所有内容: 我有一个WAV文件(由Pyaudio从输入音频撰写),我想在浮点数据中转换声级(振幅)以进行一些傅立叶变换等... ... 有人想将WAV数据转换为float? 解决方案 我已经确定了这样做的两种不错的方法. 方法1:使用波文件模块 如果您不介意安装一些额外的库,请使用此方法,这些库在我的Mac上涉及一些混乱,但在我的Ubuntu服务器上很容易. https://github.com/vokimon/vokimon/python/python-wavefile import wavefile # returns the contents of the wav file as a double precision float array def wav_to_floats(filename = 'file1.wav'): w = wavefile.load(filename) return w[1][
12 2024-03-19
编程技术问答社区
用python从TIMIT数据库读取WAV文件
我正在尝试从Python的Timit数据库中读取WAV文件,但我会遇到错误: 当我使用wave时: wave.Error: file does not start with RIFF id 当我使用scipy时: ValueError: File format b'NIST'... not understood. 当我使用天秤座时,该程序被卡住了. 我尝试使用Sox将其转换为WAV: cmd = "sox " + wav_file + " -t wav " + new_wav subprocess.call(cmd, shell=True) ,这无济于事.我看到一个旧答案引用了scikits.audiolab,但看起来不再支持. 如何读取这些文件以获取数据的ndarray? 谢谢 解决方案 您的文件不是WAV文件.显然,这是一个NIST SPHERE文件.来自 LDC网页: LDC Corpora以NIST SPHERE格式包含语音
14 2024-03-19
编程技术问答社区