导航:首页 > 编程语言 > python声音频域

python声音频域

发布时间:2022-06-29 22:03:03

python 如何实现发出特定频率的声音

你是想使用winsound库吗?
winsound.Beep(frequency, ration)

❷ python怎么接收声音(不是打开音频文件)

还是睡觉说点别的好

❸ python中音频图像识别和网页相关的库合集!

1、OpenCV

OpenCV是最常用的图像和视频识别库。毫不夸张地说,OpenCV能让Python在图像和视频识别领域完全替代Matlab。

OpenCV提供各种应用程序接口,同时它不仅支持Python,还支持Java和Matlab。OpenCV出色的处理能力使其在计算机产业和学术研究中都广受好评。

2、Librosa

Librosa是一个非常强大的音频和声音处理Python库。Librosa可以用来从音频段中提取各个部分,例如韵律,节奏以及节拍。

像Laplacia分割这样极度复杂的算法,在使用了Librosa之后只需几行代码就能轻而易举的运用。

Python在被广泛运用于数据科学领域前,曾经可是网页开发领域的宠儿。因此也有很多用于网页开发的库。

3、Django

要想使用Python来开发一个网页服务后端,Django一直都是不二之选。Django的设计理念便是,能用几行代码就建立一个网站的高级框架。

Django直接与大多数知名数据库相连,这样使用者就可以省下建立连接和数据模型开发的时间。Django的使用者只需专注于业务逻辑而不需担心受创建、更新、读取和删除(Create,update,retrieve and delete, CURD)的操控,因为Django是一个由数据库驱动的框架。

4、Flask

Flask是一个用于Python的轻量级网页开发框架。其最宝贵的特点是能够轻而易举地进行能够满足任何需求的定制化处理。

有很多提供网站UI的知名Python库和Python工具都是使用Flask构建的,例如Plotly Dash和Airflow。这些网站之所以使用Flask,正是由于其轻量级的特点。

诚然,还有许多优秀的Python库应当被提及,但上述这些库就足够你研究好一阵子了。人生苦短,及时Python!

更多python知识,请关注python视频教程!!

❹ PYTHON语言如何取到声音的频率(其他语言也可行)

先得到时域信号,然后做傅立叶变换,得到频谱。
感觉题主可能对python比较熟悉?那就别换语言了。稍微网络谷歌以下肯定能找到python的傅立叶变换的库。

❺ 怎么通过程序(如python)判断一个音频文件(如wav、mp3等格式)的声音清晰度

我用wpf画过wav的频谱图和语谱图,这里有个参考http://www.codeproject.com/Articles/488655/Visualizing-Sound
波形图应该更简单吧 计算声音强度就好了 至于mp3我想应该先解码成pcm

❻ python发声应该调用什么库和什么函数,该怎么处理

windows下python的标准库中有模块可以播放声音。linux下麻烦一些,要用第三方库。

❼ python 怎么录制系统声音不只是麦克风声音

#我可以帮你写一段代码,能够录音形成wav文件,不过要分析录音文件的波形,你可以另外找#工具,比如cooledit,也很方便。
from sys import byteorder
from array import array
from struct import pack

import pyaudio
import wave

THRESHOLD = 500
CHUNK_SIZE = 1024
FORMAT = pyaudio.paInt16
RATE = 44100

def is_silent(snd_data):
"Returns 'True' if below the 'silent' threshold"
return max(snd_data) < THRESHOLD

def normalize(snd_data):
"Average the volume out"
MAXIMUM = 16384
times = float(MAXIMUM)/max(abs(i) for i in snd_data)

r = array('h')
for i in snd_data:
r.append(int(i*times))
return r

def trim(snd_data):
"Trim the blank spots at the start and end"
def _trim(snd_data):
snd_started = False
r = array('h')

for i in snd_data:
if not snd_started and abs(i)>THRESHOLD:
snd_started = True
r.append(i)

elif snd_started:
r.append(i)
return r

# Trim to the left
snd_data = _trim(snd_data)

