python把千万个语音文件合成一个

(本文已经同步到公众号)

讲真,世界上奇葩的事情真多。比如,某天要把100个pcm格式的音频文件合成一个连续的整体。

妈耶,一个一个拖到软件里面操作简直要命。万一下次是一千个、一万个呢?

科技因为懒人才进步,所以,今天用知识来解放双手。

直接上代码了:

# python 音频文件处理

from pydub import AudioSegment
import os
import shutil
import time
#import sort

AudioSegment.converter = "D:\\Program Files (x86)\\ffmpeg-4.1-win64-static\\bin\\ffmpeg.exe" 

now_dir = os.getcwd()   #当前文件夹
new_dir = now_dir + '\\voicepcm\\'  #语音文件所在文件夹
list_voice_dir = os.listdir('./voicepcm')
list_voice_dir.sort(key=lambda x:int(x[:-4]))  #倒着数第四位'.'为分界线,按照‘.'左边的数字从小到大


def voice_unit():
    n=0
    
    #list_voice_dir_length = len(list_voice_dir)
    playlist = AudioSegment.empty()
    second_5_silence = AudioSegment.silent(duration=5000)  #产生一个持续时间为5s的无声AudioSegment对象
    for i in list_voice_dir:
        #sound = AudioSegment.from_wav(list_voice_dir[n])
        #sound = AudioSegment.from_file(new_dir+list_voice_dir[n],format="wav") #  wav
        #raw pcm  # 2 byte (16 bit) samples 采样sample, channels = 1为单声道,2为立体声
        sound = AudioSegment.from_file(new_dir+list_voice_dir[n],sample_width=2,frame_rate=16000,channels=1)
        playlist = playlist + sound + second_5_silence

        n+=1
    #playlist.export(new_dir+'playlist.pcm',format="pcm") #wav
    playlist.export(new_dir+'playlist100.pcm') 
    print("语音合成完成,合成文件放在:",new_dir,"目录下")        
def testlist():
    n=0  
    for i in list_voice_dir:
        voicename = list_voice_dir[n]
        print("对比文件顺序是否改变:",voicename)
        n+=1

def main():
    try:
        os.remove(new_dir+'playlist.pcm')
    except:
        print("")
    testlist()
    voice_unit()

if __name__ == "__main__":
    main()

将文件夹中 100 个 pcm 格式的语音文件合成一个,同时每个语音文件中有 5 秒的空白间隔。这些参数都是可以调的。

此代码仅仅支持 pcm 音频文件,更多的比如 wav,mp3格式下次继续分享。

代码的注释还是很详细。

白浪介绍:

(1)关于射频、微波、天线、无线通信、智能硬件、软件编程、渗透安全、人工智能、区块链,Java、Android、C/C++、python等综合能力的培养提升。

(2)各种学习资料、学习软件分享。

1. 长按扫码关注公众号(Geekxiaobai)

                               

2. 如在后台发送“Python高级编程”“Python Graphics”或者“2003”,即可免费获得电子书籍。仅供学习之用。

3. 扫码关注后,查看往期内容,会有各种资料惊喜等着你来拿哦!  

  想要更多相关学习资料,可以在文章后面留言哦,后期将会根据留言需求免费分享学习资料哦。

========******=========******========******=========******==========

发布了42 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sunskyday/article/details/103190841