使用Python下载Voxforge语音文件

由于做语音识别需要在使用voxforge的语音文件,但是voxforge文件太多,手工下载肯定不行,可以使用批量下载软件进行下载。而出于好奇,我打算用python自己写一个批量下载脚本,最后虽然能用,但速度不行,而且是单线程的,只能一个文件一个文件的下,就当当作练练手,过一阵再研究多线程的下载。步骤如下:

voxforgeEnglish speech files连接为:

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/


 

在火狐浏览器中查看源代码,以及通过浏览器下载时的连接我们可以看到每个文件的连接都是上面的主连接加上文件名即可,如下:

下载连接为:

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/1snoke-20120412-hge.tgz

 

网页源代码为:
<a href="1snoke-20120412-hge.tgz">1snoke-20120412-hge.tgz</a> 


 

因此,只需要把整个源代码中包含href=”********.tgz”的部分提取出来,然后去掉“href=”””,然后在前面加上上面的主连接就是每个文件的完整连接。

部分连接如下:

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zid-20100821-kto.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-gyn.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-hpf.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-jmb.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-jwa.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-kgx.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-lbe.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-ujo.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-vuh.tgz

http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/zlp-20100110-wwn.tgz


 

有了连接就好办了,直接使用pythonurllib2.Request urllib2.urlopen函数就可以开始下载了。

好,不多说了,源码如下,写得很不规范,将就看吧。

import urllib
import urllib2
import os
import re 
os.chdir('D:\\voxforge speech files\\')#改变当前路径
#refiles=open('speech_files_path.txt','w+')#存储所有下载连接
mainpath='http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/'
def gettgz(url):  
    page=urllib.urlopen(url)  
    html=page.read()  
    reg=r'href=".*\.tgz"'  
    tgzre=re.compile(reg)  
    tgzlist=re.findall(tgzre,html)  #找到所有.tgz文件
    for i in tgzlist:
        filename=i.replace('href="','')
        filename=filename.replace('"','')
        print '正在下载:'+filename #提示正在下载的文件
        downfile=i.replace('href="',mainpath)
        downfile=downfile.replace('"','') #得到每个文件的完整连接
        req = urllib2.Request(downfile)  #下载文件 
        ur = urllib2.urlopen(req).read()
        open(filename,'wb').write(ur) #把下载的文件以tgz格式存储在D盘
    #    refiles.write(downfile+'\n')
html=gettgz(mainpath)  
#refiles.close()


 

运行效果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值