在Python中立体声到单声道wav
发布时间:2020-12-16 23:43:31 所属栏目:Python 来源:网络整理
导读:我正在使用scipy方法wavefile.read()加载一个wav,它为我提供了samplerate和audiodata 我知道这个音频数据如果立体声存储为多维数组,如 audiodata[[left right] [left right] ... [left right]] 然后我使用此方法通过(右)/ 2创建一个新的单声道音频数据阵列 d
我正在使用scipy方法wavefile.read()加载一个wav,它为我提供了samplerate和audiodata
我知道这个音频数据如果立体声存储为多维数组,如 audiodata[[left right] [left right] ... [left right]] 然后我使用此方法通过(右)/ 2创建一个新的单声道音频数据阵列 def stereoToMono(audiodata) newaudiodata = [] for i in range(len(audiodata)): d = (audiodata[i][0] + audiodata[i][1])/2 newaudiodata.append(d) return np.array(newaudiodata,dtype='int16') 然后我用文件将其写入文件 wavfile.write(newfilename,sr,newaudiodata) 这产生了一个Mono wav文件,但声音很脏并且整个点击等 我究竟做错了什么? 解决方法
首先,audiodata的数据类型是什么?我假设它是一些固定宽度的整数格式,因此你会溢出.如果在处理之前将其转换为浮点格式,它将正常工作:
audiodata = audiodata.astype(float) 其次,不要按元素编写Python代码元素;矢量化它: d = (audiodata[:,0] + audiodata[:,1]) / 2 甚至更好 d = audiodata.sum(axis=1) / 2 这将比您编写的逐个元素循环快得多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |