您会推荐哪种C/C++ DSP库?我需要它用于实时嵌入式系统.伴随声音信号处理也很棒,但不是强制性的.如果您对任何DSP库有所了解,请分享.
我正在读取来自麦克风的原始波流.
(这部分可以正常工作,因为我可以将它发送到扬声器并获得良好的回声.)
为简单起见,我想要检测波形数据中的DTMF音调.实际上我想检测任何频率,而不仅仅是DTMF中的频率.但我总是知道我要找的频率.
我试过通过FFT运行它,但如果我想要高精度的检测(例如它只有20毫秒),它似乎不是很有效.我可以将其检测到大约200毫秒的精度.
关于算法,我有哪些选择?它有任何.Net库吗?
我有几分钟的.wav文件,我想分成不同的10秒.wav文件.
到目前为止这是我的python代码:
import wave
import math
def main(filename, time):
read = wave.open(filename, 'r')
#get sample rate
frameRate = read.getframerate()
#get number of frames
numFrames = read.getnframes()
#get duration
duration = numFrames/frameRate
#get all frames as a string of bytes
frames = read.readframes(numFrames)
#get 1 frame as a string of bytes
oneFrame = read.readframes(1)
#framerate*time == numframesneeded
numFramesNeeded=frameRate*time
#numFramesNeeded*oneFrame=numBytes
numBytes = numFramesNeeded*oneFrame
#splice frames to get a list strings each representing a 'time' length
#wav file
x=0
wavList=[]
while x+time<=duration:
curFrame= …
Run Code Online (Sandbox Code Playgroud) 我有一个2秒16位单通道8khz wav文件,我需要改变它的音量.
这应该是非常简单的,因为改变音量与改变信号的幅度是一样的,我只需要对它进行衰减,即将它乘以0到1之间的数字.但它不起作用:新的声音较低,但非常充满噪音.我究竟做错了什么?
这是我的代码:
import wave, numpy, struct
# Open
w = wave.open("input.wav","rb")
p = w.getparams()
f = p[3] # number of frames
s = w.readframes(f)
w.close()
# Edit
s = numpy.fromstring(s, numpy.int16) * 5 / 10 # half amplitude
s = struct.pack('h'*len(s), *s)
# Save
w = wave.open("output.wav","wb")
w.setparams(p)
w.writeframes(s)
w.close()
Run Code Online (Sandbox Code Playgroud)
感谢你们!
我必须在不使用任何外部python库的情况下将wav文件从44100Hz下采样到16000Hz,因此最好wave
和/或audioop
.我尝试使用setframerate
函数将wav文件帧速率更改为16000 但这只会减慢整个录制速度.如何将音频文件下采样到16kHz并保持相同的音频长度?
非常感谢你提前
我x
通过以下方式为变量赋值:
import wave
w = wave.open('/usr/share/sounds/ekiga/voicemail.wav', 'r')
x = w.readframes(1)
Run Code Online (Sandbox Code Playgroud)
当我输入x时,我得到:
'\x1e\x00'
Run Code Online (Sandbox Code Playgroud)
所以x
得到了一个价值.但那是什么?它是十六进制的吗?type(x)
并type(x[0])
告诉我,x
和x[0]
一个字符串.任何人都可以告诉我应该如何解释这个字符串?我可以将它们转换为整数吗?
我想在三维空间中模拟一些具有吸收和反射的传播波.我想用python做.我应该使用numpy吗?我应该使用一些特殊的库吗?
我该如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思怎么办?有更好的方法吗?我应该用矢量吗?但是当光线发散时,强度会降低.难.
提前致谢.
我正在开发iPhone上的一个项目,我正在使用AVAudioRecorder从设备麦克风录制音频,然后将操作录制.
为了确保我正确地读取文件中的样本,我使用python的波形模块来查看它是否返回相同的样本.
但是,当尝试打开由AVAudioRecorder保存的wav文件时,python的wave模块返回"fmt chunk和/或data chunk missing".
这些是我用来记录文件的设置:
[audioSettings setObject:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[audioSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[audioSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[audioSettings setObject:[NSNumber numberWithFloat:4096] forKey:AVSampleRateKey];
[audioSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[audioSettings setObject:[NSNumber numberWithBool:YES] forKey:AVLinearPCMIsNonInterleaved];
[audioSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
Run Code Online (Sandbox Code Playgroud)
之后,我只是打电话给recordForDuration来实际录音.
录音成功 - 我可以播放文件等,我可以使用AudioFile服务读取示例,但我无法验证它,因为我无法使用Python的波形模块打开文件.
这是文件的前128个字节的样子:
1215N:~/Downloads$ od -c --read-bytes 128 testFile.wav
0000000 R I F F x H 001 \0 W A V E f m t
0000020 020 \0 \0 \0 001 \0 001 \0 @ 037 \0 \0 200 > \0 \0
0000040 …
Run Code Online (Sandbox Code Playgroud) 有没有人知道是否有好的软件可以执行从(波形或mp3或其他已知格式)到MIDI的转换?我知道从音频文件到MIDI的转换是一个非常复杂的过程.我目前正在为我的学士学位开发一个课程项目,需要操作MIDI文件.
如果你知道任何好的软件,我会接受建议.我更喜欢通过传递要转换的文件也可以从shell执行的软件.
任何帮助表示赞赏.
我尝试用wave
模块打开一个wave文件,但是无论我尝试什么,我都会遇到同样的错误.出错的行如下:
wav = wave.open(f)
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
Traceback (most recent call last):
File "annotate.py", line 47, in <module>
play(file)
File "annotate.py", line 33, in play
wav = wave.open(f)
File "C:\Program Files (x86)\Python\lib\wave.py", line 498, in open
return Wave_read(f)
File "C:\Program Files (x86)\Python\lib\wave.py", line 163, in __init__
self.initfp(f)
File "C:\Program Files (x86)\Python\lib\wave.py", line 143, in initfp
self._read_fmt_chunk(chunk)
File "C:\Program Files (x86)\Python\lib\wave.py", line 269, in _read_fmt_chunk
raise Error('unknown format: %r' % (wFormatTag,))
wave.Error: unknown format: 49
Run Code Online (Sandbox Code Playgroud)
String f
是.WAV文件的路径,在我的任何媒体播放器中播放时都可以使用.我当然导入了wave
模块.我试过f …