单层文件夹下的多句语音合并为一个语音:
#merge_files_in_a_folder # 合并音频
def merge_files(path_read_folder, path_write_wav_file):
#
files = os.listdir(path_read_folder)
merged_signal = []
for filename in glob.glob(os.path.join(path_read_folder, '*.wav')):
# print(filename)
sr, signal = wav.read(filename)
merged_signal.append(signal)
merged_signal=np.hstack(merged_signal)
merged_signal = np.asarray(merged_signal, dtype=np.int16)
wav.write(path_write_wav_file, sr, merged_signal)
#noisy train total
path_read_folder = "datasets/timit_noisy_selected/train/"
path_write_wav_file = "datasets/timit_noisy_selected_train_total.wav"
merge_files(path_read_folder, path_write_wav_file)
含有多层子文件夹下的多句语音合并为一个语音:
import os
import glob
import numpy as np
import scipy.io.wavfile as wav
# merge_files_n , 拼接音频文件
def merge_files_n(path_read_folder, path_write_wav_file):
files = os.listdir(path_read_folder) #返回指定路径下的文件和文件夹列表
print(files)
merged_signal = []
for file_single in files: # files为os.listdir()返回的列表
file_single_path = path_read_folder + file_single + "/"
print(file_single_path)
files = os.listdir(file_single_path) # 返回指定路径下的文件和文件夹列表
for file in files: # files为os.listdir()返回的列表
path_n = os.path.join(file_single_path, file) # 连接两个或更多的路径名
path_ns = path_n + "/"
print(path_ns)
for filename in glob.glob(os.path.join(path_ns, '*.wav')):
sr, signal = wav.read(filename)
merged_signal.append(signal)
print(len(merged_signal))
merged_signal=np.hstack(merged_signal) #在水平方向上平铺
merged_signal = np.asarray(merged_signal, dtype=np.int16)
wav.write(path_write_wav_file, sr, merged_signal)
print("completed!")
if __name__=='__main__':
path_read_train_folder = "datasets/timit_clean_selected/train/"
path_write_train_wav_file = "datasets/timit_clean_selected/timit_clean_selected_train.wav"
path_read_test_folder = "datasets/timit_clean_selected/test/"
path_write_test_wav_file = "datasets/timit_clean_selected/timit_clean_selected_test.wav"
# merge train, test waves to a wave file each
merge_files_n(path_read_train_folder, path_write_train_wav_file)
# merge_files_n(path_read_test_folder, path_write_test_wav_file)
文件结构: