优化下面代码:ile = 'MyDearest.wav' with wave.open(file, 'rb') as f: params = f.getparams() nchannels, sampwidth, framerate, nframes = f.getparams()[:4] str_data: bytes = f.readframes(nframes) # 将波形数据转换成数组格式 wave_data = np.fromstring(str_data, dtype=np.int16) # 将数组调整为左右声道 if nchannels == 2: wave_data.shape = -1, 2 wave_data = wave_data.T else: pass # 计算出采样周期对应的秒数 sample_duration = 1.0 / framerate # 计算出采样点数对应的时间长度 time_seq = np.arange(0, nframes) * sample_duration # 对音频波形数据进行快速傅里叶变换,得到频谱数据 freq_seq = np.fft.fftfreq(nframes, sample_duration) pidxs = np.where(freq_seq > 0) fft_freqs = freq_seq[pidxs] # 使用象限取反将FFT输出的第4象限移到第1象限,第3象限移到第2象限 fft_data = abs(np.fft.fft(wave_data))[pidxs] fft_data[100:]
时间: 2023-05-28 19:06:20 浏览: 57
可以优化如下:
file = 'MyDearest.wav'
with wave.open(file, 'rb') as f:
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes)
相关问题
ile = os.listdir(r'G:\lab_6') try: match = re.findall(r"(\d{10})_([\u4e00-\u9fa5]*)\)", file) student_id = match.group(1) name = match.group(2) print(student_id, name) except: print(file)
这段代码有一个问题,就是在调用`re.findall()`函数时使用的是`file`变量,但是该变量实际上应该是`files`变量,因为在前面使用`os.listdir()`函数获取文件名列表时使用的是`files`。另外,`re.findall()`函数返回的是一个包含所有匹配项的列表,因此需要使用循环来遍历列表中的每一项,然后再从每一项中提取学号和姓名信息。代码可以修改为以下形式:
```python
import os
import re
folder_path = r'G:\lab_6'
files = os.listdir(folder_path)
for file in files:
try:
match = re.findall(r"(\d{10})_([\u4e00-\u9fa5]*)\)", file)
if match:
student_id = match[0][0]
name = match[0][1]
print(student_id, name)
except:
print(file)
```
在正则表达式中,`(\d{10})`表示匹配10个数字,即学号,`([\u4e00-\u9fa5]*)`表示匹配一个或多个汉字,即姓名。`findall()`函数返回的是一个列表,每个元素都是一个元组,元组中包含的是每个捕获组的匹配结果。在这里,第一个捕获组是学号,第二个捕获组是姓名。因此,可以使用`match[0][0]`来获取学号,使用`match[0][1]`来获取姓名。
msyql 启动python: can't open f ile 'rusrisbin/qemu-ga_check.py '
这个错误提示与MySQL启动无关,它表明Python无法打开名为'rusrisbin/qemu-ga_check.py'的文件。可能是因为文件不存在或者文件路径不正确。请检查文件路径是否正确,或者确定文件是否存在。你也可以尝试使用绝对路径来打开文件。如果这个文件是MySQL启动脚本的一部分,请检查脚本中是否有正确的文件路径。