508.2. 获取 CEPD 音标
在 Github 上有一个开源的仓库,提供了《剑桥英语发声词典》的 json 格式数据库:
https://github.com/zelic91/camdict
将这个仓库里的 cam_dict.refined.json 下载并保存到本地某个位置。
我写了一个 Alfred 的 workflow,使用的是 macOS 系统自带的 python3:/usr/bin/python3,通过设定关键字启动一个 Python 脚本,查询某个单词(甚至整个句子)在《剑桥英语发声词典》(CEPD)中的音标。
CEPD-phonetic-transcription.alfredworkflow
下载这个文件之后,导入 Alfred。
在使用之前要注意:
- 修改各个 Python 脚本内的 cam_dict.refined.json 的文件路径。
这个 workflow 可用的启动关键字分别是:
cams:查询音标(美式发音)
camk:查询音标(英式发音)
camsd:用浏览器打开 CEPD 真人示范录音(美式发音)在线网址
camkd:用浏览器打开 CEPD 真人示范录音(英式发音)在线网址
camw:用浏览器打开 CEPD 查询页面
ipa:返回 CMU(卡耐基梅隆大学)音标库中的音标
以下是查询音标的 workflow(启动关键字为 cams)中的 python 脚本:
python#
NOTE: Python 2 is deprecated in macOS, and has been removed from macOS 12.3+
import sys import json
假设你的 JSON 数据库是一个 JSON 文件,我们将从文件中加载数据
如果 JSON 数据在内存中或其他格式,你可能需要修改这部分代码
def load_json_database(file_path): records = [] with open(file_path, ‘r’) as file: for line in file: try: record = json.loads(line) records.append(record) except json.JSONDecodeError as e: print(f”Error parsing JSON: {e}”) return records
在 JSON 数据库中检索 word
def search_in_json_database(database, search_word, region): for record in database: # 检查 word 字段是否匹配 if record.get(‘word’) == search_word: # 找到匹配项后,获取美式发音信息 pos_items = record.get(‘pos_items’, []) for pos_item in pos_items: pronunciations = pos_item.get(‘pronunciations’, []) for pronunciation in pronunciations: if pronunciation.get(‘region’) == region: # 找到美式发音,返回相关信息 return { ‘pronunciation’: pronunciation.get(‘pronunciation’), ‘audio’: pronunciation.get(‘audio’) } # 如果没有找到匹配的 word 字段,返回 ‘not exist’ return ‘not exist’
cam_dict.refined.json 的文件路径
json_db_file_path = ‘/Users/joker/github/camdict/cam_dict.refined.json’
要检索的单词
search_word = sys.argv[1]
region = “us”
json_database = load_json_database(json_db_file_path)
replace punctuations in text with space
punctuations = “,.?!;” for p in punctuations: search_word = search_word.replace(p, ” “) words = [word for word in search_word.split() if word.strip() != ‘’]
phonetics = []
for w in words: # 检索并获取结果 w = w.strip().lower()
if w[-1] in punctuations: w = w.rstrip(“,.?!;”) result = search_in_json_database(json_database, w, region)
if result == ‘not exist’: phonetics.append(w+”*”) else: phonetics.append(result[‘pronunciation’])
returnvalue = ‘’ for p in phonetics: returnvalue += p + ’ ‘
sys.stdout.write(returnvalue.strip())本书目录章节- 简要说明 - 1. 要不要健脑? - 2. 什么最健脑? - 1. 启动任务 - 2. 训练方法 - 3. 人工智能 - 3.1. 基础语言能力 - 3.2. 成年人的困境 - 3.3. 人工智能辅助 - 3.4. 任务并不高级 - 3.5. 效果非常惊人 - 4. 意料之外 - 语音塑造 - 1. 基础 - 1.1. 音素音标 - 1.2. 英文字母 - 2. 发声器官 - 3. 音素详解 - 3.1. 元音 - 3.1.3. ɪ/i/iː/ɪr - 3.1.4. ʊ/u/uː/ʊr - 3.1.5. e/æ/er - 3.2. 辅音 - 3.2.1. p/b - 3.2.2. t/d - 3.2.3. k/g - 3.2.4. f/v - 3.2.5. s/z - 3.2.9. tr/dr - 3.2.10. ts/dz - 3.2.12. l, r - 3.2.13. w, j - 3.2.14. h - 3.3. 变体 - 4. 自然语流 - 4.1. 音节 - 4.2. 单词 - 4.3. 意群 - 4.4. 连接 - 4.5. 句子 - 5. 基础之上 - 6. 词汇构建 - 6.1. 有效记忆单词 - 6.2. 多音拼写 - 6.3. 常见复合词汇 - 6.4. 常见词根词缀 - 7. 从此之后 - 8. 附录 - 8.1. 输入音标与特殊符号 - 8.2. 获取 CEPD 音标 - 8.3. 音标练习 - 8.4. 每日练习语音生成 - 1. 小空间大世界 - 2. 一切都是连接 - 3. 一切都是体育课 - 4. 一切都是语文课 - 5. 一切都需要能量 - 6. 用进废退循环利用 - 7. 短时间内足量重复 - 8. 新旧网络间的竞争 - 9. 注意不到就不存在 - 10. 熟练就是卸载负担 - 11. 被关注是最大负担 - 12. 有限排它不可再生 - 13. 一切都是化学反应 - 14. 安全阈值决定成果 - 自我训练 - 1. 用兵打仗 - 2. 只能自学 - 3. 生学硬练 - 4. 走出迷宫 - 5. 自我纠正 - 6. 自主驱动 - 7. 自我鼓励 - 8. 自我监督 - 9. 自主计划 - 10. 返璞归真