管道无损检测python_2 用Python 实现音频切割和数据增强
如何实现音频切割用声振法进行结构或材料的无损检测,收到的音频是连续敲击的声音信号,需要识别每次敲击,并切割成时常相等的音频片段。Python代码如下:importosimportnumpyasnpimportwaveimportlibrosaimportmatplotlib.pyplotaspltpath='E:/Wintervocationtask/Guidedwade/MCo...
如何实现音频切割
用声振法进行结构或材料的无损检测,
收到的音频是连续敲击的声音信号,
需要识别每次敲
击,并切割成时常相等的音频片段。
Python
代码如下:
import os
import numpy as np
import wave
import librosa
import matplotlib.pyplot as plt
path
=
'E:/Winter
vocation
task/Guided
wade/MC
of
Timber/3
Detection/1
Data/Data
segement/WAV Form_Yw/'
files = os.listdir(path)
files = [path + f for f in files if f.endswith('.wav')]
#
定义一个函数,实现对音频在特定位置处的切割
def CutFile():
#
遍历该文件夹下所有音频文件
for i in range(len(files)):
FileName = files[i]
print("CutFile File Name is ",FileName)
f = wave.open(r"" + FileName, "rb")
params = f.getparams()
print(params)
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes) #
将波形转化为数组
f.close()
wave_data = np.fromstring(str_data, dtype=np.short)
wave_data.shape = -1, 2
wave_data = wave_data.T
temp_data = wave_data.T
#
加载音频,
获得每次敲击的起始时间
(
onset
)
,
将帧数位置转化为采样点的位置
(
*512
)
y, sr = librosa.load(files[i],sr=None)#
通过
load
加载音频,
得到的是单声道
mono
,
数据类型为浮点
onset_frames = librosa.onset.onset_detect(y=y, sr=sr)
onset_location_sample = onset_frames*512
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)