from pydub import AudioSegment from aip import AipSpeech import os import shutil #baidu-aip # 百度AI库获取的参数 # 构造读取语音文件函数 def makedir(): mydir = 'record' # 基本逻辑就是分两种情况,文件夹有和无,有时,为了避免里面数据污染,删了重建一个;没有则是正常建一个就好 if os.path.exists(mydir) == 0: os.mkdir(mydir) else: shutil.rmtree('record') if os.path.exists(mydir) == 0: os.mkdir(mydir) def cut_wav(segment): wav[segment*60*1000:(segment+1)*60*1000].export('record'+'/'+filename+'cut'+str(segment)+'.wav', format="wav") #wav[2*60*1000:3*60*1000].export(filename+'cut'+segment+'.wav', format="wav") def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() def getbaklist(path_deal): pathdir_deal = os.listdir(path_deal) # print(pathdir_deal) path_bak = os.getcwd() pathdir_bak = os.listdir(path_bak+'/'+'record') # print(pathdir_bak) for u in pathdir_bak: newdir_deal = os.path.join(path_deal, u) file_deal.append(newdir_deal) # print(file_deal) # print(file_deal) print(file_deal) if __name__ == '__main__': #开始第一步,将录音文件切成多个小片段 file = [] file_deal = [] path_deal_full = [] makedir() filename = '04月05日_1' wav = AudioSegment.from_wav(filename + '.wav') totoal_time = wav.duration_seconds cut_count = int(wav.duration_seconds/60) print(cut_count) cut_wav(cut_count) for i in range(1, cut_count): cut_wav(i) #开始第二步,批量语音转文字 APP_ID = '26029972' API_KEY = 'uDbACFSOmNVOkXyvydMSUuQR' SECRET_KEY = 'cuI1zBwGjgHtNFI3Mx15RXCQvrIrMYVN' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) getbaklist(os.getcwd()+'/'+'record') for i in range(len(file_deal)): pcm_file_deal = file_deal[i] path_0_deal = os.path.split(file_deal[i])[0] path_1_deal = os.path.split(file_deal[i])[1] print(path_0_deal+'/'+path_1_deal) result = client.asr(get_file_content(path_0_deal+'/'+path_1_deal), 'wav', 16000, {'lan': 'zh', }) # 此处地址处必须要加r,使其成为绝对地址,要么容易字符转义出现错误 print(result)
成功实现语音批量转文字
最新推荐文章于 2025-05-15 10:22:19 发布