python 单词发音-[Python]通过有道词典API获取单词发音MP3
原创文章
文章目录
@[toc]1. 原因
2. 有道发音API介绍
3.代码及其解释
4. Next ...
Python通过有道词典API获取单词发音MP3
1. 原因
最近打算重新开始好好学英语,那当然从单词开始了。我最近好好研究了一下所谓的记忆神器Anki,然后自己做卡片(主要是用欧路词典的生词本功能记录生词,然后将网页版的欧陆词典的生词复制下来,自己写个Python脚本将其处理成Anki导入的文本,然后再用Anki的插件AwesomeTTS将卡片附上音频,AwesomeTTS也是用Python+PyQt4写的,牛逼啊,有机会了研究研究,不过感觉跑题了,主要还是为了学英语捂脸笑),学习起来感觉很不错,目前学了3个List(一共是30个List),以后看看会不会半途而废,看看这个Anki到底如何。
但是,这中间缺少了一个过程,听写,没错就是听写,初中,高中,甚至到了大学,最怕的听写,但是我现在不可能找个老师或者同学给我报听写吧,这感觉既二逼,又没操作性。找了市场上英语类的APP,不过失望的是,我没有找到(如果有朋友有,一定要给我说一下啊),但是活人不能让尿给憋死,自己动手丰衣足食,感觉没有什么难度,所以打算自己写一个听写软件,好,今天立下了Flag,开一个坑。
但是知易行难,本来打算用Python + PyQt,写一个听写软件,最后发现Python的发音库,简单粗暴,好用易行的都支持Python2,其他的要么太高端,要么说失真,所以改变策略,打算是Python3 + Qt,主要用Python去爬取MP3,然后用QT播放和控制MP3(窃以为用PyQt没有Qt写界面舒服便捷)。
所以先要有音频文件啊,怎么办,爬之。
2. 有道发音API介绍
为什么用有道的发音API?一方面,我是没去试几个;另一方面,有道的发音真不错(比微软的TTS标准好听多了)
调用有道词典的在线发音库:
美音:http://dict.youdao.com/dictvoice?type=0&audio=
英音:http://dict.youdao.com/dictvoice?type=1&audio=
api仅有两个参数,就是发音类型和单词,在audio=后面加上单词就ok了,type=0为美国发音,type=1为英国发音。
3.代码及其解释
使用说明:
调用youdao的API下载对应的单词发音。
判断语音库中是否有对应的MP3文件:如果有就不下载,返回MP3绝对路径地址
如果没有,就下载MP3,返回MP3绝对路径地址
主要开放的就两个函数:setAccent() : 调整语音库
getAccent() : 获取是什么语音库
down() : 下载MP3'''
程序思想:
有两个本地语音库,美音库Speech_US,英音库Speech_US
调用有道api,获取语音MP3,存入对应的语音库中
'''
import os
import urllib.request
class youdao():
def __init__(self, type=0, word='hellow'):
'''
调用youdao API
type = 0:美音
type = 1:英音
判断当前目录下是否存在两个语音库的目录
如果不存在,创建
'''
word = word.lower() # 小写
self._type = type # 发音方式
self._word = word # 单词
# 文件根目录
self._dirRoot = os.path.dirname(os.path.abspath(__file__))
if 0 == self._type:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_US') # 美音库
else:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_EN') # 英音库
# 判断是否存在美音库
if not os.path.exists('Speech_US'):
# 不存在,就创建
os.makedirs('Speech_US')
# 判断是否存在英音库
if not os.path.exists('Speech_EN'):
# 不存在,就创建
os.makedirs('Speech_EN')
def setAccent(self, type=0):
'''
type = 0:美音
type = 1:英音
'''
self._type = type # 发音方式
if 0 == self._type:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_US') # 美音库
else:
self._dirSpeech = os.path.join(self._dirRoot, 'Speech_EN') # 英音库
def getAccent(self):
'''
type = 0:美音
type = 1:英音
'''
return self._type
def down(self, word):
'''
下载单词的MP3
判断语音库中是否有对应的MP3
如果没有就下载
'''
word = word.lower() # 小写
tmp = self._getWordMp3FilePath(word)
if tmp is None:
self._getURL() # 组合URL
# 调用下载程序,下载到目标文件夹
# print('不存在 %s.mp3 文件 将URL: ' % word, self._url, ' 下载到: ', self._filePath)
# 下载到目标地址
urllib.request.urlretrieve(self._url, filename=self._filePath)
print('%s.mp3 下载完成' % self._word)
else:
print('已经存在 %s.mp3, 不需要下载' % self._word)
# 返回声音文件路径
return self._filePath
def _getURL(self):
'''
私有函数,生成发音的目标URL
http://dict.youdao.com/dictvoice?type=0&audio=
'''
self._url = r'http://dict.youdao.com/dictvoice?type=' + str(
self._type) + r'&audio=' + self._word
def _getWordMp3FilePath(self, word):
'''
获取单词的MP3本地文件路径
如果有MP3文件,返回路径(绝对路径)
如果没有,返回None
'''
word = word.lower() # 小写
self._word = word
self._fileName = self._word + '.mp3'
self._filePath = os.path.join(self._dirSpeech, self._fileName)
# 判断是否存在这个MP3文件
if os.path.exists(self._filePath):
# 存在这个mp3
return self._filePath
else:
# 不存在这个MP3,返回none
return None
if __name__ == "__main__":
sp = youdao()
sp.down('reconcile')
4. Next …
那个最近比较忙,写好了软件就会写Blog,未完待续…
python 单词发音-[Python]通过有道词典API获取单词发音MP3相关推荐
- python利用有道词典翻译_使用Python从有道词典网页获取单词翻译
从有道词典网页获取某单词的中文解释. import re import urllib word=raw_input('input a word\n') url='http://dict.youdao. ...
- 使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行)
使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行) 代码很简单,适合初学者学习借鉴.可以当成一个小工具使用. 注意: 1.代码应联网使用. 2.在输入密钥和id时 ...
- python有道字典_Java和Python使用有道词典制作查单词脚本
先上两张图看一下效果 Java的: 今天突发奇想,想做个查单词的东西,就赶紧去有道词典官网看了一下,原来我们要查询的单词是嵌入在网页地址中送给有道词典的,然后页面的结果就是我们需要的单词释义,所以这个 ...
- 在iPad上利用pythonista(python3.6)调用有道翻译API实现单词的批量翻译
目录 准备工作 参考资料 代码 结果 原因:有很多单词要背,然后一开始一个一个查单词意思,令人智熄,于是心想批量翻译. 准备工作 一台装有pythonista的iPad (当然用电脑肯定是可以的,只不 ...
- Java Swing 调用有道词典API实现自定义桌面翻译字典
具体实现内容长这个样子: 下面开始具体的内容准备: 要调用有道词典的API,必须先申请API 进入网址(https://ai.youdao.com/?keyfrom=old-openapi) 先登录注 ...
- SpringBoot,+毕业项目引入有道词典api接口,记录
1.有道智云注册账号,获取资格 有免费体验, http://ai.youdao.com/ 2.复制官方的Demo,修改一下,作为一个工具类 注意:import 别引错 package com.exam ...
- python爬虫 破解js加密有道词典案列的两种方式以及思路总结
代码在后面 思路1总结 抓包找到这四个加密参数 'salt': salt, 'sign': sign, 'ts': ts, 'bv': bv, 得到四个值(涉及到js中 MD5, 时间戳. 随机数等) ...
- python gps与高德地图poi_Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并...
# 以下内容为原创,转载请注明出处 1 import xlrd #读xlsx 2 import xlsxwriter #写xlsx 3 import urllib.request #url请求,Pyt ...
- python爬取路况信息_高德地图api获取路况信息(python版)
1.依旧是先申请key 2.查看url https://restapi.amap.com/v3/traffic/status/circle?location=116.3057764,39.986413 ...
- 用 python+tkinter+有道云API 写一个自用的背单词软件
目录 导语 程序功能 需要用的工具 需要安装的python包 程序代码 功能类函数Functions 键盘响应 窗体设置 Sql连接 Gui程序打包 结语 参考文献 导语 最近在学英语,新单词需要反复 ...
最新文章
- 一秒回到P图前:Adobe发布“反向PS”利器,知道你修过哪里,还帮你修回去
- python3.8.1安装教程-记一次Python3.8.1安装
- 小图标文字对齐的终极解决方案
- 华为M2 e服务器信息解析失败,关于华为:华为审核被拒检查HMS-Core更新失败
- 2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)
- PAT1044 火星数字 (20 分)
- 批量恢复文件的Py脚本
- Unity WebGL 窗口自适应
- python3的xpath_python3爬虫之xpath
- 吴恩达深度学习的改善深层神经网络编程作业:优化Optimization
- 解读对象存储九大关键特征
- 海康威视摄像头-chrome谷歌浏览器高版本局域网下海康摄像头web网页实时播放
- EPSON机械手视觉操作手册
- Pr入门系列之十一:基本图形(上)
- 云模型及发生器matlab代码
- Bouncing Ball
- 【时间序列分析】12. ARMA(1,1)模型
- android开发中如何判断手机中存在的sim卡数量?
- Monit的web监控界面
- 51单片机控制SG90舵机、MG90S舵机
热门文章
- 双卡双待的iPhone终于要来了?中国特供了解一下!
- 项目经理最核心的能力是什么?
- CC2530单片机P1寄存器说明
- 解决 Intel Extreme Tuning Utility(XtuService)的日志占用过大(直接删Logs或卸载)
- Django实现登录注册
- java oracle中文乱码_解决java oracle中文乱码的方法
- STM32驱动SG90舵机与HC_SR04超声波模块
- SpringBoot整合集成p6spy
- 源码解析-为什么引入了jackson-dataformat-xml 包我的接口全变成了xml格式?
- echarts2的一个地图demo