# Trim to the right
snd_data.reverse()
snd_data = _trim(snd_data)
snd_data.reverse()
return snd_data

def add_silence(snd_data, seconds):
"Add silence to the start and end of 'snd_data' of length 'seconds' (float)"
r = array('h', [0 for i in xrange(int(seconds*RATE))])
r.extend(snd_data)
r.extend([0 for i in xrange(int(seconds*RATE))])
return r

def record():
"""
Record a word or words from the microphone and
return the data as an array of signed shorts.

Normalizes the audio, trims silence from the
start and end, and pads with 0.5 seconds of
blank sound to make sure VLC et al can play
it without getting chopped off.
"""
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=1, rate=RATE,
input=True, output=True,
frames_per_buffer=CHUNK_SIZE)

num_silent = 0
snd_started = False

r = array('h')

while 1:
# little endian, signed short
snd_data = array('h', stream.read(CHUNK_SIZE))
if byteorder == 'big':
snd_data.byteswap()
r.extend(snd_data)

silent = is_silent(snd_data)

if silent and snd_started:
num_silent += 1
elif not silent and not snd_started:
snd_started = True

if snd_started and num_silent > 30:
break

sample_width = p.get_sample_size(FORMAT)
stream.stop_stream()
stream.close()
p.terminate()

r = normalize(r)
r = trim(r)
r = add_silence(r, 0.5)
return sample_width, r

def record_to_file(path):
"Records from the microphone and outputs the resulting data to 'path'"
sample_width, data = record()
data = pack('<' + ('h'*len(data)), *data)

wf = wave.open(path, 'wb')
wf.setnchannels(1)
wf.setsampwidth(sample_width)
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

if __name__ == '__main__':
print("please speak a word into the microphone")
record_to_file('demo.wav')
print("done - result written to demo.wav")

❽ 声线年龄层怎么划分

从EDA、音频预处理到特征工程和数据建模的完整源代码演示
大多数人都熟悉如何在图像、文本或表格数据上运行数据科学项目。 但处理音频数据的样例非常的少见。 在本文中,将介绍如何在机器学习的帮助下准备、探索和分析音频数据。 简而言之:与其他的形式(例如文本或图像)类似我们需要将音频数据转换为机器可识别的格式。
音频数据的有趣之处在于您可以将其视为多种不同的模式:
· 可以提取高级特征并分析表格数据等数据。
· 可以计算频率图并分析图像数据等数据。
· 可以使用时间敏感模型并分析时间序列数据等数据。
· 可以使用语音到文本模型并像文本数据一样分析数据。
在本文中,我们将介绍前三种方法。 首先看看音频数据的实际样子。

音频数据的格式

