成功实现语音批量转文字

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)













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值