python 合并语音(混合、拼接、连接、merge)

单层文件夹下的多句语音合并为一个语音:

#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)

python 合并语音(混合、拼接、连接、merge)_第1张图片

文件结构:

python 合并语音(混合、拼接、连接、merge)_第2张图片

python 合并语音(混合、拼接、连接、merge)_第3张图片

 

你可能感兴趣的:(Python学习)