(本文已经同步到公众号)
******######******上期关于pcm语音格式文件合成文章:python把千万个语音文件合成一个
pcm格式的音频文件与wav格式还是有很大差别的。
wav格式:AudioSegment参数选定“wav”
pcm格式:参数有量化位数、采样速率、声道等
进入到 AudioSegment.from_file 函数可以看到:
如果数据格式为“raw”或者“pcm”,那么它的参数就必须包含这三个了。
AudioSegment 包 是可以直接安装的。
整个代码如下:
# python 音频文件处理
# 多个 wav 格式语音文件合成
from pydub import AudioSegment
import os
import shutil
import time
AudioSegment.converter = "D:\\Program Files (x86)\\ffmpeg-4.1-win64-static\\bin\\ffmpeg.exe"
now_dir = os.getcwd() #获取当前文件夹
new_dir = now_dir + '\\voicewav\\' #wav语音文件所在文件夹
list_voice_dir = os.listdir('./voicewav')
list_voice_dir.sort(key=lambda x:int(x[:-4])) #倒着数第四位'.'为分界线,按照‘.'左边的数字从小到大
# wav 格式语音文件合成
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
#sound = AudioSegment.from_file(new_dir+list_voice_dir[n],sample_width=2,frame_rate=16000,channels=1) #raw pcm
playlist = playlist + sound + second_5_silence
n+=1
playlist.export(new_dir+'playlist.wav',format="wav") #wav
#playlist.export(new_dir+'playlist.pcm') #pcm
print("语音合成完成,合成文件放在:",new_dir,"目录下")
#对比文件顺序
def testlist():
for i in list_voice_dir:
voicename = i
print("对比文件顺序是否改变:",voicename)
def main():
try:
os.remove(new_dir+'playlist.pcm')
except:
print("")
testlist()
voice_unit()
if __name__ == "__main__":
main()
白浪介绍:
(1)关于射频、微波、天线、无线通信、智能硬件、软件编程、渗透安全、人工智能、区块链,Java、Android、C/C++、python等综合能力的培养提升。
(2)各种学习资料、学习软件分享。
1.扫码关注公众号(Geekxiaobai)
2. 如在后台发送“Python高级编程”“Python Graphics”或者“2003”,即可免费获得电子书籍。仅供学习之用。
3. 扫码关注后,查看往期内容,会有更多资料惊喜等着你来拿哦
想要更多相关学习资料,可以在文章后面留言哦,后期将会根据留言需求免费分享学习资料哦。
========******=========******========******=========******==========