虽然有多个 Python 库可以处理音频数据,但我们推荐使用 librosa。 让我们加载一个 MP3 文件并绘制它的内容。
# Import librosa
import librosa
# Loads mp3 file with a specific sampling rate, here 16kHz
y, sr = librosa.load("c4_sample-1.mp3", sr=16_000)
# Plot the signal stored in 'y'
from matplotlib import pyplot as plt
import librosa.display
plt.figure(figsize=(12, 3))
plt.title("Audio signal as waveform")
librosa.display.waveplot(y, sr=sr);
这里看到的是句子的波形表示。
1、波形 - 信号的时域表示
之前称它为时间序列数据,但现在我们称它为波形? 当只看这个音频文件的一小部分时,这一点变得更加清晰。 下图显示了与上面相同的内容,但这次只有 62.5 毫秒。
我们看到的是一个时间信号,它以不同的频率和幅度在值 0 附近振荡。该信号表示气压随时间的变化,或扬声器膜(或耳膜)的物理位移 . 这就是为什么这种对音频数据的描述也称为波形的原因。
频率是该信号振荡的速度。 低频例如 60 Hz 可能是低音吉他的声音,而鸟儿的歌声可能是 8000 Hz 的更高频率。 我们人类语言通常介于两者之间。
要知道这个信号在单位时间内从连续信号中提取并组成离散信号的采样个数,我们使用赫兹(Hz)来表示每秒的采样个数。 16'000 或 16k Hz表示美标采集了16000次。 我们在上图中可以看到的 1'000 个时间点代表了 62.5 毫秒(1000/16000 = 0.0625)的音频信号。
2、傅里叶变换——信号的频域表示
虽然之前的可视化可以告诉我们什么时候发生了(即 2 秒左右似乎有很多波形信号),但它不能真正告诉我们它发生的频率。 因为波形向我们显示了有关时间的信息,所以该信号也被称为信号的时域表示。
可以使用快速傅立叶变换,反转这个问题并获得关于存在哪些频率的信息,同时丢弃掉关于时间的信息。 在这种情况下,信号表示被称为信号的频域表示。
让我们看看之前的句子在频域中的表现。
import scipy
import numpy as np
# Applies fast fourier transformation to the signal and takes absolute values
y_freq = np.abs(scipy.fftpack.fft(y))
# Establishes all possible frequency
# (dependent on the sampling rate and the length of the signal)
f = np.linspace(0, sr, len(y_freq))
# Plot audio signal as frequency information.
plt.figure(figsize=(12, 3))
plt.semilogx(f[: len(f) // 2], y_freq[: len(f) // 2])
plt.xlabel("Frequency (Hz)")
plt.show();
可以在此处看到大部分信号在 ~100 到 ~1000 Hz 之间(即 10² 到 10³ 之间)。 另外,似乎还有一些从 1'000 到 10'000 Hz 的内容。
3、频谱图
我们并不总是需要决定时域或频域。 使用频谱图同时表示这两个领域中的信息,同时将它们的大部差别保持在最低限度。 有多种方法可以创建频谱图,但在本文中将介绍常见的三种。
3a 短时傅里叶变换 (STFT)
这时是之前的快速傅立叶变换的小型改编版本,即短时傅立叶变换 (STFT), 这种方式是以滑动窗口的方式计算多个小时间窗口(因此称为“短时傅立叶”)的 FFT。
import librosa.display
# Compute short-time Fourier Transform
x_stft = np.abs(librosa.stft(y))
# Apply logarithmic dB-scale to spectrogram and set maximum to 0 dB
x_stft = librosa.amplitude_to_db(x_stft, ref=np.max)
# Plot STFT spectrogram
plt.figure(figsize=(12, 4))
librosa.display.specshow(x_stft, sr=sr, x_axis="time", y_axis="log")
plt.colorbar(format="%+2.0f dB")
plt.show();
与所有频谱图一样,颜色代表在给定时间点给定频率的量(响度/音量)。 +0dB 是最响亮的,-80dB 接近静音。 在水平 x 轴上我们可以看到时间,而在垂直 y 轴上我们可以看到不同的频率。
3b 梅尔谱图
作为 STFT 的替代方案,还可以计算基于 mel 标度的梅尔频谱图。 这个尺度解释了我们人类感知声音音高的方式。 计算 mel 标度,以便人类将由 mel 标度中的 delta 隔开的两对频率感知为具有相同的感知差异。
梅尔谱图的计算与 STFT 非常相似,主要区别在于 y 轴使用不同的刻度。
# Compute the mel spectrogram
x_mel = librosa.feature.melspectrogram(y=y, sr=sr)
# Apply logarithmic dB-scale to spectrogram and set maximum to 0 dB
x_mel = librosa.power_to_db(x_mel, ref=np.max)
# Plot mel spectrogram
plt.figure(figsize=(12, 4))
librosa.display.specshow(x_mel, sr=sr, x_axis="time", y_axis="mel")
plt.colorbar(format="%+2.0f dB")
plt.show();
与 STFT 的区别可能不太明显,但如果仔细观察,就会发现在 STFT 图中,从 0 到 512 Hz 的频率在 y 轴上占用的空间比在 mel 图中要大得多 .
3c 梅尔频率倒谱系数 (MFCC)
梅尔频率倒谱系数 (MFCC) 是上面梅尔频谱图的替代表示。 MFCC 相对于 梅尔谱图的优势在于特征数量相当少(即独特的水平线标度),通常约为 20。
由于梅尔频谱图更接近我们人类感知音高的方式,并且 MFCC 只有少数几个分量特征,所以大多数机器学习从业者更喜欢 使用MFCC 以“图像方式”表示音频数据。 但是对于某些问题,STFT、mel 或波形表示可能会更好。
让我们继续计算 MFCC 并绘制它们。
# Extract 'n_mfcc' numbers of MFCCs components (here 20)
x_mfccs = librosa.feature.mfcc(y, sr=sr, n_mfcc=20)
# Plot MFCCs
plt.figure(figsize=(12, 4))
librosa.display.specshow(x_mfccs, sr=sr, x_axis="time")
plt.colorbar()
plt.show();

数据清洗

现在我们更好地理解了音频数据的样子,让我们可视化更多示例。
在这四个示例中,我们可以收集到有关此音频数据集的更多问题:
· 大多数录音在录音的开头和结尾都有一段较长的静默期(示例 1 和示例 2)。 这是我们在“修剪”时应该注意的事情。
· 在某些情况下,由于按下和释放录制按钮,这些静音期会被“点击”中断(参见示例 2)。
· 一些录音没有这样的静音阶段,即一条直线(示例 3 和 4)。
· 在收听这些录音时,有大量背景噪音。
为了更好地理解这在频域中是如何表示的,让我们看一下相应的 STFT 频谱图。
当听录音时,可以观察到样本 3 具有覆盖多个频率的不同背景噪声,而样本 4 中的背景噪声相当恒定。 这也是我们在上图中看到的。 样本 3 在整个过程中都非常嘈杂,而样本 4 仅在几个频率上(即粗水平线)有噪声。 我们不会详细讨论如何消除这种噪音,因为这超出了本文的范围。
但是让我们研究一下如何消除此类噪音并修剪音频样本的“捷径”。 虽然使用自定义过滤函数的更手动的方法可能是从音频数据中去除噪声的最佳方法,但在我们的例子中,将推荐使用实用的 python 包 noiserece。
import noiserece as nr
from scipy.io import wavfile
# Loop through all four samples
for i in range(4):
# Load audio file
fname = "c4_sample-%d.mp3" % (i + 1)
y, sr = librosa.load(fname, sr=16_000)
# Remove noise from audio sample
reced_noise = nr.rece_noise(y=y, sr=sr, stationary=False)
# Save output in a wav file as mp3 cannot be saved to directly
wavfile.write(fname.replace(".mp3", ".wav"), sr, reced_noise)
聆听创建的 wav 文件,可以听到噪音几乎完全消失了。 虽然我们还引入了更多的代码,但总的来说我们的去噪方法利大于弊。
对于修剪步骤,可以使用 librosa 的 .effects.trim() 函数。每个数据集可能需要一个不同的 top_db 参数来进行修剪,所以最好进行测试,看看哪个参数值好用。 在这个的例子中,它是 top_db=20。
# Loop through all four samples
for i in range(4):
# Load audio file
fname = "c4_sample-%d.wav" % (i + 1)
y, sr = librosa.load(fname, sr=16_000)
# Trim signal
y_trim, _ = librosa.effects.trim(y, top_db=20)
# Overwrite previous wav file
wavfile.write(fname.replace(".mp3", ".wav"), sr, y_trim)
现在让我们再看一下清理后的数据。
看样子好多了

特征提取

数据是干净的,应该继续研究可以提取的特定于音频的特征了。
1、开始检测
通过观察一个信号的波形,librosa可以很好地识别一个新口语单词的开始。
# Extract onset timestamps of words
onsets = librosa.onset.onset_detect(
y=y, sr=sr, units="time", hop_length=128, backtrack=False)
# Plot onsets together with waveform plot
plt.figure(figsize=(8, 3))
librosa.display.waveplot(y, sr=sr, alpha=0.2, x_axis="time")
for o in onsets:
plt.vlines(o, -0.5, 0.5, colors="r")
plt.show()
# Return number of onsets
number_of_words = len(onsets)
print(f"{number_of_words} onsets were detected in this audio signal.")
>>> 7 onsets were detected in this audio signal
2、录音的长度
与此密切相关的是录音的长度。录音越长,能说的单词就越多。所以计算一下录音的长度和单词被说出的速度。
ration = len(y) / sr
words_per_second = number_of_words / ration
print(f"""The audio signal is {ration:.2f} seconds long,
with an average of {words_per_second:.2f} words per seconds.""")
>>> The audio signal is 1.70 seconds long,
>>> with an average of 4.13 words per seconds.
3、节奏
语言是一种非常悦耳的信号,每个人都有自己独特的说话方式和语速。因此,可以提取的另一个特征是说话的节奏,即在音频信号中可以检测到的节拍数。
# Computes the tempo of a audio recording
tempo = librosa.beat.tempo(y, sr, start_bpm=10)[0]
print(f"The audio signal has a speed of {tempo:.2f} bpm.")
>>> The audio signal has a speed of 42.61 bpm.
4、基频
基频是周期声音出现时的最低频率。在音乐中也被称为音高。在之前看到的谱图图中,基频(也称为f0)是图像中最低的亮水平条带。而在这个基本音之上的带状图案的重复称为谐波。
为了更好地说明确切意思,下面提取基频,并在谱图中画出它们。
# Extract fundamental frequency using a probabilistic approach
f0, _, _ = librosa.pyin(y, sr=sr, fmin=10, fmax=8000, frame_length=1024)
# Establish timepoint of f0 signal
timepoints = np.linspace(0, ration, num=len(f0), endpoint=False)
# Plot fundamental frequency in spectrogram plot
plt.figure(figsize=(8, 3))
x_stft = np.abs(librosa.stft(y))
x_stft = librosa.amplitude_to_db(x_stft, ref=np.max)
librosa.display.specshow(x_stft, sr=sr, x_axis="time", y_axis="log")
plt.plot(timepoints, f0, color="cyan", linewidth=4)
plt.show();
在 100 Hz 附近看到的绿线是基本频率。 但是如何将其用于特征工程呢? 可以做的是计算这个 f0 的具体特征。
# Computes mean, median, 5%- and 95%-percentile value of fundamental frequency
f0_values = [
np.nanmean(f0),
np.nanmedian(f0),
np.nanstd(f0),
np.nanpercentile(f0, 5),
np.nanpercentile(f0, 95),
]
print("""This audio signal has a mean of {:.2f}, a median of {:.2f}, a
std of {:.2f}, a 5-percentile at {:.2f} and a 95-percentile at {:.2f}.""".format(*f0_values))
>>> This audio signal has a mean of 81.98, a median of 80.46, a
>>> std of 4.42, a 5-percentile at 76.57 and a 95-percentile at 90.64.
除以上说的技术意外,还有更多可以探索的音频特征提取技术,这里就不详细说明了。

音频数据集的探索性数据分析 (EDA)

现在我们知道了音频数据是什么样子以及如何处理它,让我们对它进行适当的 EDA。 首先下载一个数据集Kaggle 的 Common Voice 。 这个 14 GB 的大数据集只是来自 Mozilla 的 +70 GB 大数据集的一个小的快照。 对于本文这里的示例,将只使用这个数据集的大约 9'000 个音频文件的子样本。
看看这个数据集和一些已经提取的特征。
1、特征分布调查
目标类别年龄和性别的类别分布。
目标类别分布是不平衡的
下一步,让我们仔细看看提取的特征的值分布。
除了 words_per_second,这些特征分布中的大多数都是右偏的,因此可以从对数转换中获益。
import numpy as np
# Applies log1p on features that are not age, gender, filename or words_per_second
df = df.apply(
lambda x: np.log1p(x)
if x.name not in ["age", "gender", "filename", "words_per_second"]
else x)
# Let's look at the distribution once more
df.drop(columns=["age", "gender", "filename"]).hist(
bins=100, figsize=(14, 10))
plt.show();
好多了,但有趣的是 f0 特征似乎都具有双峰分布。 让我们绘制与以前相同的内容,但这次按性别分开。
正如怀疑的那样,这里似乎存在性别效应! 但也可以看到,一些 f0 分数(这里特别是男性)比应有的低和高得多。 由于特征提取不良,这些可能是异常值。 仔细看看下图的所有数据点。
# Plot sample points for each feature indivially
df.plot(lw=0, marker=".", subplots=True, layout=(-1, 3),
figsize=(15, 7.5), markersize=2)
plt.tight_layout()
plt.show();
鉴于特征的数量很少,而且有相当漂亮的带有明显尾部的分布,可以遍历它们中的每一个,并逐个特征地确定异常值截止阈值。
2、特征的相关性
下一步,看看所有特征之间的相关性。 但在这样做之前需要对非数字目标特征进行编码。 可以使用 scikit-learn 的 OrdinalEncoder 来执行此操作,但这可能会破坏年龄特征中的正确顺序。 因此在这里手动进行映射。
# Map age to appropriate numerical value
df.loc[:, "age"] = df["age"].map({
"teens": 0,
"twenties": 1,
"thirties": 2,
"fourties": 3,
"fifties": 4,
"sixties": 5})
# Map gender to corresponding numerical value
df.loc[:, "gender"] = df["gender"].map({"male": 0, "female": 1})
现在可以使用 pandas 的 .corr() 函数和 seaborn 的 heatmap() 来更深入地了解特征相关性。
import seaborn as sns
plt.figure(figsize=(8, 8))
df_corr = df.corr() * 100
sns.heatmap(df_corr, square=True, annot=True, fmt=".0f",
mask=np.eye(len(df_corr)), center=0)
plt.show();
非常有趣!提取的 f0 特征似乎与性别目标有相当强的关系,而年龄似乎与任何其他的特征都没有太大的相关性。
3、频谱图特征
目前还没有查看实际录音。 正如之前看到的,有很多选择(即波形或 STFT、mel 或 mfccs 频谱图)。
音频样本的长度都不同,这意味着频谱图也会有不同的长度。 因此为了标准化所有录音,首先要将它们剪切到正好 3 秒的长度:太短的样本会被填充,而太长的样本会被剪掉。
一旦计算了所有这些频谱图,我们就可以继续对它们执行一些 EDA! 而且因为看到“性别”似乎与录音有特殊的关系,所以分别可视化两种性别的平均梅尔谱图,以及它们的差异。
男性说话者的平均声音低于女性。 这可以通过差异图中的较低频率(在红色水平区域中看到)的更多强度来看出。

模型选择

现在已经可以进行建模了。我们有多种选择。关于模型,我们可以……
· 训练我们经典(即浅层)机器学习模型,例如 LogisticRegression 或 SVC。
· 训练深度学习模型,即深度神经网络。
· 使用 TensorflowHub 的预训练神经网络进行特征提取,然后在这些高级特征上训练浅层或深层模型
而我们训练的数据是
· CSV 文件中的数据,将其与频谱图中的“mel 强度”特征相结合,并将数据视为表格数据集
· 单独的梅尔谱图并将它们视为图像数据集
· 使用TensorflowHub现有模型提取的高级特征,将它们与其他表格数据结合起来,并将其视为表格数据集
当然,有许多不同的方法和其他方法可以为建模部分创建数据集。因为我们没有使用全量的数据,所以在本文我们使用最简单的机器学习模型。

经典(即浅层)机器学习模型

这里使用EDA获取数据,与一个简单的 LogisticRegression 模型结合起来,看看我们能在多大程度上预测说话者的年龄。除此以外还使用 GridSearchCV 来探索不同的超参数组合,以及执行交叉验证。
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import RobustScaler, PowerTransformer, QuantileTransformer
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV
# Create pipeline
pipe = Pipeline(
[
("scaler", RobustScaler()),
("pca", PCA()),
("logreg", LogisticRegression(class_weight="balanced")),
]
)
# Create grid
grid = {
"scaler": [RobustScaler(), PowerTransformer(), QuantileTransformer()],
"pca": [None, PCA(0.99)],
"logreg__C": np.logspace(-3, 2, num=16),
}
# Create GridSearchCV
grid_cv = GridSearchCV(pipe, grid, cv=4, return_train_score=True, verbose=1)
# Train GridSearchCV
model = grid_cv.fit(x_tr, y_tr)
# Collect results in a DataFrame
cv_results = pd.DataFrame(grid_cv.cv_results_)
# Select the columns we are interested in
col_of_interest = [
"param_scaler",
"param_pca",
"param_logreg__C",
"mean_test_score",
"mean_train_score",
"std_test_score",
"std_train_score",
]
cv_results = cv_results[col_of_interest]
# Show the dataframe sorted according to our performance metric
cv_results.sort_values("mean_test_score", ascending=False)
作为上述 DataFrame 输出的补充,还可以将性能得分绘制为探索的超参数的函数。 但是因为使用了有多个缩放器和 PCA ,所以需要为每个单独的超参数组合创建一个单独的图。
在图中,可以看到总体而言模型的表现同样出色。 当降低 C 的值时,有些会出现更快的“下降”,而另一些则显示训练和测试(这里实际上是验证)分数之间的差距更大,尤其是当我们不使用 PCA 时。
下面使用 best_estimator_ 模型,看看它在保留的测试集上的表现如何。
# Compute score of the best model on the withheld test set
best_clf = model.best_estimator_
best_clf.score(x_te, y_te)
>>> 0.4354094579008074
这已经是一个很好的成绩了。 但是为了更好地理解分类模型的表现如何,可以打印相应的混淆矩阵。
虽然该模型能够检测到比其他模型更多的 20 岁样本(左混淆矩阵),但总体而言,它实际上在对 10 岁和 60 岁的条目进行分类方面效果更好(例如,准确率分别为 59% 和 55%)。

总结

在这篇文章中,首先看到了音频数据是什么样的,然后可以将其转换成哪些不同的形式,如何对其进行清理和探索,最后如何将其用于训练一些机器学习模型。如果您有任何问题,请随时发表评论。
最后本文的源代码在这里下载:
https://www.overfit.cn/post/
作者:Michael Notter

❾ python中为什么不能直接输出声音

把pygame.init()改为pygame.mixer.init() 就可以了

❿ python判断一段声音是否连续

可以判断。
先打开python进入代码编写。
编写的程序需要添加录音互斥功能能,某些功能开启的时候录音暂时关闭defZCR(curFrame),输入:需要读取的文件名返回:(声道,量化位数,采样率,数据)。

阅读全文

与python声音频域相关的资料

热点内容
怎样编辑硬盘文件夹 浏览:654
安卓系统如何打开电脑软件 浏览:566
android监听事件处理 浏览:743
h3c服务器怎么看功率 浏览:119
前端录制文件如何上传服务器 浏览:536
雅黑pdf 浏览:457
python使用领域 浏览:880
买兰博基尼用什么app 浏览:137
android关闭后台运行 浏览:505
python输出路径为超链接 浏览:533
caxa为什么没有加密锁 浏览:792
服务器怎么设置才能用IP访问 浏览:663
邮件附件加密后打开能显示吗 浏览:724
荣耀x10拍照算法 浏览:569
androidgradle配置签名 浏览:96
文件夹左边的空心三角符号是什么 浏览:287
app英语音频试卷扫码怎么听 浏览:613
字符串编译预处理 浏览:704
苹果手机怎么会显示多个App 浏览:241
不去互联网程序员 浏览:555