~/udp/recordings # ./speaker-test speaker-test 1.2.8 Playback device is default Stream parameters are 48000Hz, S16_LE, 1 channels Using 16 octaves of pink noise Rate set to 48000Hz (requested 48000Hz) Buffer size range from 46787517 to 70380 Period size range from 0 to 1024 Using max buffer size 70380 Periods = 4 was set period_size = 0 was set buffer_size = 16384 0 - Front Left Floating point exception
时间: 2024-02-14 15:33:07 浏览: 149
这是一个命令行工具speaker-test,用于测试音频设备。该命令提示了当前使用的播放设备是默认设备,音频参数为48000Hz采样率、S16_LE采样格式、1声道。同时,该命令会播放16个八度的粉红噪声。在这个例子中,系统给出了一个浮点溢出异常,可能是由于该音频设备无法正确地处理该音频信号导致的错误。如果你有类似的错误,你可以尝试调整缓冲区大小和周期大小来解决问题。
相关问题
import os from random import shuffle import pickle import librosa import tensorflow.keras as keras import librosa.display import numpy as np from pandas import Series from matplotlib import pyplot as plt def load_files(audio_dir): files = os.listdir(audio_dir) wav_files = [] for wav in files: if not wav.endswith('.wav'): continue wav_files.append(wav) if not wav_files: print('未找到数据集') shuffle(wav_files) nfiles = len(wav_files) ntrain = int(nfiles * 0.7) return wav_files[: ntrain], wav_files[ntrain:] andio_dir = '../data/recordings/' dataset_pickle = '../tmp/recordings.pk1' train_files, valid_files = load_files(andio_dir) print('训练集样本数为{}\n验证集样本数为{}'.format(len(train_files), len(valid_files))) wave, sr = librosa.load('../data/recordings/0_Agnes_120.wav') plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False librosa.display.waveshow(wave, sr=sr) plt.xlabel('时间(s)', fontsize = 13) plt.ylabel('振幅', fontsize = 13) plt.title('原始语音波形图', fontsize = 13) plt.show() mfcc = librosa.feature.mfcc(wave, sr) plt.imshow(np.flipud(mfcc.T), cmap=plt.cm.jet, aspect=0.2, 运行不出来热力图extent=[0, mfcc.shape[0], 0, mfcc.shape[1]]) plt.title('MFCC特征热力图') plt.show()
这段代码有一个拼写错误。在 `load_files` 函数中,您声明了函数参数为 `audio_dir`,但是在调用函数时拼写为 `andio_dir`,应该将其改为 `audio_dir`。
另外,在 `mfcc` 函数中,您没有指定 `n_mfcc` 参数,默认值为 `20`。如果您要使用默认值,可以忽略传递该参数,或者显式地指定为 `n_mfcc=20`。如果您要使用其他值,可以手动传递该参数,例如:
```python
mfcc = librosa.feature.mfcc(wave, sr, n_mfcc=40)
```
最后,在 `plt.imshow` 函数中,您将 `extent` 参数拆分成两行,应该将其合并为一行,即:
```python
plt.imshow(np.flipud(mfcc.T), cmap=plt.cm.jet, aspect=0.2, extent=[0, mfcc.shape[0], 0, mfcc.shape[1]])
```
import os from random import shuffle import pickle import librosa import tensorflow.keras as keras import librosa.display import numpy as np from matplotlib import pyplot as plt def load_files(audio_dir): files=os.listdir(audio_dir) wav_files=[] for wav in files: if not wav.endswith('.wav'): continue wav_files.append(wav) if not wav_files: print('未找到数据集') shuffle(wav_files) nfiles=len(wav_files) ntrain=int(nfiles*0.7) return wav_files[:ntrain],wav_files[ntrain:] audio_dir='../data/recordings/' dataset_pickle='../tmp/recordings.pkl' train_files,valid_files=load_files(audio_dir) print('训练集样本数为{}\n验证集样本数为{}'.format(len(train_files),load_files(valid_files)))帮我检查错误
这段代码中有两个问题:
1. 在函数 `load_files()` 中,`wav_files` 列表只会包含以 `.wav` 结尾的文件名,因为 `if not wav.endswith('.wav')` 和 `wav_files.append(wav)` 没有缩进到同一个代码块中。你需要将两行代码缩进到同一级别,才能正确的将所有 `.wav` 文件名添加到 `wav_files` 列表中。
2. 在 `print()` 函数中使用了 `load_files()` 函数调用的返回值,而 `load_files()` 函数返回的是两个列表类型的对象,因此会报错。你需要将 `len(load_files(valid_files))` 改为 `len(valid_files)` 才能正确输出验证集样本数。
下面是已经修改过后的代码:
```python
import os
from random import shuffle
import pickle
import librosa
import tensorflow.keras as keras
import librosa.display
import numpy as np
from matplotlib import pyplot as plt
def load_files(audio_dir):
files = os.listdir(audio_dir)
wav_files = []
for wav in files:
if not wav.endswith('.wav'):
continue
wav_files.append(wav)
if not wav_files:
print('未找到数据集')
shuffle(wav_files)
n_files = len(wav_files)
n_train = int(n_files * 0.7)
return wav_files[:n_train], wav_files[n_train:]
audio_dir = '../data/recordings/'
dataset_pickle = '../tmp/recordings.pkl'
train_files, valid_files = load_files(audio_dir)
print('训练集样本数为{}\n验证集样本数为{}'.format(len(train_files), len(valid_files)))
```
希望能帮到你!
阅读全文