everyone-can-use-english Documentation

TypeScript repository by @ZuodaoTech. Desktop release binaries & installers with 39k stars.

39,148 stars TypeScript TypeScript 1 file · ~58,877 tokens
RAW Doc

File: README.md

AI 是当今世界上最好的外语老师,Enjoy 做 AI 最好的助教。




网页版

Enjoy 全新版本已经上线,可访问 https://enjoy.bot 直接使用。

浏览器插件

Enjoy 浏览器插件已经上线,支持 YouTube 和 Netflix。可访问 Chrome Web Store 安装使用。


桌面版

新版桌面版将会是对网页版的套壳和增强,即将发布。

相关阅读

一千小时(2024)

人人都能用英语(2010)

常见问题

请查询 文档 FAQ。


File: package.json

{
"private": true,
"workspaces": [
"enjoy",
"1000-hours",
"1000h-portal"
],
"scripts": {
"start:enjoy": "echo 'Please use yarn enjoy:start instead'",
"enjoy:add": "yarn workspace enjoy add",
"enjoy:remove": "yarn workspace enjoy remove",
"enjoy:dev": "yarn workspace enjoy dev",
"enjoy:start": "yarn workspace enjoy start",
"enjoy:test": "yarn workspace enjoy test",
"enjoy:test:main": "yarn workspace enjoy test:main",
"enjoy:test:renderer": "yarn workspace enjoy test:renderer",
"enjoy:package": "yarn workspace enjoy package",
"enjoy:make": "yarn workspace enjoy make",
"enjoy:publish": "yarn workspace enjoy publish",
"enjoy:lint": "yarn workspace enjoy eslint --ext .ts,.tsx .",
"enjoy:create-migration": "yarn workspace enjoy create-migration",
"enjoy:sourcemap": "yarn workspace enjoy sourcemap",
"docs:dev": "yarn workspace 1000-hours dev",
"docs:build": "yarn workspace 1000-hours build",
"docs:preview": "yarn workspace 1000-hours preview",
"portal:generate": "yarn workspace 1000h-portal generate"
},
"packageManager": "[email protected]",
"engines": {
"node": ">=20.0.0"
}
}


File: .yarnrc.yml

enableInlineBuilds: true

nmHoistingLimits: workspaces

nodeLinker: node-modules

yarnPath: .yarn/releases/yarn-4.6.0.cjs


File: 1000-hours/README.md

1000 Hours with Attention Paid

This is the repo of 1000h.org.

By paying your attention into 1000 hours, you can master anything you need.


File: 1000-hours/index.md


https://vitepress.dev/reference/default-theme-home-page

layout: home

hero:
name: "一千小时"
text: "用你的注意力填满一千小时就能练成任何你所需要的技能……"

text: "做到就是往 1000 小时里倾注自己的注意力……"

tagline: 所谓努力无非就是短时间内足量重复。 — 李笑来
actions:
- theme: brand
text: 简要说明
link: /intro
- theme: brand
text: 训练任务
link: /training-tasks/kick-off
- theme: brand
text: 语音塑造
link: /sounds-of-american-english/0-intro
- theme: brand
text: 大脑内部
link: /in-the-brain/01-inifinite
- theme: brand
text: 自我训练
link: /self-training/00-intro
- theme: alt
text: Enjoy App
link: https://enjoy.bot



File: 1000-hours/intro.md

[Binary file]


File: 1000-hours/package.json

{
"name": "1000-hours",
"devDependencies": {
"@cloudflare/kv-asset-handler": "^0.3.4",
"markdown-it-footnote": "^4.0.0",
"markdown-it-ins": "^4.0.0",
"markdown-it-mark": "^4.0.0",
"markdown-it-mathjax3": "^4.3.2",
"markdown-it-sub": "^2.0.0",
"markdown-it-sup": "^2.0.0",
"mermaid": "^11.5.0",
"sass": "^1.85.1",
"vitepress": "^1.6.3",
"vitepress-plugin-mermaid": "^2.0.17",
"vue": "^3.5.13"
},
"scripts": {
"dev": "vitepress dev",
"build": "vitepress build",
"preview": "vitepress preview"
},
"dependencies": {
"cheerio": "^1.0.0",
"swiper": "^11.2.5"
}
}


File: 1000-hours/what.md

[Binary file]


File: 1000-hours/why.md

[Binary file]


File: 1000-hours/enjoy-app/ai-assistant.md

简介

所有智能助手均以 对话 的形式呈现,添加一个对话即添加一个智能助手。

左侧栏点击 智能助手 即可进入。

添加对话

点击 新对话 按钮,弹窗出现预设的 AI 角色,可以快速创建有用的智能助手,也可以选择自定义。

创建对话前,需要先填写相关的配置,最重要的几项是:

  • AI 类型,分为 GPT 和 TTS 两种;
  • AI 引擎,每次新建都将加载 默认 AI 引擎,创建时可以修改,创建后无法修改;
  • 角色定义,GPT 类型时可以定义,即将 AI 赋予一个特定的角色以得到想要的回答;

修改对话

在对话页面,右上角齿轮可以打开对话的配置,进行修改,或者删除。需要注意的是,AI 类型和 AI 引擎无法修改,需要变更时请新建一个对话。


File: 1000-hours/enjoy-app/audios.md

音频资源

利用音视频资源进行跟读训练是 Enjoy 的核心功能之一。

添加音频资源

Enjoy 支持添加本地的音频资源,和在线资源。在音频页面,点击 添加资源,在弹窗中输入网址,或者点击 本地文件 选择本地计算机的音频文件即可添加。

如果是在线资源,Enjoy 会将文件下载至默认的下载文件夹(Downdoads 或者 我的下载),然后再自动添加至 资源库。

跟读音频

添加成功后,会自动跳转至音频播放页面。

打开时,需要先解析音频波形数据(并生成 Pitch contour)和生成音频字幕(使用 语音转文本服务)。首次打开时,可能需要等待一些时间。所需数据生成成功之后,后续再次打开时的速度会比较快。

::: tip 卡在加载页面怎么办?
打开音频页面时,会先按照以下步骤进行加载:

  1. 解析音频波形数据
  2. 语音转文本

如果长时间卡在第一步,可能是因为音频太大(主要跟音频时长有关)导致加载时间过长,甚至失败。如果不是音频大小的原因,可能是出现了其他 bug,请联系开发者。

如果第二步语音转文本失败,请检查是否在正在使用本地 whisper 组件进行语音转文本,在某些电脑上可能因为兼容性和未知问题导致无法使用。如果出现这种情况,请在 语音转文本服务设置 中改用其他语音转文本的云服务。
:::

播放

点击播放键(或者快捷键 Space)即可播放或者暂停音频。

Enjoy 会将音频按照句子切分,默认播放模式为“播放单句”,以便逐句反复听练。

其他可选的播放模式有:

  • 单句循环
  • 播放所有

智能断句

Enjoy 按照原音的停顿和标点符号,将当前句子分成几个断句,以便逐一反复练习。

你也可以通过点击当前句子的任意词语(或同时按下 Shift 进行多选)进行选中单词或者短语,进行听练。

录音

Enjoy 会将音频按照句子切分,用户以句子为单位进行跟读练习。在激活的音频句子下,点击红色的录音按钮(或者快捷键 r),即可开始录音,用户可以模仿音频朗读当前句子作为练习。

* 音频播放页面

::: tip 录音权限
在 Mac 电脑上,首次使用录音功能时,会弹窗请求麦克风的使用权限,请务必点允许,否则无法使用录音功能。
:::

录音对比

将录音的 Pitch contour 与原音对比,以便自纠发音。对比状态下,按下播放键,会同时播放录音和原音。

* 录音于原音对比

发音评估

Enjoy 集成了微软 Azure 的发音评估功能,作为自我的发音检查参考。

该功能会以录音时的句子文本作为参考,评估录音的发音情况,各指标的详细说明可以参考微软的 官方文档。

* 发音评估示例

::: warning 发音评估的使用建议
该功能是收费功能,每次使用均会在 Enjoy 账户的余额扣费,如果余额不足则需要 充值 后才可继续使用。

值得注意的是,发音评估更侧重于单词的发音是否正确,无法评估音调变化是否正确。
:::

修改音频信息

在音频页面上方,切换至列表模式,即可以对音频进行修改操作,例如修改音频标题,添加描述,和删除音频等。


File: 1000-hours/enjoy-app/changelog.md

[Binary file]


File: 1000-hours/enjoy-app/chat-copilot.md

Copilot

为了更方便地利用 AI 提供的帮助,在 Enjoy 任意页面,均可激活聊天功能,即 Copilot。

默认快捷键是 Ctrl + L(Windows) 或 Cmd + L(Mac),也可以点击右上角 💡 图标激活。

这意味着在使用 Enjoy 学习的过程中,遇到任何问题时,你可以随时激活右侧的聊天窗口,与 AI 进行对话。


File: 1000-hours/enjoy-app/chat-group.md

[Binary file]


File: 1000-hours/enjoy-app/chat-with-agent.md

与智能体对话

新建智能体

在 聊天 页面左侧栏右上角,点 + 按钮,弹出添加智能体对话框。

目前 Enjoy 的智能体支持两种类别:

  • GPT
  • TTS

GPT 智能体可以通过设定不同的提示语,扮演不同的角色,与用户进行文本对话。

TTS 智能体可以将用户输入的文本转换为语音,可以设定不同的语言和音色。

GPT 智能体

当选择 GPT 类别时,Enjoy 内置了部分提示语的模板,可以从 模板 中选择。

选择任意模板后,智能体名称、描述、提示语会自动填充,也可以根据具体需求进行修改。

点 保存 按钮,智能体即创建成功。

TTS 智能体

当选择 TTS 类别时,除了名称和描述,还需要对 TTS 进行配置。

  • 语音引擎: 如果想使用自备 OpenAI 密钥,可以选择 OpenAI,否则选择 EnjoyAI。
  • 语音模型: 当使用 EnjoyAI 时,支持 OpenAI 的两个模型,以及 Azure/Speech,后者支持更多语言和口音;
  • TTS 语言: 仅对 Azure/Speech 有效,支持更多语言和口音;
  • 语音音色: 当使用 Azure/Speech 时,不用语言对应多种音色,选择即可。

点 保存 按钮,智能体即创建成功。

新建聊天

选择任意智能体,在左侧栏下点击 新聊天 按钮,即可开始对话。

GPT 智能体会根据提示语的设定回答用户的任何问题。

TTS 智能体会把用户输入的任意文本转换为语音。

聊天设置

在聊天中,点击右上角齿轮图标,可以对聊天、当前聊天成员进行详细设置。

::: info 提示

在聊天设置中,可以设置 额外提示语,该提示语将会被聊天中的所有智能体共享,作为聊天成员额外的 SYSTEM PRMOPT。

例如,如果你希望当前聊天限定在某个主题,可以通过聊天的 额外提示语 进行设置。

:::

聊天成员设置

当智能体被添加至新聊天中时,均可以对其进行更详细的设置。其 LLM 设置默认值为 软件设置 中的 默认 AI 模型,TTS 设置默认值为 软件设置 中的 默认 TTS 模型。

::: info 提示

在聊天成员设置中,可以设置 额外提示语,与聊天设置中的 额外提示语 类似,但是该提示语仅对当前智能体生效。

例如,多个智能体正在当前聊天中辩论,你希望当前智能体在当前聊天中保持某个特定观点,可以通过聊天成员的 额外提示语 进行设置。

在 提示语预览 中,可以实时看到当前智能体在当前聊天中完整的 SYSTEM PROMPT,其中依次包含了 聊天额外提示语、智能体自身的提示语 和作为 聊天成员的额外提示语。

:::

语音输入

在聊天中,点击输入框左侧的麦克风图标,可以激活语音输入。

录音后,Enjoy 会使用配置的 STT 服务将语音转换成文本,消息不会自动发出,而是处于编辑状态。

如果识别的文本不正确,可以手动修改,如果录音不理想,也可以重新录音。如果对自己的表达不满意,可以点击 修改润色,AI 给出修改建议,然后可以重新录音。

当一切确认无误时,你可以点击 发送 按钮,将消息发出,等待 AI 的回复。

聊天建议

如果你想和 AI 进行对话练习,在 聊天设置 中可以勾选 启用聊天助手, 在输入框右侧会出现一个魔法棒图标,点击后,AI 会根据当前的聊天记录,给出对话建议。


File: 1000-hours/enjoy-app/chat.md

简介

通过 Enjoy 的 聊天 功能,用户可以创建不同的智能体,通过于智能体对话的形式,实现各种不同的功能。

(该功能在 v0.6.0 版本中更新)


File: 1000-hours/enjoy-app/document-ebook.md

本地电子书

目前暂时支持的格式有:

  • epub
  • txt
  • markdown

点击左侧栏的 文档 进入,点击 添加资源 按钮,选择对应的文件即可。

文档设置

点击左上角的齿轮按钮,可以进行文档设置。例如是否进行自动翻译、连续朗读等。

文档翻译

文档每个段落顶部有翻译按钮,点击即可翻译。

文档播放

文档每个段落顶部有播放按钮,点击即可播放。

文档跟读

文档朗读语音生成后,可以点击 跟读训练 按钮,进行跟读。


File: 1000-hours/enjoy-app/document-webpage.md

在线文章

除了可以导入本地文档,Enjoy 还支持导入在线文章。

在添加资源窗口,直接输入文章的网址,即可开始阅读。

::: info 提示

Enjoy 会将网址中的内容下载到本地然后进行导入,部分网站可能会设置不同规则,导致内容无法正常下载。

:::


File: 1000-hours/enjoy-app/document.md

阅读文本简介

Enjoy 支持将本地文档或在线文章导入,进行跟读训练。

(该功能在 v0.7.0 版本中更新)


File: 1000-hours/enjoy-app/faq.md

常见问题

总是报网络错误怎么办?

如果登录时报 Network Error,发音评估或者使用其他功能时报 connect ETIMEDOUT 错误,可以打开浏览器(不要在微信里打开),尝试打开 https://enjoy.bot。

如果无法打开,或者跳转到了其他不相关页面,说明您当前的网络无法连接上 Enjoy 的服务。

可以按照以下步骤解决:

  1. 升级 Enjoy App 至 v0.3.2 以上;
  2. 在登录页面,点 高级设置(如果已登录,点 软件设置/高级设置),修改 API 设置,填入 https://api.getenjoyapp.com,点保存。

软件自动重载后即可。

另一种办法就是使用代理服务。

为什么下载不了 YouTube 视频?

国内网络无法直接访问 YouTube。如果您使用了代理,但无法全局代理,可以在 Enjoy 的 软件设置/高级设置/代理设置 中配置。其中代理地址请从您使用的代理软件中获取,例如 http://localhost:7890。

为什么无法分享录音到社区广场?

分享录音之前,软件需要将录音上传值资源服务器,无法分享多数是因为网络原因导致无法链接资源服务器。可以在 Enjoy 的 软件设置/高级设置/网络状态 中查看资源服务器的连接情况。如果无法连接,请使用全局代理,或者在 软件设置/高级设置/代理设置 中设置代理。

如何多设备使用同一个帐号?

Enjoy App 的大部分数据均保存在本地(即您的计算机硬盘),具体来说,保存在一个名为 EnjoyLibrary 的文件夹里。

Enjoy 目前不提供云同步的服务。如果您需要在多个设备上使用 Enjoy App,建议使用网盘服务来同步数据。

以百度网盘为例,可以参考以下步骤使用:

  1. 将 /EnjoyLirary 文件夹(即资源库保存路径)加入到百度网盘的同步列表中;
  2. 每次使用完 Enjoy App,关机之前,确保 /EnjoyLibrary 文件夹全部同步完成;
  3. 在第二部电脑上,利用网盘,将 /EnjoyLibrary 文件夹最新状态同步完成;
  4. 在第二部电脑上,登录相同的 Enjoy 帐号使用;
  5. 重复 2~4 步骤。

另外需要注意,在利用网盘同步的情况下,不要同一时间在不同设置使用相同的 Enjoy 帐号,这样会导致数据冲突。

怎样切换到 Enjoy AI?

如果您一开始使用自备的 OpenAI 密钥,想要切换至 Enjoy AI,可以参考以下步骤:

  • 软件设置 / 基本设置 / 默认 AI 引擎,点修改按钮,将引擎改为 Enjoy AI;

如果您之前有在用智能助手,请注意智能助手的对话,AI 引擎是无法修改的。或者切换默认引擎之后,需要新建一个对话使用。

超过每日使用限额怎么办?

Enjoy 的新用户会自动发放一定的体验金,新用户可以无需充值即可体验 Enjoy 的收费服务,但同时还有一个每天使用次数的限制,超过后则会报错。

只要充值任意金额一次,即可解除限制。

自备 OpenAI 密钥,还需要充值吗?

Enjoy App 很多功能都基于 AI。为了方便用户使用,Enjoy 提供了 EnjoyAI 服务,集成了当下流行的大模型服务商和热门模型供选择,用户只需要在 Enjoy 充值后即可使用。

当然,Enjoy 也允许用户自定义服务商和密钥,此种情况下,Enjoy 不会收取任何费用。

但是,发音评估功能并非 OpenAI 提供的服务,是 Enjoy 的收费功能,使用前必须保证 Enjoy 账户有余额。

为什么本地语音转文本服务无法使用?

Enjoy 集成了 whipser.cpp 作为本地的语音转文本(STT)服务,但是由于兼容性的问题,某些配置较低或者操作系统版本较低的电脑无法使用。

如果您遇到这种情况,Enjoy 提供了其他 STT 的云服务,可以前往 软件设置 进行配置。推荐优先使用 Azure AI。

403 Insufficient balance

遇到这个报错,说明您正在使用 Enjoy 的付费功能,但是账户余额不足了。

Enjoy 内有很多功能都由 AI 驱动,比如智能助手、智能翻译、句子分析等。如果您在 软件设置 中的配置了 OpenAI 作为默认 AI 引擎,在使用这些功能时候,会使用您配置的 OpenAI 信息进行实现,不会涉及 Enjoy 的扣费。

(需要注意的是,智能助手 的对话一旦创建,AI 引擎无法修改。如果需要切换,比如由 Enjoy AI 换成 Open AI,则需要新建一个对话)

另外,发音评估 是收费功能,并非 OpenAI 提供,所以无论 默认 AI 引擎 选了什么,使用发音评估时,总是会在 Enjoy 账户中扣费。

如果需要充值,请参考充值。

如何下载音频、录音

Enjoy 提供了音频、视频、录音的下载功能,以便可以在其他设备使用。


File: 1000-hours/enjoy-app/gpt-conversation.md

GPT 服务

当 AI 类型选择 GPT 时,AI 将会根据 角色定义 来回答你提出的所有问题。

例如定义一个 英语教练 的角色,可以将你发的所有文字翻译成地道的英文表达,再配合 TTS 将其转化成语音,即可作为跟读的材料。

详情可以参照使用案例:利用 AI 生成训练材料


File: 1000-hours/enjoy-app/index.md

Enjoy 简介

AI 是当今世界上最好的外语老师,Enjoy 做 AI 最好的助教。

::: warning 重要提示
Enjoy App 的开发仍处于早期的快速迭代阶段,文档可能落后于开发,导致功能描述可能不符,以最新发布的软件版本为准。
:::


File: 1000-hours/enjoy-app/install.md

下载安装

Enjoy App 是一个跨平台的桌面应用,可以在 Windows、Mac 和 Linux 等电脑设备上运行。

请根据电脑设备的操作系统,下载相应的版本安装使用。

当前最新版本:v0.7.9

Windows

支持 Windows 10 以上版本。

点击下载

下载后,双击即可安装。

::: tip Windows 10 安装报错怎么办?
Windows 10 系统在安装时可能会报错:

bash
A JavaScript error occurred in the main process

这是由于缺少某些依赖导致,可以尝试以下步骤解决:

  1. 升级系统,将操作系统升级到最新版本;
  2. 下载 vs_redist.x64.exe 安装。

然后再尝试安装 Enjoy。
:::

Mac

根据使用 Mac 电脑的芯片不同,需要下载不同的版本。

::: info 如何查看本机配置
M1 以后的 Mac 电脑型号(M1、M2、M3),均为 Silicon 芯片。

如果你不清楚自己电脑的具体型号,可以点击屏幕左上方的  符号,在弹出来的菜单中,选择第一个选项 “关于本机(About This Mac)”,在弹出的窗口中,即可看到本机的硬件和系统配置。

如果显示的是 Apple M 系列,即为 Silicon 芯片。
:::

::: warning 警告
推荐使用 macOS 12 及以上版本,macOS 11 可能无法使用部分功能。
:::

Linux

请根据不同发行版本选用安装文件。

历史版本

所有历史版本均可在 这里 找到。


File: 1000-hours/enjoy-app/settings.md

[Binary file]


File: 1000-hours/enjoy-app/tts-conversation.md

TTS 服务

当 AI 类型选择 TTS 时,该对话将提供文本转语音(Text to Speech)服务,即 AI 会将你发出的任意文本转化成语音(音频文件)。生成的语音,可以直接添加至资源库进行跟读练习。

在设置里可以修改语音的角色。


File: 1000-hours/enjoy-app/use-case-generate-audio-resources.md

使用案例:利用 AI 生成训练材料

用外语说我们自己想说的话是学习外语的其中一个重要目的。市面上的口语书实际上并不实用,因为那些话大都不是我们想要说的,我们需要创建专属自己的口语书。使用 Enjoy 可以很容易做到这一点。

确保 AI 服务正常

在开始之前,先要确保 AI 服务可以正常使用,要么配置好自己的 OpenAI 密钥,要么使用 Enjoy 提供的 AI 服务并确保账户 余额 充足。

创建英语教练

点击 Enjoy 左侧栏的 智能助手 进入页面,点击 新对话 开始创建。

角色定义选择预设的 英语教练。

* 选择 AI 角色

具体配置里,根据具体情况,修改 AI 引擎 为 OpenAI 或者 Enjoy AI。如果使用 OpenAI,可能还需要检查配置 接口地址。

将配置拉到最下面,TTS 引擎 也需要做相应配置。

* 对话设置

配置完成后,点击下面的 确认 按钮,即可创建成功。

发送任意文字

智能助手的使用跟聊天窗口类似,将你想要说的话发给 英语教练,作为回复,AI 会将你的文字翻译成地道的纽约腔英语。

生成语音

如果你对 AI 的回复感到满意,点击信息下方的朗读图标,将其转化为语音。

* 英语教练对话

跟读训练

继而点击麦克风图标,将该语音加入资源库,进行跟读训练。

* 添加跟读训练

随后也可以在 音频页面 找到该材料,继续练习。


File: 1000-hours/enjoy-app/videos.md

视频资源

视频资源的使用与 音频资源 基本一致。

* 视频播放页面

视频大小的限制

过大的视频文件会导致加载卡死而无法使用,目前 Enjoy 将添加视频的大小限制在 100 Mb,超过则会提示添加失败。

后续会针对大文件做相应优化,以支持更大的文件。

Youtube 视频

Enjoy 支持添加 Youtube 视频,添加资源时直接输入 Youtobe 网址即可。当然前提是当前网络条件支持访问 Youtube。


File: 1000-hours/in-the-brain/01-inifinite.md

[Binary file]


2. 一切都是连接

我们能做的一切,对大脑来说,都只不过是 “神经元间连接”。

当然,我们能够完成的一切动作,无论是肢体动作还是思考过程,都复杂到不可能仅仅动用两个神经元间的连接就可以完成 —— 每一个我们认为轻而易举的动作,对大脑来说,都是一个又一个实际上非常庞大且又复杂的,由众多神经元连接起来构成的 “基础功能局域网”(学名 “神经回路”)相互通讯相互协作的结果。

而众多的 “基础功能局域网” 还可以灵活地组合,形成 “高级功能局域网” 完成更为复杂更为精巧的任务……

大脑内的神经元实在太多了,多到每个人都终生用不完的地步 —— 这就是为什么大脑具备极强可塑性的原因。即便大脑的某一部分损坏了,大脑还有充足的未启用神经元完全可以重新学会损坏的那一部分曾经拥有的功能 —— 弄不好可以学得更好。

大脑内的神经元通过相互连接构成了一个四通八达的网络。在这个网络里,不存在所谓的 “孤岛”,只不过是远近而已,只不过是直接间接而已,每个 “基础功能局域网” 之间最终都可以相互通讯。

这就意味着说,在大脑里,没有 “用不上的局域网”…… 任何技能,只要的确被大脑掌握,那么,本质上来看,它其实都是被拆解成很多个 “基础功能局域网” 之后存在于整个网络之中,随时组合起来调用。关键在于,这些基础功能局域网还随时可能用其它的方式组合起来,完成新的功能…… 所谓的 “融会贯通”,就是这样的过程。

对大脑来说,不可能存在学了之后竟然用不上的技能,学得越多越好,学得越多越快。人们生活中感受到的 “学了之后用不上”,其实是一种幻觉,因为对大脑来说,那原本应该是 “从来都没学会过”。


File: 1000-hours/in-the-brain/03-sports.md

[Binary file]


File: 1000-hours/in-the-brain/04-literature.md

[Binary file]


File: 1000-hours/in-the-brain/05-energy.md

[Binary file]


File: 1000-hours/in-the-brain/06-use-or-lose.md

6. 用进废退循环利用

大脑天生具备节能倾向,它就是对节能异常痴迷,只要可能它就会启动节能模式 —— 而且,无需问询、没得商量、也不提供可选设置,动不动就直接进入节能模式……

首先,大脑会自动且又严格地执行大自然的规律,用进废退。

用得着的,不断进化,用不着的,就当它不存在。对大脑来说,它甚至不在乎某个东西是否属于自己的身体,只要用得足够多,大脑就会将其内化,认为是属于自己的。比如,你的手机,画家手里的笔,司机手中的方向盘,罗尼·奥沙利文手里的台球杆,足球场上 22 名运动员一起玩的球……

至于你身体上那些你自己并不常用或者并不在意的部位,比如,不会弹琴的手指,不会跑也跑不快的腿,不能分辨气味的鼻子,不能品尝味道的舌头,不能听清楚的耳朵,不能看清楚的眼睛…… 大脑对这类器官的态度是,随它去罢。

因为大脑的节能倾向,因为用进废退的执行,大脑总是倾向于只按需学习。它觉得没用的东西,它不会为其耗费能量,别人说什么都没用。若是它自己真觉得必需,谁都拦不住。为什么?就是为了节能。

大脑的节能倾向,还演化出了另外一个机制,循环利用。

大脑学会的一切,本质上都是连接,都是局域网…… 可问题在于,当初这些连接和局域网的创建,可是耗费了很多能量的!所以,大脑往往不会断掉那些连接,废弃那些局域网 —— 必须回收,必须留作它用。

大脑在进行循环利用的时候,对神经元间连接的强度也有要求,当然是优先采用那些强度更高的连接,当然优先采用那些通讯效率更高的局域网…… 反过来,在需要的时候,有更多更强的神经元连接、通讯效率更高的局域网可供循环利用,只能意味着学得更好学得更快。

这也是为什么有一部分人越老学得越多越快越好的根本原因。与大多数人误以为的相反,大脑原本就应该也可以学得越多越快越好。大多数人之所以并非如此,不是因为大脑越老越差,而是因为他们从一开始就没有积累,仅此而已。

大脑按需学习的倾向,有时会阻止我们的学习 —— 因为在一个技能真正练好之前,大脑可能很难相信它的作用,这是很普遍的现象。但,大脑的循环利用机制,却总是在奖励学习,因为这个机制的存在,使得 “无论学什么最终都有用”,反正一切都是连接,一切都是网络,到最后实际产生的现象和效果是,学得越多,学得越快,学得越好。

从结果上来看,循环利用机制其实是对超额学习的奖励。大多数人终生被按需学习所限制,只有少数人经过时间的考验之后被循环利用机制反复奖励。


File: 1000-hours/in-the-brain/07-repitition.md

[Binary file]


File: 1000-hours/in-the-brain/08-compitition.md

8. 新旧网络间的竞争

当我们需要完成一项任务的时候,大脑会检索整个网络内的所有局域网,无论是高级功能局域网,还是基础功能局域网,调用必要的局域网进行组合发挥作用,进而完成任务。

如果完全找不到,那就只能去学了…… 得去新建连接,新建局域网。

这本来并不难,因为大脑从始至终都在做这样的事情,也擅长干这样的事情…… 但,它更擅长干的是另外一件事,还是出自于对节能的渴望和痴迷,它会借用近似连接或者近似网络,不顾一切地完成任务…… 但准确地说,那不是完成任务,而是近似地完成任务。

为什么?它就是想节能,它就是会不择手段地节能。

一项任务如此倒也常常看不出什么…… 但,很多任务都如此就完蛋了,这就好像 $0.8^5 \approx 0.327$ 或者 $0.7^{10} \approx 0.028$ 一样…… 并且,众多任务组合的时候,若是最重要的任务差一点剩下的就往往全都白费了。所以,这种近似调用以及近似完成的危害就极为可怕。

调用近似连接、近似网络,近似完成任务,是一种越来越强大的习惯,当它强大到一定地步的时候,就会变成彻底下意识的习惯,自己完全意识不到,并且常常伴随着洋洋自得。

这就是绝大多数人的感受,随着岁数的增加,学习变得越来越困难。并不是因为新建连接新建局域网的难度增加了 —— 事实上,应该是越来越容易才对,因为从另外一个层面来看,还有过去建立了现在暂时用不上的连接和局域网能循环利用呢。而是因为旧的近似连接近似局域网的竞争力太大了,并且,在不知不觉中,它们的竞争力还被培养得越来越大。

人们绝大多数在学习效果上的差异,恨不得 99.99%,其实全都来自于这一个小小的细节,而不是人们通常误以为的所谓天分或者聪明:

能否甄别自己是否正在调用近似连接近似网络?

只要能够甄别,就能通过努力,即,短时间内足量重复,去新建连接新建网络。但,如果不能甄别,一切就无从谈起。关键在于,这个甄别的动作,99% 的情况下只能靠自己,并且,越是靠自己,那甄别能力就会越来越强。


File: 1000-hours/in-the-brain/09-unnoticed.md

[Binary file]


File: 1000-hours/in-the-brain/10-unloading.md

[Binary file]


File: 1000-hours/in-the-brain/11-burden.md

[Binary file]


File: 1000-hours/in-the-brain/12-unreproducible.md

12. 有限排它不可再生

注意力是相当有限且又排它甚至还不可再生的资源。钱可以攒,时间可以省,但注意力这个东西,攒不下来的同时也省不下。

注意力高度集中,对大脑来说是一项超级耗能的活动,因为它意味着大脑需要调动多个区域且相互之间要高度协同,集中的化学反应,集中的物理放电 —— 需要不断补充糖和氧。但,人的整体体力有限,也就决定了注意力的上限。

从印刷术普及开始,到电子媒介的兴起,再到互联网吞噬整个世界,媒体统治了世界。我们的注意力被各路人马争夺,变成了极为稀缺的资源。连整个经济系统,都变得将其称呼为 “注意力经济” 比将其称呼为 “商品经济” 更为恰当。

移动互联网 2010 年前后崛起,仅仅十年不到的时间里,就大幅度降低了整个人类的注意广度(Attention Span),有统计调查表明,现在的人,普遍的注意广度不超过 1.92 分钟,他们在一整天 16 个小时的清醒时间里,拿起手机至少 500 次……

2 分钟不到的注意广度,无法完成任何有意义的学习,更不用提学习之后那更为重要的练习了。一般来说,注意力集中时长不超过 25 分钟左右就实际上聊胜于无 —— 否则,对大脑来说,新建连接就是不可能的,更别提什么新建网络了。可实际上,学习任何新技能,在一天的时间里可能需要 5 ~ 10 个甚至更多的注意力集中的 25 分钟。

人类的大脑进化了几十万年才成为今天的样子。大脑的超级可塑性,原本是这几十万年里进化的绝对优势。突然之间,在智能设备成为新的人体器官,媒体统治的注意力经济时代,大脑可塑性变成了极其危险的功能,它可以被塑造得多好,那么,更大程度上,它就可以被破坏得多狠。

只不过是十年时间,相对于几十万年的历史,这真是转瞬之间,白马尚未来得及过隙,一代青少年中绝大多大脑的大脑皮层就已经成了废墟。也许我们可以重建,但,哪怕拆除并清理那些废墟就有可能耗尽所有的资源…… 非常无奈。

保护自己的注意力,注定是下一代人最核心的生存技能 —— 只可惜,绝大多数人并不知道,所以也不在意。


File: 1000-hours/in-the-brain/13-chemical.md

13. 一切都是化学反应

一切的念头,无论是基础的想法,还是高级的决策,甚至无法说明的各种情绪,其实都是大脑这个物理上存在的器官里分泌的化学物质之间发生的化学反应…… 于是,很多时候,很多念头其实相当随机,并且转瞬即逝。

当我们从梦中醒来,如果保持原来的姿势闭上眼继续睡过去,那么就很有可能回到原来的梦境(或者起码是类似的梦境)—— 可如果换了姿势就回不去了。这是因为换姿势会使大脑里的各种化学物质改变位置……

日常生活中,当我们的脑子里闯入令我们不适的念头时,我们会下意识地使劲晃晃脑袋,希望能够摆脱它 —— 这一点都不荒唐,因为这样的动作真的能起作用,因为大脑里的化学物质,哪怕是细微的位置上的变化,也可能导致很不一样的化学反应…… 于是,晃晃脑袋,化学反应变了,念头真有可能变,或者真有可能消失。

同样的道理,当我们紧张时,需要大口深呼吸 —— 也可以解释为大脑内部化学反应突然变得相对过于剧烈,于是需要大量的能量补充,氧和糖,否则就无法继续正常工作。

化学反应可能随机且并不稳定,所以,跟着感觉走其实非常可怕。这就是为什么我们要习惯于认真审视我们自身每个念头的根本原因了。我们不希望也不可能过于随机且过于不稳定地生活。我们挣扎着寻找方向并保持方向,就是为了摆脱随机,寻求稳定。

大脑内的各种化学反应,主要结果就是不同的神经元之间的物理放电,使它们相互连接,相互通讯,最终以某种方式协调各个身体器官。某一系列化学反应及其对应的念头,如果反复发生的话,就会被强化,直至物理器官形成固定的工作流程。事实上,人们有太多未经自我审核的念头和与之相应的习惯。


File: 1000-hours/in-the-brain/14-threshold.md

[Binary file]


File: 1000-hours/public/robots.txt

User-agent: *
Allow: /


File: 1000-hours/self-training/00-intro.md

1. 自我训练手册

这一年的集训拉练,核心任务只有两个,语音塑造和记忆扩展。这一年的另外一个衡量指标是每天至少三个小时 并且要做到 一年内至少投入一千小时的注意力。

不要误以为最重要的收获只是把英语变成第一语言…… 在这个过程中,我们所积累并获得的,除了任务目标的达成之外,更重要的是(可能是很多人一生中第一次)完整的自学经历。

不仅如此,还有更重要的东西 —— 这个完整的自学经历,肯定会改变一个人对整个教育的看法,进而影响各种选择,进而改变一个人甚至一家人的命运。

作为作者,我无法把自己只限制在英语教学这个领域。理论上来讲,我们用同样的方式可以学天下所有的东西,只要自己觉得有必要。

某种意义上,这是我一个人与地球上整个教育体系的争斗,为了自家的孩子 —— 换个角度看,这其实是一个唐吉柯德的故事,一个疯子非要打败风车,任人评说。


File: 1000-hours/self-training/01-fight.md

[Binary file]


File: 1000-hours/self-training/02-last-resort.md

2. 只能自学

学习这个词,由学和习两个字构成。前面是学,求学的学;后面是习,练习的习。在中文里它们原本是各自独立的两个词。孔子曰,学而时习之,不亦乐乎? 后来的中文里,人们干脆把学习两个字组合起来构成一个词,意思就是说,求学只是一部分,而另外还有一部分是练习。

花钱买书,花钱上学,到此为止,只是知识获取。家长也好、老师也好、学校也罢,甚至整个社会一直在误解学习,家长们不吝于投入大把的金钱把自家孩子送进学校,把整个教育外包给学校里的老师…… 学校里的老师们主要在干嘛?把书本里的知识讲一遍。再负责一点就反复讲,做到 “的确将所谓的知识告知了学生”。

然而,这只不过是教育这个万里长征的第一步而已。后面的练习呢?为了在自己大脑里新建连接新建网络而必须进行的短时间内足量重复呢?学校也好,老师也罢,完全无能为力 —— 并且,理直气壮地认为那是学生自己的事,跟自己没关系…… 这本身倒也没错,的确是学生自己的事。

可问题在于,父母花钱买的商品及服务,就只是或者只能是发教材讲解教材吗?小学三年级之前也许还有必要,等常用字词已经搞定了,自己也会查词典了,电脑上有搜索引擎甚至人工智能,真的有必要非得花那么多钱找人讲给自己听吗?

教育越来越昂贵,可是,过往的两三百年里,全世界都一样,收着最贵且越来越贵的价格,交付的是一直是最不重要的那个服务,发书讲书而已…… 实在觉得对不住,就使劲留作业,这就算对的起那么昂贵的费用了,是不是有点说不过去?

很多家长没有反应过来。人类进入 21 世纪之后,必要的教育所需要的任何知识,早就已经接近于免费了。网络上没有找不到的基础知识及其讲解。Wikipedia 和 Youtube 已经是天下最好的学校了。再高级一点的知识,再系统一点的讲解,只要识字就可以去买书。到 2020 年,Amazon 上在售图书已经超过 5 亿册,没有你找不到的东西,平均每本书 25 美元,与那么昂贵的学费相比,这仍然是几近于零的免费!

绝大多数人的问题都一样,都肯花钱,也有一些肯花时间,却全都不肯花注意力 —— 说实话,他们也不知道注意力应该花到哪里,姑且不论有没有足够的注意力。

学习,学与习,求学与练习相比,显然练习更为重要。知道与做到之间存在着非常遥远的距离 —— 时间上的距离。

学外语就是很好的例子。我可以清楚详细且又系统地把各个英文音素的发音方式和要点写给你、讲给你,还可以反复讲…… 然后你的确可以表示自己知道了,但你真的能做到吗?马上能做好吗?不是不一定,而是刚开始一定不能。

学了不练就没有用。练习必然耗费大量的时间。

并且,练就只能自己练。学的时候也许大伙一起更有效果,但练的时候大伙一起往往都会被最差的那一个拖后腿。并且,每个人都不一样,每个人的难点不同,每个人之前的积累不同,每个人练习的方式不同…… 所以,绝大多数情况下,有用的练习只能是个性化的,越是关键点越是如此。

所以说,练习不仅只能靠自己,绝大多数情况下还是非常私人的。我可以告诉你一个秘密:只要肯练,不管有没有天分,任何人都可以学会弹奏乐器,都至少能达到一定的程度。练过琴的人都知道,练琴跟练任何东西一样,只能私下练。刚开始那么笨拙,弹出来那么难听,自己不好意思让别人听到,别人听到了也的确不开心。没有初学者愿意在舞台上练习,不是吗?

练习必须私下练还有另外一个理由,与我们的大脑机制有关。学习的时候,大脑最怕的被他人关注,被越多的人关注越可怕。因为大脑最怕死,尤其怕社死。一旦意识到自己被关注,大脑就要把注意力分散出去,而后很可能马上就宕机。这叫聚光灯效应(Spotlight effect)。如果你突然意识到所有人都在看着你走路的话,突然之间,你有可能干脆不会走路了……

自己花时间练习也许并不够,因为很多人练习的时候注意力并不集中。一不小心就变成了在走神的状态下肢体在进行下意识的机械重复。

科学家们提出了一个极为重要的概念:刻意练习。按照他们一致的说法,刻意练习的关键在于不断提高练习的难度,不断突破舒适区,否则,更多的练习不仅不会带来进步,还会导致一定的退步。

练习当然要努力,即,短时间内足量重复。那么刻意练习呢?关键在于哪里?我觉得:

刻意练习的关键在于注意力:

在练习的过程中要有组织有计划有系统地调用并集中自己的注意力,发现问题,解决问题……

换言之,注意力不集中的练习往往会沦为无效练习,只浪费了时间,却没有任何收获。

刚才我们说,知道与做到之间存在着非常遥远的距离 —— 时间上的距离。现在,我们还得继续补充。这个时间必须注满了注意力才有效,空洞的时间总是无效…… 请问,这个时间里应该是谁的注意力?只能是自己的注意力。谁往时间里倾注注意力,那本事就长在谁身上。

练习就是这样,在自己的空间里往自己的时间里倾注自己的注意力,也许偶尔需要他人帮助,但,总体上,练习就是与他人无关,只能是自己认真做的事情。

自学,并不意味着说一定要完全孤立自己,虽然集中的注意力只能出自自己,虽然有效的练习常常只能是私人甚至私密的…… 自学的关键在于主动。主动向他人求教就很关键。主动锤炼自己的教师品味也很重要,比如,你最好在能分辨出谁是真正的好老师的同时,也能分辨出谁是跳大神的二货…… 这就需要自己主动建立一系列的评判标准。然而,不自学的人,无论如何都不可能有任何真正恰当且有效的标准。

人天生是社交动物。大脑内部是无垠的网络,大脑外部也是无垠的网络。人们在相互交流相互观察之中潜移默化地学习。社交过程中形成的各种微调,永远是教科书、老师和学校无法替代也无法达成的东西。想想那个例子:你的口音就是会因为生活地点的变化而不知不觉发生变化,没有什么教科书、老师或者学校可能导致这种不知不觉发生的微调。

所以,主动寻找更好的环境也很重要。正如在大家都挥霍的时代里你也会不由自主地更加挥霍一样,若是大家都在玩乐沉沦你会不由自主地浪费更多时间。同样的道理,如果你身处在大家都对学习感兴趣的环境里,那么,你自然而然就会对学习更感兴趣;在大家都努力工作的环境里,你自然会比原来更加努力。万一你身边积极向上的人更多且很多,你也自然会找到更多的理由奋发图强。

主动帮助他人最重要。帮助他人可能是天下成本最低却又收益最高的社交手段。关键在于,帮助他人发现问题解决问题,是锻炼自己的机会,因此建设得更好的是自己的大脑皮层。学习的核心之一就是发现问题解决问题,可是,仅靠自己一个人很难有机会遇到所有问题,不是吗?于是,帮助他人虽然可以收获感激,但更重要的另外一个副作用是获得了原本可能并不存在的锻炼自己大脑的机会。

学校原本应该起好作用,但最终总是在大多数人身上普遍留下了这样那样令人无比遗憾的印记。学校里枯燥的课堂、无聊且无尽的作业、没完没了大大小小的考试,虽然都出于好意,最终磨灭的是学生的主动。十几年如一日,学生们一直在被动地疲于奔命…… 到最后甚至在他们的眼里,父母竟然沦为了学校的帮凶。终于,他们最后唯一的主动诉求只剩下逃离的渴望。斗转星移之间,他们中的绝大多数不知不觉地彻底失去了主动能力。

自学全靠主动。目标要自己找,动力要自己挖,计划要自己做,困难要自己克服,错误要自己纠正,注意力要自己集中,好坏最终只能靠自己验收,后果只能自己承担…… 若是竟然失去了主动能力,这一切就无从谈起。

社会上绝大多数人根本就没有自学能力。可说实话,这事儿很难全怪他们,他们原本不是那个样子,上学前都好好的,主动的能力非常完整。那责怪学校有没有用呢?首先没用,其次更重要的是看透真相。因为这世界原本就是这个样子,从来都是这个样子,古今中外都一样:好的意图从来都并一定不保证好的结果…… 并且,重要的事情从来都只能靠自己,越是重要的事情越是如此。


File: 1000-hours/self-training/03-trials-and-errors.md

3. 生学硬练

无论我们做什么事情,大脑都要协调很多的器官才能够完成,它不仅要协调大脑外的各种器官,它还要协调自身内部的多个部位。无论是大脑外部的种种器官还是内部的各个部位,对大脑来说,都是大脑自身内部无数个局域网的联动……

这些局域网都是逐步建立起来的 —— 每一个都是通过学习建立,通过大量重复使用强化。无论我们想要学什么,第一步总是注意力集中地观察 —— 调用任何必要的感官,视觉、听觉或触觉等等 —— 然后我们才开始尝试……

几乎总是一模一样的流程:一旦开始尝试,首先遇到的肯定是不可能,要经过反复尝试之后才会遇到可能,可能之后马上遇到的是笨拙,再过一段时间才可能是熟练,而后可能是漫长的停滞,要经过很多刻意练习之后才可能精通……

mermaid
flowchart LR
impossible([不可能])-..->possible([可能])-->clumsiness([笨拙])-..->adaptness([熟练])-->plateau([停滞])-..->mastery([精通])

这之中最重要且又最难的,当然是从不可能到可能的跨越,那可是 0 到 1 的突破。

核心的难度首先在于,我们的观察永远不大可能完整。举个例子,我的母语之一是朝鲜语,所以我能发出齿龈颤音(Voiced alveolar trill)。我家有个小朋友小名叫都都(dū dū),平日里我逗他玩的时候,会故意用齿龈颤音喊他名字:

他们觉得很有趣,也想发出同样的声音。可在接下来的很长一段时间里,他们就是发不出这个音。他们会反复尝试,但就是做不到。他们发出的可能是用嘴唇发出来的颤音 —— 只不过,在那一瞬间他们自己也知道那不是他们听到的那种颤音。他们会继续想办法,换各种各样的方式尝试,但依然不行……

主要原因在于,他们看不到我的舌尖是如何在齿龈部位颤动的 —— 这就是无法完整观察造成的难度。另外,我还真讲不清楚我到底是怎么做到的,我会误以为我从小就会…… 实际上并非如此,当初的我和我现在的孩子一样,刚开始怎么也发不出这个声音,很久之后才能发出那种声音,但,我早就忘了自己其实是通过无数次尝试才习得的,竟然误以为那是一种天生的能力。

幸亏,在 Wikipedia 上,有这种齿龈颤音的完整且又系统的讲解 —— 有 37 种语言的翻译,其中,英文版是 Voiced alveolar trill,中文版是齿龈颤音…… 不仅有详尽的文字讲解,还有慢动作视频演示:

现在,不仅观察完整,方法论也很系统…… 可是,看过之后就能做到吗?显然还是不可能。大脑内暂时还没有对应的可供调用的基础功能性局域网,需要新建。并且需要的还不止一两个,别看只是这么小小的一个动作,实际上却需要远比想象多得多的基础功能性局域网相互协调。新建连接新建网络就是需要时间,无论观察完不完整、方法论存不存在,时间总是不可跨越。

那如何才能突破呢?

在我长大的年代里,香港连续剧在中国大火,又由于那个时候可看的东西少,往往是一部剧全国都在追…… 在某部武侠剧里,一个武林高手在镜头面前有个特写,观众们看到的是,他的耳朵竟然会动!第二天,全班同学都互相问,你的耳朵能动吗?大家都不行…… 在此之前,每个人的耳朵都没动过,也没想到过要动。过了几天,有个同学说他会动耳朵了!大家惊讶地看他表演…… 再过几天,班上很多同学都学会了怎么动耳朵…… 当然,谁都说不明白如何动耳朵的方法论,都是一样的措辞,“多试试就可以了”。

就是这样 —— 多试试就可以了。

在新疆,所有人在很小的时候就学会了晃脖子,那是一种其他民族的人少有能做出的动作。你去问他们,到底应该怎么晃脖子,他们真说不清楚,就算偶尔有人说得很清楚,你也学不会…… 真的学不会吗?肯定能学会,至于方法论么,不是没必要,而是它能起的作用并没有想象得那么大。

很少有人能动鼻尖,生活中,也没有什么这样的 “需求” …… 但,两个版本的《家有仙妻》的主演,无论是电视剧版里的伊丽莎白·蒙哥马利还是电影里的妮可·基德曼都学会了这个动作 —— 怎么学会的?跟 “动耳朵”、“晃脖子” 一样,“多试试” 就可以了。

突破的关键在于不停地尝试,一个方式不行就再换另外一个方式。反正新建连接新建网络就是需要时间,用什么填满那些时间呢?试错 —— 这可是大自然用来进化的唯一有效策略。进而,为什么可以不断尝试?又,为什么愿意不断失败不断尝试?因为它肯定可能 —— 别人能做到,我也能做到……

这才是人生最凶悍的学习方式,我称其为生学硬练 —— 不断试错直至可能,不断重复直至熟练:

因为肯定可能,所以才愿意不断尝试;失败很正常,换个方式接着尝试,直到可能。

一切的学习,对大脑来说都一样,最初 0 到 1 的突破,根本就没办法靠方法论解决,都只能靠生学硬练闯过去…… 等这一关过了,再把不可能变为可能之后,从笨拙走向熟练的过程中,方法论才开始有机会发挥作用。

mermaid
flowchart LR

impossible([不可能])-..->possible([可能])-->clumsiness([笨拙])-->adaptness([熟练])-->plateau([停滞])-.->mastery([精通])
possible-->|方法论辅助|adaptness
impossible-.->|生学硬练|possible
adaptness-.->|生学硬练|mastery

可问题在于,方法论这个东西,即便有用,也常常并不能独立起作用。举个例子,我告诉你 t 夹在元音之间的时候要用弹舌音 t̬(3.2.2.3.1)—— 你当然瞬间能够理解,甚至能够记住,可是,下一次你开口说的时候,就能做到吗?十有八九做不到。这种例子比比皆是,绝大多数英语语法知识点对第二语言习得者来说都是这样的,考场上基本上都能把题做对,可是一开口说,一动手写,就接二连三出错,即便在出错过后瞬间还能够自我意识到……

mermaid
flowchart LR

impossible([不可能])-..->possible([可能])-->clumsiness([笨拙])-->adaptness([熟练])-->plateau([停滞])-.->mastery([精通])
possible-->|方法论辅助 + 生学硬练|adaptness
impossible-.->|生学硬练|possible
adaptness-.->|生学硬练|mastery

很多重要的知识和技能就是这样,知道根本没有用,哪怕熟练也不够用,必须精通才真正有用 —— 因为必须做到能够下意识无意识都能做对的地步。大脑里必须为了这个所谓知道要建立新的连接和网络,并且还要不断强化,强化到一定地步才能够下意识甚至无意识地正确处理这种情况 —— 熟练只是卸载了部分负担,这需要极大量的重复,最好还是短期内足量重复;必须精通才能彻底卸载负担,这还需要极大量的重复,最好还是短期内足量重复…… 只有精通,大脑才能彻底无负担地同时做其他的事情…… 说来说去,这不全都只能靠生学硬练嘛?

所以,生学硬练实际上贯穿着整个学习过程 —— 从始至终,任何时候都可能需要生学硬练,关键的时候尤其如此。之前的说法也应该调整一下了,所谓的生学硬练,应该是不断试错直至可能,不断重复直至精通 —— 而不只是熟练而已。

生学硬练,原本是我们与生俱来的能力。毫无疑问,在最初的几年里,无论什么都是我们通过生学硬练掌握的。理论上来讲,自然语言处理,是人类的大脑终生能够处理的最高级最复杂的任务(没有之一);与之相应的,自然语言习得,显然是我们这一生能够遇到的最复杂最艰难但又必须完成的学习任务。但是,自然语言习得的最基础部分,语音塑造和记忆扩展,却能在还没上学还不识字的过程中就逐步完成 —— 全靠生学硬练。

即便是到了很多所谓高级的领域,也还是一样的。有人能手把手教,当然很好。但总有一些是身边没有人会的,那怎么办?看书,然后自己学、自己练。有没有可能连书都找不到呢?当然。没有人可以在身边手把手教,书里也找不到,那怎么办?到最后永远都能仰仗的,再一次只能是生学硬练……

随着时间的推移,绝大多数人竟然彻底忘记了自己曾经拥有过的生学硬练的本领。这背后的根源虽然有点微妙但也格外简单。

mermaid
flowchart LR
start([起点])----->|已流逝的时间越来越多|now([当下])-->|剩下时间越来越少|ending([终点])

每个人的时间都有限,刚开始的时候并不觉得,所以很难在意效率。随着岁数的增加,过去的占比越来越高,未来的占比越来越少,效率的重要性就显得越来越大,于是,越来越渴求一切可能会提高效率的方法论…… 越来越痴迷于方法论,甚至不惜欺骗自己去相信那些只是胡搞瞎搞但就是敢坚称自己有效的所谓方法论。甚至,开始莫名其妙地鄙视生学硬练。与此同时,一切需要生学硬练的,都直接跳过,借口说那需要一些自己没有的天赋,所以自己永远学不会 —— 倒是可以因此轻松原谅自己,以效率为名。

绝大多数人的问题只不过是,对自己要求太低,对世界要求太高。特别擅长糊弄自己,然后也习惯了糊弄世界…… 这个世界说实话倒也挺宽容,一般不会马上反击,可它总有忍不住的时候,万一它反手一个耳光扇过来,没有人能承受得住。

生学硬练也有技巧:变着花样不断搞。试错,总是需要不断地换新方式去尝试,然而,重复,也需要不断地换着方式重复,从各个角度、从各个层面去重复,变着花样去重复。只要你肯不断变花样,原本看起来无比枯燥的生学硬练就会变得趣味丛生,其乐无穷。


File: 1000-hours/self-training/04-maze.md

4. 走出迷宫

这世界绝大多数真正有用的知识本质上都是网络结构,每个知识要点就是大大小小的网络中的一个又一个的节点。网络中的节点越多网络结构就越复杂,当然很可能也因此网络更有价值。

::: info

梅特卡夫定律:网络的价值与网络中的节点数量的平方成正比。

:::

当人类需要记录甚至传播知识的时候,总是面临一个不可回避的问题:

知识是网络的,语法是树状的,文字是线性的。

斯蒂芬·阿瑟·平克(Steven Arthur Pinker)说,“写作之难,在于将网状的思想,通过树状的语法,用线性的文字展开……”

这有点像什么呢?这就好像是在二维的平面上绘制三维的物体…… 一不小心就可能看起来像是那种不可能图形……

这是我多年前设计的一个 Logo。由于故意未使用虚线表示透视效果,你可能会看到两个方向的拱门,一会儿看起来像是朝向左下角,过一会看起来又像是朝向右上角……

当我们在二维的纸面上勾画三维世界的时候,如果不借助一下其它手段的话 —— 比如用虚线、阴影、以及形状的变化去构建透视效果 —— 就很容易令人产生这种错觉。

所以,虽然写作的难度很高,但,相比来看,弄不好阅读理解的难度更高。网络就好像是一个迷宫,节点越多,迷宫越复杂。而书籍就好像是读者手里用来探索迷宫的地图…… 可万一如果读者看到的是个不可能路径,又如何是好?有的时候,也许只是作者不小心,忘记了借用一些手段避免这种情况。可另外还有一些时候,这种情况无论如何都不可避免 —— 说实话这种情况还挺常见。

越复杂越系统的知识书籍里总是充斥着越多前置引用 —— 即,提前使用目前尚未定义清楚需要在后面深入阐释的概念;比如,在第三章里出现的概念,实际上需要在第十二章进一步讲解才能真正深入理解。越是高级越是实用的知识与技能越是如此。

几乎所有的语法书里都有大量的前置引用存在 —— 只因为自然语言的天然复杂程度。计算机书籍里这种情况也很普遍 —— 人工语言的复杂程度并没有相对自然语言更低。即便是我们那仅有 2 万字左右的简明语音教程,也有大量的前置引用 —— 别看英语音素 50 个都不到,不仅细节很多,相互影响还不少……

网络的特征之一就是节点之间的通路不止一条。可问题在于,我们的限制不仅来自于我们只能线性地理解用树状的语法所描述的网络,更大的限制来自于我们的注意力也好时间也罢,都不仅都是线性并且还同时具备排他性,导致我们永远一次只能尝试一条通路。也就是说,我们只能投入多倍的时间精力在遍历所有路径之后才能确认最佳路径 —— 在遇到不可能路径的时候,尤为如此。

自学的最基础且最重要的习惯之一就是:

反复阅读教材……

这就好像好电影值得反复看一样 —— 很多细节在第一遍看的时候要么被忽视,要么被轻视,只有理解了后面的很多内容才会意识到前面有很多重要的线索。重要的教材也是如此,必须反复阅读。

很多人不明白这个道理,不知道如何应付这种情况,造成的结果是一遍都读不完 —— 殊不知,所谓的难度是因为没读完造成的…… 实际上,如果能把后面的都硬着头皮读完,前面的就好理解了。也就是说,往往并不是因为难才读不完,更多是因为没读完才很难。

另外,很多早期所谓的难点,随着第一遍的完成,以及随后重复次数的增加,会自动消失 —— 甚至不需要为它们专门挣扎。因为绝大多数难点本质上来看都是因为前置引用的现象。

学习计算机编程就是经典案例。编程语言是一种人工语言,词汇量极少 —— 比如,Python 总计就那么几十个关键字(keywords)和操作符(Operators)…… 说实话真的没多难,从结果就看得出来 —— 很多中小学生都能熟练掌握。可它就是难倒了绝大多数人,其中包括很多高学历的人。为什么?怎样才能学会?答案其实很简单,随便哪本教材,反复看很多遍就自然会了 —— 一遍都看不完当然不行。

教材么,看不懂也要读完,然后还要认真读很多遍……

—— 这就是学习一切复杂且又系统的知识的秘诀,虽然简单得要死,却也是绝大多数人终生并未知晓,不知道为什么就算知道了也永远不会实践的公开秘密。这也不是什么今天才有的神技,古人早就慨叹过:读书千遍其义自现…… 只不过,这话谁都听过,但也谁都并不当真而已。

只要要点足够多且足够杂,就一定会逼退绝大多数人…… 可是,解决它的方法还是一样的,只不过是耐心重复而已。不需要一下子生生地将全部记住,不是你做不到,谁都做不到。但不是做不到,只要肯重复,谁都做得到 —— 通过反复查询反复应用逐步形成系统的记忆。

一个经典的例子是地图。搬到一个陌生的城市,没有人会尝试一下子记住地图上的所有细节…… 都是需要去哪儿就去查一下,然后尝试记住那一个路径;日积月累,自己需要去的地方就都记住了,还有些没去过的地方,不知道也无所谓。我们对待词典和语法书的方式也是一样的,先去熟悉查询方式,而后需要什么就去查什么,日积月累,该知道的就都知道,该记住的就都记住了。

学习任何系统且又复杂的知识,都可以把它想象为一个游戏,探索迷宫游戏。这很可能是世间最有趣的游戏之一,弄不好也是我们可以用来锻炼脑力的最佳实践活动。不要误以为自己暂时被卡住了或者暂时被难倒了是坏事,恰恰相反,那只能是好事。因为我们所有的本事,都是被困难逼出来的 —— 没有困难,我们就不用挣扎,不用挣扎就没有机会长出新本事。

为了在自己的大脑里构建一个能够摆脱线性文字束缚的立体地图,我们需要借助很多手段,就好像在二维纸面上要用虚线或者阴影那样。我们需要自己反复归纳整理那些繁杂且有相互关联的概念,可能要按照自己更容易理解的方式重新描述、重新分类,甚至还可能需要从多个角度反复如此操作,甚至,有必要的话,干脆自己尝试着写出更好的教材……

掌握任何一项新技能,都是探索迷宫走出迷宫的游戏。在这个过程中,掌握的不仅仅是那系统且又复杂的知识,与此同时,探索迷宫的能力也在不断积累不断发展 —— 以后可以更轻松地探索其它的迷宫,甚至,只有这样才可能有资格去探索更庞大更复杂的迷宫。

在学校里,这些工作被认为是老师的责任…… 探索迷宫的,只有老师 —— 他们的自然定位就是向导。学生们呢?就好像天然是旅行团里的游客,之所以付钱就是为了购买向导的服务 —— 倒也省心,只要听从向导的安排就好了……

这也有点像过去有些家长喜欢帮孩子把食物嚼碎了再喂一样。一方面孩子失去了锻炼咀嚼的机会,另外一方面还有可能把病菌传染给孩子 —— 更气人的是什么呢?事实上,那么做的结果是,食物的营养大半都被大人在咀嚼的过程中自己吸收了,而喂到小孩子嘴里的,其实过半都是没啥营养的渣子而已。于是,老师们越教越会,学生们倒是越学越差 —— 这其实是差不多从一开始就注定的结果。

这当然需要耐心 —— 耐心是一种习惯,需要不断积累且不断呵护的习惯。比耐心更重要的更基础的是另外一个习惯:主动。主动的背后,主要由两层结构:

  • 的确有问题需要解决
  • 认定自己有能力通过学习掌握解决问题的方法

谁没有问题要解决呢?都有。所以,第一层比较好办,大多数人毁在第二层上。多年所谓教育的荼毒,以及多少因此而累积的挫败,逐步使绝大多数人误以为自己根本没有能力通过学习掌握解决问题的方法。在此之上叠加的是时间流逝带来的紧迫感,他们更需要的是不择手段地马上解决问题 —— 当然那肯定只能是痴心妄想 ——而不是那种需要投入金钱、时间以及注意力才能够获得的解决方案。


File: 1000-hours/self-training/05-correction.md

5. 自我纠正

自学的核心之一是自我纠正能力。

做得好的人都一模一样,做得差的人千奇百怪 —— 因为每个人的错误都非常个性化。自我纠错难就难在这里,个性化错误的主要特征就是细小且又繁杂,并且常常连自己都觉得出其不意乘其不备。

自我纠错就好像给自己剃光头一样,看起来不是什么难事,结果总是莫名其妙地残留着几根要过段时间才能被发现…… 不要误以为别人帮你剃光头就完美了,没用的,你自己去过几次理发店就知道了,到最后总是可能会有幸存的那么几根。

全面纠错只能靠自己,别无他选。反过来也一样。但凡一个人拥有足够强的自我纠正能力,那么他就是自己最好的老师、教练、同学、朋友。可问题在于,自我纠正能力如何培养,它又从何而来呢?

先说一个与我们自身大脑有关的现象:

  • 你注意不到的事情,对你来说就不存在;
  • 你并不知道的事情,你就无法注意得到……

很多人不是不花时间,也不是不努力,但,最终沦为无用功,问题出在哪里?

关键在于后一点。很多人的所谓练习之所以最终无效无用,是因为练习的过程中没有把注意力集中在要点上。在整个练习的过程中,因为不知道自己需要注意的要点都是什么,所以,无法注意到在那些要点上出现的错误和偏差 —— 不知道就注意不到。

知道不一定能做到也不一定能做好,但不知道肯定做不到做不好。

每个人都一样,记忆力没有自己想象得那么好。不是什么东西看一遍就记得住的。基础知识也好方法论也罢,都写在教材里 —— 知识获取本身现在既方便又便宜。可问题在于,谁都一样,都做不到只看一遍就能全都记住,不是吗?

全都记住了还不一定能做好呢…… 但,这恰恰是很多人没反应过来的关键:

就算暂时做不到,就算暂时做不好,要点一定要尽早烂熟于心。

不只是一般的记住,而是烂熟于心,翻过来掉过去,每个细节都能随时调用,每个细节之间的关联都清楚,每个细节都能说清楚讲明白,而不仅仅是能想起来…… 就好像那些经验丰富的老师一样 —— 对,自学就是自己教自己,在自己这个学生还做不好甚至做不到的时候,自己这个老师要先认真备课,否则自己拿什么教自己啊?不提前认真备课,自己拿什么监督自己调整自己呢?

烂熟于心的方法再朴素不过了,反复阅读教材 —— 我们也是用同样的方法探索迷宫走出迷宫的……

我们想要塑造我们的语音,也只能是同样的方式。你要花一整年时间才能搞定呢,但,在第一个月里,语音教材要只字不差地阅读,并且还要反复阅读。你会越读越快的,不出一周的时间,你会发现完整过一遍只需要一点点的时间,一天能过很多遍。继续。不仅每天过很多遍,还要尝试着自己给自己讲课,看看能不能系统完整地讲清楚 —— 验收系统性和完整性。也可以尝试给别人讲,比如,给自家的孩子讲;还可以尝试带着他们做一样的事情,让他们给你讲,你来提问,你来验收系统性和完整性。

把所有要点烂熟于心,并不能保证你自动做到或者自动做好,因为你的大脑只是牢牢记住了那些要点,至于做到或者做好,那就要通过短时间内足量重复的练习在自己的大脑内部新建连接新建网络、强化连接强化网络…… 必要时还要借助生学硬练呢。

不一样的地方在于,一旦你知道了你就注意得到。对于那些要点你越是烂熟于心,你越是能够轻松地注意到在关键点上你做不到的地方,你做不好的地方 —— 这时候,那些方法论才开始真正发挥作用,你可以调用你的注意力系统且又完整地进行突破,要么暴力破解要么逐步微调。

可是,如果你不知道的话,你的注意力就压根没有目标可以集中,它就会跑到鬼知道的什么地方,进而你的所有练习都可能毫无作用,因为你的时间里并没有被你的注意力填满 —— 只有用注意力填满的时间才具有真正的价值。

绝大多数人对自我纠正能力培养的过程充满了误解。

实际情况是,绝大多数人从未自己把教材阅读很多遍,他们顶多听老师讲一遍,可说实话,大多并没有听全。或者,另外一些的确认真听讲了,却又到此为止了,觉得自己已经足够尽力…… 说实话,他们的自我感觉也的确有点根据,毕竟他们已经比绝大多数人强多了。极少数人可能读了很多遍,甚至自己也做了很多归纳总结,但,不知道从知道到做到依然还需要很多生学硬练,所以也没有走到尽头,虽然已经成绩不错。

最大的误解在于,如果不认真提醒的话,绝大多数人会误以为自己做不到将教材烂熟于心。其实,人类的记忆力都是很强的,并且都一样,都是越练越强。别说一本教材了,只要肯弄,多少本教材都一样可以做到烂熟于心,花时间而已的事情,和智商全无关联。可反过来,一旦认定自己做不到,那就真的做不到了。

除了误以为自己做不到之外,还有另外一种常见的误解,觉得没必要。如果仅仅是为了考试,甚至只不过是及格万岁,那连我都会同意,不仅的确没有任何必要,甚至干脆就不应该浪费那个时间。但是,如果是为了健脑,为了锻炼自己的大脑,锻炼自己的注意力,想要拥强兵为强将,那怎么可能没必要呢?这哪儿是必不必要的事情,这干脆是不得已的事情啊,大家的脑子都一样,都是这样,用进废退。

学校的负作用之一就是阻断学生的自我纠正能力。在学校里,验证自我能力的方式只有粗暴且又粗糙的考试。并且,学校里的考试实际上并不要求也不敢要求所有学生都尽善尽美,反过来造成的是学生糊弄过关的习惯。不同的考试成绩,在学生心理上引发的,更多并不是自我检讨自我纠正,而是相互攀比。甚至会不知不觉产生扭曲,成绩比不过就比别的什么,无论是什么,只要能找到自以为是的优势就可以…… 固守型人格在不断发展,彻底消灭进取型人格。

说一千道一万都没用,自己经历过一遍就知道了。对这其中种种好处的体验,就好像是司马光说的那样,由俭入奢易由奢入俭难 —— 你都住过五星酒店了,再让你回去住街边小旅馆,着实困难。如果你是父母,体验过一次之后,你就舍不得自家的孩子竟然没有体验过。

再回头望过去,你会慨叹,这么简单的道理自己怎么没早一点知道。如果你小时候就被如此告知,甚至被人拉去体验过一回,你还有什么学不会学不好的呢?学校里的那点东西,直到本科毕业之前,也都没什么实际的难度。若是早就知道这样简单却又重要的方式,人生一定会有很大的不同吧?

如果你的孩子很小就懂得用这样的方式培养自我纠正能力,他们的自学能力一定相当出众,并且还会不断发展。用得着花那么多钱去请辅导老师吗?完全没必要。这种体验只要带着自家孩子经历过一次,就价值千万 —— 按照 2020 年的人均收入当作现值计算,一个人一生的价值在下一代寿命不断增加的基础上,怎么也得超过一千万人民币。学得好做得好,一千万美金也不一定挡得住。当然,做不到这一点的,就算往教育里砸进去再多的金钱再多的时间,弄不好也会变成一千万俄罗斯卢布。


File: 1000-hours/self-training/06-motives.md

[Binary file]


File: 1000-hours/self-training/07-encouraging.md

[Binary file]


File: 1000-hours/self-training/08-supervising.md

8. 自我监督

保证工作成效的一个重要关键在于,到最后总得有个验收。复杂的任务可以被拆分成可处理的小任务,而每个小任务都可以有它自己的验收环节 —— 为了这个不可或缺的环节真正发挥作用,还得为它配上足够系统完善的验收标准。而所谓的验收标准,说穿了倒也非常简单,只不过是分得清好坏。

孙犁先生写过一篇文章探讨好的语言和坏的语言:

根据我们的最有功绩的文学老师的说法,有如下性质的语言是文学上的好的语言:

  1. 明确;
  2. 朴素;
  3. 简洁;
  4. 浮雕;
  5. 音乐性;
  6. 和现实生活有紧密联系。

相反的,这些语言是坏的语言:

  1. 干燥无味;
  2. 没有个性;
  3. 不正确的方言;
  4. 胡乱的表现;
  5. 似是而非的丰富;
  6. 不和现实生活呼应。

这就是孙犁先生自己总结自己遵守的验收标准,用来衡量自己的文字是否满意。这种系统完善的验收标准,不一定只在最后起作用,深信并熟练到一定程度,它就会时时刻刻起作用。任何时候发现自己正在写的是坏的语言,就一定会挣扎着改掉,想尽一切办法创造好的语言。

在我们的语音塑造训练中,每个音素都可能有不止一条验收标准,比如,t 这个音素的发音就有很多验收标准:

  • 发声时舌尖的起始位置对不对?(3.2.2.2)
  • 它是不是产生了塞音?(3.2.2.3.2)
  • 它是不是应该被读成浊化音 d?(3.2.2.3.5)
  • 它是不是应该被读成 tʃ?(4.4.2.3)
  • 它是不是应该被读成弹舌音 t̬?(3.2.2.3.1)
  • 它是不是应该被读成喉塞音 ʔ?(3.2.2.3.4)

对整个自然语句,除了每个音素都有自己的验收标准之外,还有韵律和节奏上的判断标准:

  • 停顿:每个停顿是否处理得当?有没有分别做对做好?(4.2)
  • 高低:哪些音节音高被拔高了?有没有分别做对做好?(4.5.4)
  • 起伏:哪些音节带着明显的声调?分别是什么?有没有分别做对做好?(4.5.5)
  • 轻重:哪些词被弱读了?被弱读成了什么样子?有没有分别做对做好?(4.5.1)
  • 缓急:哪些词连在一起读得很快?被读成了什么样子?有没有分别做对做好?(4.5.6)

无论学什么,都一样的,每个重点知识的理解和应用都有相应的验收标准。从这个角度望过去,无论是校内的数学、物理、化学,还是地理、生物,抑或历史、文学,课本的核心都一样,都是一个又一个的验收标准…… 校外的计算机编程语言的教材里还是如此 —— 天下所有教材都是如此。

我们要擅长的,就是把那些验收标准谙熟于心,不仅在做的时候就可以用它自我纠正,在完成的时候也同样可以用它完成最后验收。

自学或者自我训练最重要的一个技巧就是先完成角色转换:

像老师一样学习……

换个说法也行:“教是最好的学习方法”。不能靠别人教,那就自己教自己,不能靠别人监督,那就自己监督自己。

这种角色转换之所以效果惊人,根源在于它在不知不觉中提高了验收标准。若是一位学生按照老师的标准要求自己,那么水平就会被拔高;若是一位老师竟然按照学生的标准要求自己,那么水平就会很差,并且还总是停滞不前。

其实这是我们经常做的事情 —— 比如,像作者一样读书,像导演一样看电影,或者像专家一样做事…… 试过一段时间就知道了,只要标准被抬高,效果和质量就会自然随之发生变化。

最有趣的是,很多时候,标准的抬高,并不总是意味着难度也随之必然被抬高。反正做事要花时间,标准高不高都得花时间,90% 以上的时间成本和注意力成本都无法进一步压缩。在学习的时候尤其如此,当下的标准抬高,也许提高了一些难度,的确也增加了一些时间和注意力的成本,但,由于做的正确,做得更好,会极大降低将来整体的时间和注意力成本 —— 从这个角度望过去,抬高标准不仅没有提高难度,反倒是事实上降低了难度。

很多人不是为了自己学习,不是为了自己做事,是为了糊弄家长、老师或者老板,所以没有动力精益求精,所以喜欢反过来偷懒…… 可问题在于,这样做永远不划算,因为花掉的是自己的时间,自己的注意力,却并没有长出自己的本事,亏大了 —— 当然,习惯了,亏麻了之后,倒也感觉并无所谓。

我们有天然的归纳总结能力。随着时间的推移,我们会把大量的相关要素分门别类,抽象成更为精简的概括,并且总是按照重要性排序…… 在更容易记忆更容易调用的同时,无论是在做事的过程中,还是事后的验收里,带着这样的标准工作,总是显得更加游刃有余。孙犁先生对语言好坏的标准看起来很少,就那么几条,但,那是长期积累之后的抽象和概括。

我个人对我自己的文字好坏,经过长期概括之后,验收标准仅剩下一句话:“是否对读者真的长期有用?” 如果不是,就扔掉,或者干脆不写了。这并不是说我没有更多细节上的标准了,而是那些已经应用过无数回了,乃至于下意识之中就已经处理完毕。当然,最重要的总是要三思而行。

其实,验收标准大多是通用的,虽然偶尔也有例外。在这里是好的,在别的地方大抵上也应该是好的,在这里是坏的,在别的地方大抵上也应该是坏的。比如,简洁、朴素、直接、有效,几乎在任何地方任何领域,都可以被认为是好的。无论是小说还是论文,这样的文字就是我更欣赏的。无论是个人服饰还是室内装修,这样的风格也是我更喜欢的。沟通交流也好管理团队也罢,这还是我更倾向于选择的方式。

很多时候,这看起来是没有对错不分好坏的个人偏好,可实际上并不像很多人以为地那么主观,好坏常常可以非常客观。因为对任何人来说都一样,对好坏的分辨其实是长期有效经验的积累 —— 长期保持客观的人,他们的个人偏好都更倾向于客观。反过来,长期放任主观想法的人,他们的个人偏好客观来讲的确非常差 —— 虽然他们自己可以天真地以为或者争辩说,“个人偏好没有好坏对错”…… 姑且就让他们继续那么以为下去好了。

人最重要的能力就是判断力。简单讲,所谓判断力就是分清好坏的能力。判断力背后就是一个又一个针对性极强客观性极高的判断标准。没有判断,就没有质量,也没有选择,更没有智慧。所谓的智慧,本质上来看就是良好判断力的应用结果。人们平日里所说的审美能力,本质上来看还是判断力,分得清好坏。到最后,连创造力都是以判断力基础,由判断力引发的 —— 知道什么是陈词滥调(坏的),什么是新鲜创意(好的),所以才有不同的选择。

之前我们说人工智能帮我们解决了眼高手低的尴尬(3.6),让我们的实际操作能力有机会追上我们的审美能力 —— 想想看吧,这是不是天大的解脱?

人工智能越强,驾驭它的人必需更有判断力。在自然语言应用方面,能用人工智能辅助创作出更多更好文字的是那些具备更好判断力的人,与此同时,他们自己的语言文字能力在不断提升 —— 我们的训练就是这样的例子。

在图像生成方面,能用人工智能做出更多更好图片的,还是那些具有更好判断力的人 —— 或者说,更高审美能力也行 —— 他们知道各式各样的风格,所以可以在其中选择,他们知道各式各样的重点,可以系统地判断好坏,所以才能将咒语(prompt[^*])写的清晰具体有效,于是人工智能才那么听话。

2023年年初,人工智能开始可以将人类提供的咒语转换成长达 1 分钟的视频。请问,这对谁最有用?在视频制作方面具备极高审美能力(判断力)的人。很多人在只能惊呼的同时,在付费学习如何如何编写咒语…… 这就好像是用千年祖传配方治疗糖尿病一样,令人笑不出来。

其实,真正应该系统学的练的是影视制作那一整套,编剧、导演、摄影、表演…… 在这个繁杂且有系统的知识网络里像探索迷宫一样游走,把每个重点的验收标准谙熟于心,逐步积累,归纳总结,抽象概括…… 最后形成一套属于自己的,同时也足够客观的验收标准 —— 称作审美能力也罢,判断力也好,都一样。在此基础上,才有有真正的创意。只不过,这一次不同了,因为眼高手低的尴尬被人工智能解决了,于是,到最后,人工智能是那些拥有更高审美能力的人手中真正的工具。

所谓的监督,尤其是自我监督,不是人们误以为的 “头悬梁锥刺股” —— 真正的学习和训练,并不靠所谓的 “吃苦”。最好的自我监督,是不断抬高对自己的要求,即,不断调整各种验收标准,即,不断提高自己的判断力。

不断提高自己的判断力,有没有较为有效的方法呢?有,并且只有一个 —— 见多识广。大量的输入,大量的积累,大量地吸收大量地消化,除此之外别无他法。其实,道理总是相通的。人工智能越来越聪明,发展越来越快的原因不也是同样的方式吗?人工智能可以如此,就是因为它在模拟人类的大脑。计算机是对大脑硬件上的模拟,人工智能就是对大脑软件上的模拟 —— 人工智能是人类迄今为止制作出来的最佳仿生产品。

见多识广靠不断的追求。长期持续追求的动力又来自何处呢?每个人可能相当不一样。在读高中的时候,我有个同桌经常说这么一句话: “咱是谁啊?!”

这句话的意思是:

  • “咱是谁啊?!” — 所以,“那些事儿不能干啊!”
  • “咱是谁啊?!” — 所以,“这种东西拿不出手啊!”
  • “咱是谁啊?!” — 所以,“做成这德性怎么好意思呢?”
  • “咱是谁啊?!” — 所以,“这事儿得做到这样的地步才行!”
  • ......

这句话一不小心影响了我的一生。因为它几乎总是最强的动力之一。

[^*]: “咒语” 是和菜头对 prompt 这个词的精彩翻译。


File: 1000-hours/self-training/09-planning.md

[Binary file]


File: 1000-hours/self-training/10-going-back.md

[Binary file]


File: 1000-hours/sounds-of-american-english/0-intro.md

语音塑造

为了真正掌握美式英语的语音 —— 其实所有语言都一样,都以语音为核心和基础 —— 我们必须熟练掌握音标,为此我们要做到:

  • 看到音标就能说出音素;
  • 听到音素就能写出音标;
  • 能够适应不同词典的不同音标体系;
  • 补充并使用属于自己的若干额外符号;
  • 自如地说出各种音素的组合:
    • 音节
    • 词汇
    • 句子
  • 牢记各个音素的常见拼写,即音标和字母组合的对应……

File: 1000-hours/sounds-of-american-english/1-basics.md

1. 基础

其实,所谓的 “基础” 真的很少,打印出来不过几页纸而已……

经常有人问,“我零基础可不可以?” —— 当然可以。

说实话,不仅可以,事实上可能相对还更好一些,因为零基础的人压根就没有那么多需要纠正的通过长期错误使用而形成的无数细节错误。


File: 1000-hours/sounds-of-american-english/1.1-phonemes.md

1. 音素与音标

在自然语流中,不可继续分割的组成部分被称为音素(phonemes)。

英语的音素分为元音(vowels)和辅音(consonants)。音标(phonetics)是用来标记音素的符号系统 —— 每个音素都由一个独特的音标符号标记。

我们采用的是《剑桥英语发声词典》(Cambridge English Pronouncing Dictionary, i.e. CEPD)的音标标注体系。

在《剑桥英语发声词典》里,英式英语的音标采用 D.J. 音标,而美式英语的音标则采用国际音标(IPA)[^1],并针对美式英语做了些 “优化”:

  • ə 的长短版本儿化音,分别是 ɚ 和 ɝː
  • ə 结尾的双元音和三元音,结尾的 ə 使用 r 替换,比如 ɪə ⭢ ɪr,或者 aʊə ⭢ aʊr
  • 短元音 ɒ 用 ɑː 标注
  • t 增加了一个弹舌音版本 t̬

以下的罗列部分基于《剑桥英语发声词典》的官方音标指南,在此基础上做了一些补充并重新排序[^2],并刻意减少了例词的数量。

[!Note]
《剑桥英语发声词典》官方音标指南(Pronunciation symbols):

https://dictionary.cambridge.org/help/phonetics.html

虽然我们的教程着重讲解的是 “美式英语” 语音,但,为了教学方便,也同时罗列了 “英式英语” 的音素和音标。

1.1. 元音

British (24) American (27)
D.J. 例词(Example) IPA 例词(Example)
ə about əˈbaʊt ə about əˈbaʊt
ɚ worker ˈwɝː.kɚ
ɜː worker ˈwɜː.kə ɝː worker ˈwɝː.kɚ
ʌ but bʌt ʌ but bʌt
ɑː father ˈfɑː.ðər ɑː father ˈfɑː.ðɚ
ɑːr card
ɪ this ðɪs ɪ this ðɪs
iː tree triː iː tree triː
i city ˈsɪt.i i city ˈsɪt̬.i
ɪə idea aɪˈdɪə ɪr gear ɡɪr
ʊ foot fʊt ʊ foot fʊt
u situation ˌsɪtʃ.uˈeɪ.ʃən u situation ˌsɪtʃ.uˈeɪ.ʃən
uː moon muːn uː moon muːn
ʊə pure pjʊə ʊr pure pjʊr
e check tʃek e check tʃek
æ thank θæŋk æ thank θæŋk
eə air eə er air er
ɒ dog dɒɡ ɑː dog dɑːɡ
ɔː redraw ˌriːˈdrɔː ɔː redraw ˌriːˈdrɔː
ɔːr shoreʃɔːr
aɪ dry draɪ aɪ dry draɪ
aɪə fire faɪə aɪr fire faɪr
eɪ take teɪk eɪ take teɪk
ɔɪ voice vɔɪs ɔɪ voice vɔɪs
aʊ how haʊ aʊ how haʊ
aʊə hour aʊər aʊr hour aʊr
əʊ nose nəʊz oʊ nose noʊz

[!Note]

《剑桥英语发声词典》官方音标指南中除了 ɚ 和 ɝː 之外,其它元音的美式英语儿化音都没有罗列,比如,
ɑːr、ɔːr、er、ɪr、ʊr、aɪr、aʊr。

1.2. 辅音

British (28) American (29)
D.J. 例词(Example) IPA 例词(Example)
p poor pɔː p poor pʊr
b but bʌt b but bʌt
t take teɪk t take teɪk
t̬ city ˈsɪt̬.i
d dog dɒɡ d dog dɑːɡ
k card kɑːd k card kɑːrd
g gear ɡɪə g gear ɡɪr
f fire faɪə f fire faɪr
v voice vɔɪs v voice vɔɪs
s situation ˌsɪtʃ.uˈeɪ.ʃən s situation ˌsɪtʃ.uˈeɪ.ʃən
z zoo zuː z zoo zuː
θ thank θæŋk θ thank θæŋk
ð this ðɪs ð this ðɪs
ʃ shore ʃɔːr ʃ shore ʃɔːr
ʒ vision ˈvɪʒ.ən ʒ vision ˈvɪʒ.ən
tʃ check tʃek tʃ check tʃek
dʒ jet dʒet dʒ jet dʒet
tr tree triː tr tree triː
dr dry draɪ dr dry draɪ
ts cats kæts ts cats kæts
dz kids kɪdz dz kids kɪdz
m moon muːn m moon muːn
n nose nəʊz n nose noʊz
ŋ thank θæŋk ŋ thank θæŋk
l lure lʊə l lure lʊr
r redraw ˌriːˈdrɔː r redraw ˌriːˈdrɔː
w worker ˈwɜː.kə w worker ˈwɝː.kɚ
j yes jes j yes jes
h how haʊ h how haʊ

[!Note]

《剑桥英语发声词典》官方音标指南中没有罗列 tr 和 dr。

1.3. 外来音素

音素/音标 例词
ɒ̃ croissant ˈkwɑ.sɒ̃ŋ
x loch lɒx

1.4. 其他符号

符号 例词
. system ˈsɪs.təm
ˈ surprise sɚˈpraɪz, sə-
ˌ retell ˌriːˈtel

1.5. 自定义补充符号

符号 含义
ɤ 比 schwa ə 更轻的近乎于无的元音
ʔ t 的喉塞音版本
ᵗ/◌̥ 可选 t 或者 t̥,即,不发声
◌̚ /◌̥ 清辅音的阻塞音符号(可与 /◌̥ 通用,都不发声)
ᵊ 音节辅音 l, m, n, r 之前的附带元音
ʲ 音节之间的加音 j
ʷ 音节之间的加音 w
◌̅, ◌́, ◌̀ 音节声调,平、升、降
◌̂ 音高被抬高的音节
· 音节之间的停顿(stop)
◌‿◌ 连读符号
| 单词之间分割意群的暂停(pause)

[!Note]

你可能注意到了,同一个基础音素的变体,可能用了不同的写法,比如, ɑ 这个基础音素,短元音用的是 ʌ,长元音不是 ʌː 而是 ɑː,而后组合成双元音的时候用的是 a —— aɪ,aʊ 等等……

这么做的理由在于,当这些音素连在一起的时候,不可能被错误组合,不会产生混淆,所以要确保每个音素都有一个独特对应的符号[^3]。

[^1]: 教程内音标字体选用的是 Charis SIL,https://software.sil.org/charis/
[^2]: 音素的语音文件来自剑桥官方网站;例词的语音文件大部分使用 Microsoft Edge TTS 生成,声音角色选择分别是:en-GB-ThomasNeural,en-GB-MaisieNeural,en-US-RogerNeural,和 en-US-JennyNeural
[^3]: 现在几乎所有词典都声称自己采用国际音标(IPA),但它们无一例外,都是国际音标的一个 “自定义子集”。


File: 1000-hours/sounds-of-american-english/1.2-alphabets.md

1.2 英文字母

英语总计使用 26 个字母(letters),各有大小写之分。在欧洲语言之中,英语是罕见的不使用修饰符(diacritics)的文字 —— 所谓修饰符,指的是字母上附加的标记,用以区分发音或者意义,比如,â、é、ç,等等。

北约(NATO)有一套指称英文字母的系统,用以在仅有语音交流的情况下避免歧义 —— 在军事、航空、紧急救助、无线电或者电话沟通等诸多场合中具备不可或缺的作用。

Letter Pronunciation NATO Phonetic Alphabet
A a eɪ Alpha ˈælfə
B b biː Bravo ˈbrɑːvoʊ
C c siː Charlie ˈtʃɑːrli
D d diː Delta ˈdeltə
E e iː Echo ˈekoʊ
F f ef Foxtrot ˈfɔːkstrɒt
G g dʒiː Golf ɡɑːf
H h eɪtʃ Hotel hoʊˈtel
I i aɪ India ˈɪndiə
J j dʒeɪ Juliet ˈdʒuːliət, ˈdʒuːliˌet
K k keɪ Kilo ˈkiːloʊ
L l el Lima ˈliːmə
M m em Mike maɪk
N n en November noʊˈvembɚ
O o oʊ Oscar ˈɑːskɑːr
P p piː Papa ˈpɑːpɑ
Q q kjuː Quebec kwəˈbek
R r ɑːr Romeo ˈroʊmioʊ
S s es Sierra siˈerə
T t tiː Tango ˈtæŋɡoʊ
U u juː Uniform ˈjuːnəfɔːrm
V v viː Victor ˈvɪktɚ
W w ˈdʌbᵊljuː Whiskey ˈwɪskiː
X x eks X-ray ˈeks.reɪ
Y y waɪ Yankee ˈjæŋkiː
Z z ziː Zulu ˈzuːluː

在英式英语中,z 被读作 zed。

[!Note]

  • 合成语音文件使用的是 OpenAI 的 TTS (Text-to-Speech) 和微软的 Edge's TTS。蓝色喇叭图标是男性语音,红色喇叭图标是女性语音。

File: 1000-hours/sounds-of-american-english/2-articulators.md

[Binary file]


File: 1000-hours/sounds-of-american-english/3-details.md

[Binary file]


File: 1000-hours/sounds-of-american-english/3.1-vowels.md

3.1. 元音(Vowels)

英文总计 6 个基础元音,分别是 ɑ、i、u、e、ɔ、ə、 —— 这 6 个基础元音就好像是 “根” 一样。所有元音要么是它们略有变化的长短版本,即,长元音或者短元音(美式英语还有半长元音);或者是更轻的版本(轻元音),或者是美式英语中普遍的儿化音,抑或是它们的组合版本,即,双元音或者三元音。

基础元音 短元音 半长元音 轻元音 长元音 儿化音 组合音
ɑ ʌ ɑː ɑːr aɪ, aʊ, aʊə/aʊr
i ɪ i iː ɪr aɪ, eɪ, ɔɪ, ɪə/ɪr, aɪə/aɪr
u ʊ u uː ʊr ʊə/ʊr, aʊ, əʊ/oʊ, aʊə/aʊr
e e æ er eə/er, ʊə/ʊr, aɪə/aɪr, aʊə/aʊr
ɔ ɒ ɔː ɔːr ɔɪ
ə ə ɜː ɚ/ɝː aʊə/aʊr, ɪə/ɪr, aɪə/aɪr, ʊə/ʊr, eə/er

元音发声时,气流从肺部通过声门冲击声带,使其均匀振动,而后通过起着共鸣器作用的口腔,无阻力地呼出。

生成不同元音的主要器官之一是嘴唇,这也是婴幼儿在学说话时所能观察到的唯一发声器官。张嘴的另外一个器官是下巴,下巴拉开,口型变大。

以下是 6 个基础元音发声时的口型(嘴唇构成的形状):

当然,除了口型之外,影响元音发声的器官还有舌面的位置、软腭的动作 —— 影响口腔内气流共振的空间 —— 不过,由于人类语言的相通属性,人们在这些基础元音的发声上基本都没有任何困难。

说英文的时候,需要格外注意的是元音的长短。英文音节的发声总体上倾向于比其它语言更长,因为 20 多个元音中只有 6 个是短的,与之相对的,还有将近 3 倍的数量是相对更长的元音(半长元音、长元音、儿化音、双元音、三元音)。这是一个相当显著的差异 —— 尤其在与亚洲语言相比的时候尤为明显,因为在大多数亚洲语言中元音(可能被称为韵母、母音)总是等长的,没有长短之分。

很多语音教程使用 “舌位图” 作为讲解元音的工具[^1]……

虽然从语音学的角度来看,舌身位置很重要 —— 因为舌身的位置决定口腔内气流共振空间的大小,进而可以配合不同的唇形发出不同的元音 —— 但是, “控制舌身位置” 对绝大多数人来说并不现实 —— 你试试就知道了。所以,在我们的教程里,并不使用这种舌位图作为讲解工具。

[^1]: Figure adapted from FUNDAMENTALS OF PHONETICS: A practical guide for students (5th Edition), by Larry H. Small, 2019. Page 55


File: 1000-hours/sounds-of-american-english/3.1.1-ə.md

3.1.1. ə/ɚ/ɝː

ə 这个基础元音,在英语中最为普遍。在美式英语中,也相对特殊,因为它的长短两个版本都常常带着儿化音,所以值得第一个详细讲解。

在 6 个基础元音中,ə 和 i 的口型一样且最小。

3.1.1.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ə about əˈbaʊt ə about əˈbaʊt
ɚ worker ˈwɝː.kɚ
ɜː worker ˈwɜː.kə ɝː worker ˈwɝː.kɚ

3.1.1.2. 央元音 ə

在美式英语中,ə 有个专门的名称,叫做 “央元音”(schwa)。

在连贯的自然语流中,很多非重音音节的元音,都有被简化成 ə 的倾向,尤其是 ɪ。比如,individual, ˌɪndəˈvɪdʒuəl,实际上会被读作 ˌɪndəˈvɪdʒəʷəl —— u 也变成了 ə,而后 u 和 ə 之间有个加音 ʷ…… 事实上,现在已经有很多词典干脆直接标注成了后者。

在非重音音节上的 ə 是不可能带有儿化音的 —— 这一点要格外注意。很多人会矫枉过正,任何时候都把 ə 读成 ɚ…… 比如,有些人可能会把 focus ˈfoʊkəs 错读成 ˈfoʊkɚs。

3.1.1.3. 儿化音

短元音 ɚ 和长元音 ɝː 这两个儿化音,有两种发声方式,一种是凭直觉卷起舌尖(无论是前卷还是后卷,都被称作 Retroflex R),这也是绝大多数初学者发这个音的唯一选择。

由于这个音发声时的舌头动作是别人看不见的,所以,人们在学这个发音的时候,无法猜到第二种方式(被称作 Bunched R):舌背部分抬起来,略微后缩,使舌的两侧接触到后牙。舌背的中心部分较低,空气通过这个凹槽产生声音。

以下是另外一个角度的图示[^1]:

以下的视频更为直观,worker ˈwɝː.kɚˈwɜː.kə 这个词的长短两个版本的儿化音都是用 Bunched R 读出来的[^2]:

事实上,其他的儿化音也都可以用这种方式发声。不妨用这种方式重新试试 card kɑːrd, mark mɑːrk;再试试 door dɔːr, short ʃɔːrt, poor pʊr, your jʊr…… 试过之后,再进行比较,你会发现更多的时候,第二种方式比第一种方式更方便。

在美式英语中,绝大多数人都使用第二种方式(Bunched R)发出儿化音。即便是使用第一种方式(Retroflex R),舌尖无论是前卷还是后卷,都一样,绝不会贴到龈脊上。

另外,辅音 ʃ/ʒ、tʃ/dʒ 在发音的时候,舌背也是同样的位置。

3.1.1.4. 常见拼写

ə

  • a
    • about əˈbaʊt
    • banana bəˈnæn.ə
    • sofa ˈsoʊ.fə
  • e
    • open ˈoʊ.pən
    • problem ˈprɑː.bləm
    • synthesis ˈsɪn.θə.sɪs
  • i
    • animal ˈæn.ɪ.məl
    • president ˈprez.ɪ.dənt
    • pupil ˈpjuː.pəl
  • o
    • bacon ˈbeɪ.kən
    • lesson ˈles.ən
    • pilot ˈpaɪ.lət
  • u
    • circus ˈsɝː.kəs
    • medium ˈmiː.di.əm
    • support səˈpɔːrt
  • ou
    • courageous kəˈreɪ.dʒəs
    • famous ˈfeɪ.məs
    • humorous ˈhjuː.mə.rəs

ɚ

  • er
    • better ˈbet̬.ɚ
    • butter ˈbʌt̬.ɚ
    • teacher ˈtiː.tʃɚ
  • or
    • actor ˈæk.tɚ
    • doctor ˈdɑːk.tɚ
    • editor ˈed.ɪ.t̬ɚ
  • ar
    • beggar ˈbeɡ.ɚ
    • burglar ˈbɝː.ɡlɚ
    • collar ˈkɑː.lɚ
  • ure
    • culture ˈkʌl.tʃɚ
    • figure ˈfɪɡ.jɚ
    • pressure ˈpreʃ.ɚ

ɝː

  • er
    • her hɝː
    • term tɝːm
    • clerk klɝːk
  • ear
    • earn ɝːn
    • earth ɝːθ
    • heard hɝːd
  • ir
    • bird bɝːd
    • first ˈfɝːst
    • stir stɝː
  • ur
    • burn bɝːn
    • nurse nɝːs
    • turn tɝːn
  • or
    • word wɝːd
    • world wɝːld
    • worse wɝːs

[^1]: 该图示来自 https://globalspeechtherapy.com/how-to-teach-the-r-sound/
[^2]: 这个视频片段,截取自一个收费软件 The Phonetics 3D,只有 iOS 版本。


File: 1000-hours/sounds-of-american-english/3.1.2-ɑ.md

3.1.2. ʌ/ɑː/ɑːr

在美式英语中,ɑ 有 3 个版本,短元音 ʌ、半长元音 ɑː,和长元音的儿化版 ɑːr。其中,ʌ 的口型最小,ɑː 和 ɑːr 的口型最大。

3.1.2.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ʌ but bʌt ʌ but bʌt
ɑː father ˈfɑː.ðər ɑː father ˈfɑː.ðɚ
ɒ dog dɒɡ ɑː dog dɑːɡ
ɑːr card kɑːrd

3.1.2.2. 短元音 ʌ

在美式英语中,ʌ 略有 ə 的音色,甚至有些美国词典干脆用 ə 这个符号替代 ʌ —— 比如韦氏词典(Merriam-Webster)中 but 这个词的音标被写成 bət。另外,英国人说 ʌ 的时候,口型相对美国人更大一些。

3.1.1.3. 半长元音 ɑː

在《剑桥英语发声词典》中,ɑː 虽然带着一个长元音符号,它实际的长度相当于半长元音,即,它比短元音长一些,比长元音短一些。

另外,《剑桥英语发声词典》里的 ɑː 还对应着英式英语中的短元音 ɒ。除了《剑桥英语发声词典》之外,大多词典会把 hot 的音标标注为 hɑt —— 即,没有长元音符号。但是《剑桥英语发声词典》会标注成 hɑːt。所以,按照《剑桥英语发声词典》的标注,我们可以这么理解:在美式英语中,ʌ 最短,ɑː 更长一些,而 ɑːr 最长。

3.1.1.4. 儿化音 ɑːr

ɑːr 的儿化音得用舌背后缩的方式发出(Bunched R)。如果你肯仔细体会的话,从感觉上来看,ɑːr 更像是 ɑːᵊr,或者写成 ɑːɚ —— 会有个实际上相当明显的 ᵊ 的加音,比如 card kɑːrd 。

3.1.1.5. ɑː ⭢ æ

除了《剑桥英语发声词典》里的 ɑː 还对应着英式英语中的短元音 ɒ 之外,另外一个值得注意的是,英音中的 ɑː 在美式英语中读作 æ,最常见的例子是 ask,英音是 ɑːsk,美音是 æsk。

3.1.1.6. 常见拼写

ʌ

  • u
    • sun sʌn
    • cup kʌp
    • but bʌt
  • o
    • son sʌn
    • comfort ˈkʌm.fɚt
    • money ˈmʌn.i
  • ou
    • young jʌŋ
    • double ˈdʌb.əl
    • country ˈkʌn.tri
  • oo
    • blood blʌd
    • flood flʌd

ɑː (also equivalent to British ɒ)

  • a
    • father ˈfɑː.ðɚ
    • watch wɑːtʃ
    • wasp wɑːsp
  • al
    • almond ˈɑːl.mənd
    • balm bɑːm
    • palm pɑːm
  • au
    • because bɪˈkɑːz
    • clause klɑːz
    • paunch pɑːntʃ
  • aw
    • drawn drɑːn
    • awning ˈɑː.nɪŋ
    • law lɑː
  • o
    • hot hɑːt
    • dog dɑːɡ
    • log lɑːɡ
  • ough
    • bought bɑːt
    • thought θɑːt
    • fought fɑːt

ɑːr

  • ar
    • car kɑːr
    • far fɑːr
    • start stɑːrt

File: 1000-hours/sounds-of-american-english/3.1.3-i.md

3.1.3. ɪ/i/iː/ɪr

在美式英语中,i 有 3 个版本,短元音 ɪ、长元音 iː 和轻元音 i。其中,i 和 iː 的口型最小,ɪ 的口型相对较大。

3.1.3.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ɪ this ðɪs ɪ this ðɪs
iː tree triː iː tree triː
i city ˈsɪt.i i city ˈsɪt̬.i
ɪə idea aɪˈdɪə ɪr gear ɡɪr

3.1.3.2. 短元音 ɪ

短元音 ɪ 并不简单地是长元音 iː 的更短版本,它更像是 e 和 i 之间的一个音。听起来很像是更短版本的 eɪ,从唇形上来看ɪ 更接近 e 。

仔细听听这几个词汇:

  • bit bɪt
  • sit sɪt
  • hill hɪl

3.1.3.3. 长元音 iː

iː 并不简单地是短元音 ɪ 的长版本,它没有 eɪ 的音色,口型相对于 ɪ 更为扁平。

再进行一下比较:

  • bit bɪt ⭤ beat bi:t
  • sit sɪt ⭤ seat si:t
  • hill hɪl ⭤ heal hi:l

3.1.3.4. 轻元音 i

i 这个音实际上还有个半长元音版本,尤其是在词汇末尾的时候最为常见,它更倾向于像是 iː 这个长元音的更短版本,是个轻元音 —— 因为它只出现在非重音音节之中。

比如,city ˈsɪt̬.i 或者 responsibility rɪˌspɑːn·səˈbɪl·ə·t̬i —— 在这一点上,英音美音都是一样的。

值得注意的是,这一点很可能与我们在中国大陆的学校里学到的不一样 —— 主要是因为我们的教材常年不更新的缘故。《剑桥英语发声词典》也是到了第 13 版才全面把词汇末尾的 ɪ 更改为 i(还专门有个名字,叫作 happy i)。另外,绝大多数电子词典配备 “真人发音” 也只不过是近十几年的事情而已。

3.1.3.5. 儿化音 ɪr

格外需要注意的是,ɪr 实际上是 i 的儿化音,而不是 ɪ 的儿化音。

ɪr,相当于英音中的 ɪə,相当于是一个儿化的双元音 —— 可以理解为 iᵊr 或者 iɚ,比如,ear ɪr …… 不过要小心,不是所有的末尾的 ə 都是儿化的,比如 idea aɪˈdiː.ə 末尾的 ə 就没有儿化。

3.1.3.6. 常见拼写

ɪ

  • i
    • bit bɪt
    • sit sɪt
    • hill hɪl
  • y
    • gym dʒɪm
    • myth mɪθ
    • symbol ˈsɪm.bəl
  • e
    • pretty ˈprɪt̬.i
    • English ˈɪŋ.ɡlɪʃ
  • ui
    • build bɪld
    • guitar ɡɪˈtɑːr
    • guilty ˈɡɪl.ti

iː

  • ee
    • bee biː
    • see siː
    • tree triː
  • ea
    • eat iːt
    • beach biːtʃ
    • leave liːv
  • e
    • he hiː
    • me miː
    • she ʃiː
  • ie
    • believe bɪˈliːv
    • field fiːld
    • chief tʃiːf

i

  • y
    • happy ˈhæp.i
    • certainly ˈsɝː.tən.li
    • unexpectedly ˌʌn.ɪkˈspek.tɪd.li

File: 1000-hours/sounds-of-american-english/3.1.4-u.md

3.1.4. ʊ/u/uː

u 这个元音,也被称为 “圆元音”(round vowel),是因为说它的时候,嘴唇要略微缩成一个圆形,且嘴唇还要略微凸出。不过,由于这个元音在地球上的任何语言都存在,并且还几乎是一模一样地用,所以,大家说起来都不费劲。

3.1.4.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ʊ foot fʊt ʊ foot fʊt
uː moon muːn uː moon muːn
u situation ˌsɪtʃ.uˈeɪ.ʃən u situation ˌsɪtʃ.uˈeɪ.ʃən
ʊə pure pjʊə ʊr pure pjʊr

3.1.4.2. 短元音 vs. 长元音

有一个很小的细节值得注意,短元音 ʊ 其实就算不把嘴唇弄圆也可以发出,但长元音 uː 就不行。所以,uː 发声相对于短元音 ʊ 嘴唇总是相对更圆更凸出一点点。

请试着比较一下以下词对:

  • book bʊk ⭤ boot buːt
  • cook kʊk ⭤ cool kuːl
  • food fʊd ⭤ foot fuːt
  • good gʊd ⭤ goose guːs
  • look lʊk ⭤ loop luːp

3.1.4.3. 轻元音 u

另外,在《剑桥英语发声词典》中,这个音在非重音音节时被标注为 u,是个轻元音,和 i 一样,只出现在非重音音节之中。之前见到过的例子是 situation ˌsɪtʃ·uˈeɪ·ʃən。

3.1.4.4. 儿化音 ʊr

美音的儿化音 ʊr 对应着英音的 ʊə,比如 poor pʊr —— 不过请注意,这个词的英音可不是 pʊə,而是 pɔː(r)。

3.1.4.5. 常见拼写

ʊ

  • u

    • bush bʊʃ
    • push pʊʃ
    • put pʊt
  • oo

    • book bʊk
    • good ɡʊd
    • wood wʊd
  • ou

    • could kʊd
    • should ʃʊd
    • would wʊd

uː

  • ew
    • chew tʃuː
    • drew druː
  • o
    • do duː
    • to tuː
    • who huː
  • oo
    • boot buːt
    • food fuːd
    • moon muːn
  • u
    • June dʒuːn
    • rule ruːl
  • ue
    • glue ɡluː
    • true truː

File: 1000-hours/sounds-of-american-english/3.1.5-e.md

3.1.5. e/æ/er

æ 的发音,口型比 e 略大,但比 ɑ 小。

3.1.5.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
e check tʃek e check tʃek
æ thank θæŋk æ thank θæŋk
eə air eə er air er

3.1.5.2. 短元音 e

有些词典针对美式发音常常会用 ɛ 标注 e 这个音[^1]。比如,在《剑桥英语发声词典》里 head 标注为 hed,韦氏词典将其标注为 hɛd。

3.1.5.3. 半长元音 æ

æ 的发音,口型比 e 略大。

此外,æ 相当于是 e 的更长版本。虽然 æ 后面没有长元音符号 ː,但它的确比其它短元音长,算作半长元音。

亚洲人在读这个音的时候,经过提醒,都能做到把嘴巴张得相对更大一点,但都会不由自主地将它读成更短的版本。

概括起来,æ 的发音有两个要点:

  1. 嘴张大一点
  2. 音拉长一点

其中,第二个要点相对更为重要。你可以多试试这两个词,apple ˈæpəl,banana bəˈnænə,并刻意把其中的 æ 拉得更长一点。

3.1.5.4. 儿化音 er

美音中 e 的儿化音 er,相当于英音中的双元音 eə,可以理解为 eᵊr 或者 eɚ…… 说的时候,请仔细体会 r 之前的加音 ᵊ。

3.1.5.5. 常见拼写

e

  • e
    • bed bed
    • guess ɡes
    • pet pet
  • ea
    • bread bred
    • dead ded
    • lead (n.) led
  • a
    • any ˈen.i
    • many ˈmen.i
    • says sez
  • ai
    • again əˈɡen
    • said sed
  • ie
    • friend frend

æ

  • a
    • apple ˈæp.əl
    • pad pæt
    • glass ɡlæs
  • al
    • calf kæf
    • half hæf
  • au
    • laugh læf
    • draught dræft

[^1]: 在国际音标(IPA)e 这个符号代表的元音其实更接近英语音标 eɪ 所标识的元音, 是舌位局中靠前,嘴唇略闭,口型不圆的一个元音(a mid-front, closed, unrounded vowel), 而《剑桥英语发声词典》里的 e 相当于是国际音标里的 ɛ。


File: 1000-hours/sounds-of-american-english/3.1.6-ɔ.md

3.1.6. ɒ/ɑː/ɔː/ɔːr

基础元音 ɔ 的口型,比 u 大,比 ɑ 小。它和 u 一样,也是 “圆元音”(round vowel)—— 它在发声的时候,嘴唇动作非常明显,要在嘴唇形成一个小的圆形之后才开始发音。

3.1.6.1 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ɒ dog dɒɡ ɑː dog dɑːɡ
ɔː redraw ˌriːˈdrɔː ɔː redraw ˌriːˈdrɔː
ɔːr shoreʃɔːr

3.1.6.2 半长元音 ɑː

在英音中,ɒ 是个短元音,但,它在美音中,发音习惯不同,读作 ɑː,是个半长元音。主要区别在于两方面:

  1. 嘴张得更大一些(圆形嘴唇动作不明显)
  2. 声音拉得更长一些(比短元音长,比长元音短 —— 不过,读成长元音其实也没什么大问题)

在《剑桥英语发声词典》里,对应着英音的短元音 ɒ 美音标注干脆直接用 ɑː 替代。说实话,这么做也多少令人困惑,比如,仅从音标来看就分不清楚 bot 和 bought,因为它们都被标注成 bɑːt —— 当然从发音来看也无法区分。

这两个词的英音区别很明显 —— 长短不一样:

  • bot bɒt bought bɔːt

换言之,美式英语里相当于没有 ɒ 这个音,不妨再感受下这两个词: dog dɑːg 和 God gɑːd。

英音里的长元音 ɔː 也同样被美音读成 ɑː。比如,draw drɑː 和 redraw ˌriːˈdrɑː[^1]。

3.1.6.3 儿化长元音 ɔːr

长元音 ɔː 在美式英语里基本上都带着儿化音 —— 同样适用 “舌背后缩” 的方式。也许口型张得相对更大一些,但,很少有 ɑ 的音色。ɔːr ,更像是双元音 ɔᵊr 或者写成 ɔɚ。比如,more mɔːr —— 请仔细体会轻微的加音 ᵊ。但有时那个加音也可能近乎于无,比如, ordinary ˈɔːrdəneri……

3.1.6.4. ɔː

有时,ɔːr 的 r 会和后面元音开头的音节连在一起,比如,inventory ˈɪnvəntɔːri,这样的时候,即便是在美音里,也听到的是和 ɑː 非常不一样的没有被儿化的 ɔː。

另外,ɔːl 的组合也很常见,比如,palsy ˈpɔːl.zi 或者 wall wɔːl 。

3.1.6.5. 常见拼写

ɑː (equivalent to British ɒ)

  • a
    • father ˈfɑː.ðɚ
    • watch wɑːtʃ
    • wasp wɑːsp
  • al
    • almond ˈɑːl.mənd
    • balm bɑːm
    • palm pɑːm
  • au
    • because bɪˈkɑːz
    • clause klɑːz
    • paunch pɑːntʃ
  • aw
    • drawn drɑːn
    • awning ˈɑː.nɪŋ
    • law lɑː
  • o
    • hot hɑːt
    • dog dɑːɡ
    • log lɑːɡ
  • ough
    • bought bɑːt
    • thought θɑːt
    • fought fɑːt

ɔː

  • al
    • palsy ˈpɔːl.zi
    • saltine sɔːlˈtiːn
    • wall wɔːl
  • au
    • aurora ɔːˈrɔːr.ə
    • caudal ˈkɔː.dəl
    • saute sɔːˈteɪ
  • aw
    • draw drɔː
    • saw sɔː
  • o
    • boring ˈbɔː.rɪŋ
    • orange ˈɔːr.ɪndʒ
    • inventory ˈɪn.vən.tɔːr.i

ɔːr

  • or
    • fork fɔːrk
    • horse hɔːrs
    • short ʃɔːrt
  • oar
    • board bɔːrd
    • soar sɔːr
    • roar rɔːr
  • our
    • four fɔːr
    • pour pɔːr
  • ore
    • core kɔːr
    • more mɔːr
    • shore ʃɔːr
  • oor
    • door dɔːr
    • floor flɔːr

[^1]: 事实上,redraw 在《剑桥英语发声词典》里被标注为 ˌriːˈdrɔː —— 很可能是个编辑过程中的 “漏网之鱼”。


File: 1000-hours/sounds-of-american-english/3.1.7-aɪ.md

3.1.7. aɪ, aɪr, eɪ, ɔɪ, aʊ, aʊr, oʊ

3.1.7.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
aɪ dry draɪ aɪ dry draɪ
aɪə fire faɪə aɪr fire faɪr
eɪ take teɪk eɪ take teɪk
ɔɪ voice vɔɪs ɔɪ voice vɔɪs
aʊ how haʊ aʊ how haʊ
aʊə hour aʊər aʊr hour aʊr
əʊ nose nəʊz oʊ nose noʊz

3.1.7.2. 长度

亚洲语系基本上都没有和英文一样长度的双元音。韩文日文的母音和中文的韵母虽然都有少数由两个基础音素构成的组合音,但,它们和英文的双元音不同的地方在于,它们都是和其它韵母或者母音等长的,而不是像英文双元音的长度那样几乎是短元音的两倍。

比如,当中国人说 “太累了” 的时候,“太” [tài] 这个字的 “韵母” 就很接近英文的双元音 aɪ;“累” [lèi] 这个字的韵母就很接近英文的双元音 eɪ…… 但,它们的长度就是不一样,英文的双元音总是相对更长。

英文的双元音,都是两个元音的组合。它们都是从第一个元音滑向第二个元音,所以,它们从长度上来看,相当于是长元音;节奏在感觉上大抵是乐谱里的 “一拍里均放着三个等长音符的三连音”,前一个音素更长一些,后一个音素相对较短。

读 aɪ, eɪ, ɔɪ 的时候,唇形分别从 ɑ e, ɔ 开始,唇形保持不变,用喉咙完成从起始元音到 ɪ 的过度。

读 aʊ 和 oʊ 的时候,唇形有变化,要分别从 ɑ 和 ə 开始,而后过度到 ʊ。

同样的道理,读之前讲过的儿化音 er、ɪr、ʊr 的时候也一样,唇形分别从 e、i(注意不是 ɪ)、ʊ 开始,而后唇形保持不变,接着用喉咙完成从起始元音到 ə 的过度 —— 而它的儿化音 ɚ 则使用舌背后缩的方式。所以它们相当于是 eɚ, ɪɚ, ʊɚ,进而干脆写成了 er, ɪr, ʊr。

在读它们的时候,最重要的是,要把它们读得足够长 —— 几乎要占用两个元音的发声时长,并且足够饱满。

除了双元音之外,还有另外两个三元音:aɪr 和 aʊr —— 同样要刻意拉长。

3.1.7.3. 常见拼写

aɪ

  • i
    • align əˈlaɪn
    • ice aɪs
    • spider ˈspaɪ.dɚ
  • ie
    • lies laɪs
    • pie paɪ
    • tie taɪ
  • igh
    • high haɪ
    • light laɪt
    • night naɪt
  • uy
    • buy baɪ
    • guy ɡaɪ
  • y
    • cry kraɪ
    • fly flaɪ
    • supply səˈplaɪ

eɪ

  • a
    • cake keɪk
    • make meɪk
    • table ˈteɪ.bəl
  • ai
    • paint peɪnt
    • rain reɪn
    • train treɪn
  • ay
    • day deɪ
    • play pleɪ
    • stay steɪ
  • ea
    • break breɪk
    • great ɡreɪt
    • steak steɪk
  • ei/eigh
    • eight eɪt
    • reign reɪn
    • vein veɪn
    • weight weɪt
  • ey
    • grey ɡreɪ
    • survey ˈsɝː.veɪ
    • they ðeɪ

ɔɪ

  • oi
    • join dʒɔɪn
    • voice vɔɪs
  • oy
    • boy bɔɪ
    • joy dʒɔɪ
    • toy tɔɪ

aʊ

  • au
    • kraut kraʊt
  • ou
    • house haʊs
    • out aʊt
  • ow
    • brown braʊn
    • cow kaʊ
    • flower ˈflaʊ.ɚ

oʊ

  • o
    • go ɡoʊ
    • no noʊ
    • so soʊ
  • oa
    • boat boʊt
    • road roʊd
    • soap soʊp
  • oe
    • Joe dʒoʊ
    • foe foʊ
    • toe toʊ
  • ow
    • blow bloʊ
    • grow ɡroʊ
    • show ʃoʊ
  • ough
    • though ðoʊ
    • dough doʊ
  • ew
    • sew soʊ

er

  • ear
    • bear ber
  • air
    • fair fer
    • pair per
  • are
    • care ker
    • fare fer
    • ware wer

ɪr

  • eer
    • cheer tʃɪr
    • deer dɪr
    • steer stɪr
  • ear
    • clear klɪr
    • fear fɪr
    • near nɪr
  • ier
    • fierce fɪrs
    • pier pɪr
  • eir
    • weird wɪrd

ʊr

  • ure
    • cure kjʊr
    • pure pjʊr
    • sure ʃʊr
  • our
    • tour tʊr
    • velour vəˈlʊr
    • your jʊr
  • oor
    • poor pʊr
    • moor mʊr

File: 1000-hours/sounds-of-american-english/3.2-consonants.md

3.2. 辅音(Consonants)

地球上的所有语言都一样,在自然语流中,辅音不会单独存在。单独的元音,可以构成音节,也可以构成或者表达意义。比如,ah ɑː, oh oʊ,或者 Uh-Oh ˈʌ.oʊ[^1]。但,绝大多数辅音必须依附于元音才能构成音节,并且,单独的辅音也不能构成意义。

辅音可以根据发声时声带是否震动被分为清辅音(voiceless consonants)与浊辅音(voiced consonants)。清辅音只有气流震动,没有声带振动,而浊辅音的气流震动却伴有声带振动。比如,s 是清辅音,z 是浊辅音。

辅音(consonants)
清辅音(voiceless) p, t, k, f, s, θ, ʃ, h, tʃ, tr, ts
浊辅音(voiced) b, d, g, v, z, ð, ʒ, r, dʒ, dr, dz, m, n, ŋ, l

注意:w 和 j 这两个辅音被称为半元音 —— 无法用声带振动与否分类。

辅音的另外一个划分,是根据口腔内气流振动的方式和位置。

气流振动方式(Airflow) 清浊与否(Voiced or not) 辅音(Consonants)
破擦音(Plosive) 清辅音 p, t, k
浊辅音 b, d, g
摩擦音(Fricative) 清辅音 f, s, θ, ʃ, h
浊辅音 v, z, ð, ʒ
塞擦音(Affricate) 清辅音 tʃ, tr, ts
浊辅音 dʒ, dr, dz
鼻音(Nasal) 浊辅音 m, n, ŋ
边擦音(Lateral) 浊辅音 l, r
半元音(Semivowel) j, w

作为初学者,你无需尝试记忆这些分类和术语 —— 除非将来你有多余的时间精力。这些语言学的概念,并不构成任何学习障碍。你需要了解的只不过是分类的依据:声带振动与否,以及气流振动方式和位置。

另外,需要注意:有 4 个辅音,l, m, n,以及之前见过很多次的 r,它们被称作 “音节辅音”,因为它们自带 ə 的音色。比如,bottle ˈbɑːtl, bottom ˈbɑːtm, button ˈbʌtn。有些词典会用 ᵊ,比如写成:
bottle ˈbɑːtᵊl, bottom ˈbɑːtᵊm, button ˈbʌtᵊn。而《剑桥英语发声词典》的标注方式是:bottle ˈbɑːt̬əl, bottom ˈbɑːt̬əm, button ˈbʌtən……

格外需要注意的是:辅音发声时,舌尖起始位置非常重要。

以下 4 个位置,我们会反复提及:

Positions of tongue tip Consonants
① θ, ð
② s, z
③ t, d, l, ʃ, ʒ, tʃ, dʒ, tr, dr
④ r

[^1]: Uh-Oh ˈʌ.oʊ 实际上有个隐藏的辅音,喉塞音 ʔ,完整的音标应该是 ˈʌʔ.oʊ……


File: 1000-hours/sounds-of-american-english/3.2.1-pb.md

3.2.1. p/b

p/b 的发声动作一样,都是先把嘴唇闭合,而后用气流冲开嘴唇。p 没有声带振动 —— 所以是清辅音;而 b 有声带振动 —— 所以是浊辅音。

3.2.1.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
p poor pɔː p poor pʊr
b but bʌt b but bʌt

3.2.1.2. 极轻元音 ɤ

不加讲解的话,很多人会以为这两个辅音都会自然带有很轻微的 ʊ 的音色 —— 是气流冲开嘴唇自然产生的声音。

[!Note]

《剑桥英语发声词典》中,辅音音素示例都刻意采用了 ə 的音色,例如,把 p 读成 pə,把 b 读成 bə。

可事实上,那并不是 ʊ,而是另外一个很轻的元音,是一个普遍没有被收录到英文音标里的国际音标符号,ɤ。其实,中文也有这个音,比如,在 “思念” 这个词中, “思”(sī)的韵母就是这个音,另外,韩文里也有这个音(韩文字符为 ᅳ),但日文里没有这个音。

虽然英文的音标列表里并没有收录 ɤ 这个音,可实际上,你试试就知道了:d 常常被读作 dɤ,g 常常被读作 gɤ —— 其中的 ɤ 很轻很短;同样,t 实际上被读作 tɤ,k 被读作 kɤ。

之前讲过,非重音音节里的元音可能会被弱化为 schwa(3.1.1.2)ə…… 在自然语流中,连 schwa ə 都可能会被进一步弱化,变成非常轻的 ɤ。比如,常用词 reasonable,字典里标注的当然是 ˈriːzənəbəl,实际听到的常常是 ˈriːzɤnəbəl —— 拼写成 so 的这个音节,发音可能并不是词典里标注的 zə,而是 zɤ 甚至干脆只剩下 z……

3.2.1.3. 阻塞音 ◌̚

有些辅音 —— 比如,p, g, t, θ —— 处于自然语流末尾(比如句子末尾,或者换气之前的意群末尾)的时候常常并不发音。这样的时候,需要引入另外一个英语音标里并未收录的符号,◌̚。

这里的 “不发音” 是指 “声带没有振动” 但 “其他发声器官 —— 比如嘴唇、舌尖或喉咙 —— 动作完整”。

  • p̚,嘴唇闭上,而后并没有继续张开,所以没有气流输出,也没有随后极其轻微的 ɤ。比如 cup kʌp
  • g̚,舌背后部抬起来顶住软腭,而后并不离开,所以没有气流输出,也没有随后极其轻微的 ɤ。比如 big bɪg
  • t̚,舌尖顶到位置 ③,而后并没有离开,所以没有气流输出,也没有随后极其轻微的 ɤ。比如 but bʌt
  • θ̚,舌尖顶到位置 ①,而后并没有离开,所以没有气流输出,也没有随后极其轻微的 ɤ。比如 math mæθ

这些阻塞音其实都有专门的名称,我们会在后面的章节(4.2.3. 顿/停顿)给出另外一些句子中的例子。

3.1.2.4. 常见拼写

p

  • p
    • pat pæt
    • pick pɪk
    • stop stɑːp
  • pp
    • happy ˈhæp.i
    • hopper ˈhɑː.pɚ
    • puppet ˈpʌp.ɪt

b

  • b
    • big bɪɡ
    • blob blɑːb
    • club klʌb

File: 1000-hours/sounds-of-american-english/3.2.10-tsdz.md

3.2.10. ts/dz

《剑桥英语发声词典》的 Pronunciation symbols 中没有收录 ts 和 dz。

3.2.10.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ts cats kæts ts cats kæts
dz kids kɪdz dz kids kɪdz

3.2.10.2. 舌尖起始位置

ts/dz 和 s/z 不一样的地方在于发声时舌尖起始位置,s/z 舌尖起始位置贴近但没有接触到牙齿和牙龈的接缝处(位置 ②);但,ts/dz 的舌尖要再往后一点,和 t/d 发声时舌尖起始位置一样,贴在龈脊的那个部位(位置 ③)之后开始发声。

可以用 students ˈstudənts 这个词反复体会 s、d、ts 的舌尖位置(注意,开头的 st 会被读成 sd)……

ts 和 s 从音质上来看就很不一样,但,dz 和 z,即便是母语使用者,也很难听出区别 —— 他们只是习惯了用不同的舌尖起始位置发声而已。

3.2.10.3. 常见拼写

ts

  • ts
    • clients ˈklaɪ.ənts
    • students ˈstuː.dənts
    • treats triːts

dz

  • ds
    • deeds diːdz
    • records rɪˈkɔːrdz
    • words wɝːdz

File: 1000-hours/sounds-of-american-english/3.2.11-mnŋ.md

3.2.11. m/n/ŋ

3.2.11.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
m moon muːn m moon muːn
n nose nəʊz n nose noʊz
ŋ thank θæŋk ŋ thank θæŋk

3.2.11.2. 没有 ʊ

m 和 n 处于音节开头时,没有人会觉得困难。尤其是 m…… 因为它也许是人类学会说的第一个辅音;于此同时,ɑ 永远是人类学会的第一个元音,所以大家都用 mɑ 称呼自己的母亲。

ŋ 处于其它元音之后对所有人来说也同样不构成困难,因为英文中最常用的不过是 ɪŋ 而已……

麻烦在于 m 处于音节末尾的时候。很多人会不由自主地额外加上一个 ʊ 的音,这是一个嘴唇的多余动作产生的结果。比如,把 room ruːm 读成 ruːmʊ。

3.2.11.3. 音变

当 m/n 处于 f/v 之前的时候,发音都会发生变化 —— 这是因为 f/v 的发声动作,需要上牙与下唇接触。

  • m + f/v = n + f/v, comfort ˈkəmfərt → ˈkənfərt
  • n + f/v = ŋ + f/v, conversation ˌkɑnvərˈseɪʃən → ˌkɑŋvərˈseɪʃən

3.2.11.4. 加音 ᵊ

当 æ 在 m 之前的时候,部分母语使用者会添一个 ᵊ 进去,比如,Sam sæm,会被他们读成 sæᵊm —— 也有一定道理,因为 m 的确是音节辅音 —— 例如,chasm ˈkæzm̩,相当于 ˈkæzᵊm, prism ˈprɪzm̩,相当于 ˈprɪzᵊm。

3.2.11.4. 常见拼写

m

  • m
    • army ˈɑːr.mi
    • mob mɑːb
    • mom mɑːm

n

  • n
    • mind maɪnd
    • night naɪt
    • nine naɪn
  • kn
    • know noʊ
    • knight naɪt
  • gn
    • gnaw nɑː
    • gnome noʊm

ŋ

  • n (before k)
    • anchor ˈæŋ.kɚ
    • bank bæŋk
    • thank θæŋk
  • ng
    • bang bæŋ
    • long lɑːŋ
    • sing sɪŋ

File: 1000-hours/sounds-of-american-english/3.2.12-lr.md

3.2.12. l, r

3.2.12.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
l lure lʊə l lure lʊr
r redraw ˌriːˈdrɔː r redraw ˌriːˈdrɔː

3.2.12.2. 舌尖起始位置

l 发声时舌尖起始位置与 t/d 相同 —— 即,位置 ③:

r 发声时舌尖起始位置相对更加靠后 —— 即,位置 ④:

l 和 r 处于音节开头的时候,人们一般不会觉得困难,比如 lot lɑːt 或者 rot rɑːt……

3.2.12.3. 加音 ᵊ

l 的困难总是来自于它们处在音节末尾的时候。

不妨尝试着先读一下 milk mɪlk…… 很多人读出来的实际上是 mjʊk…… 另外一个发音类似的常用单词也常常被误读,build bɪld ,基本上总是被误读为 bjʊld。

l 在音节末尾的时候,有一个看不到的动作,舌尖会向前向上移动直至贴到龈脊。于是,音节末尾的 l 之前会有一个加音,轻微的 ᵊ。

说实话,倒也不是特别难,这只不过是几分钟就可以解决的问题。

  • 先反复说 ə... əl... ə... əl... 这里格外需要注意:嘴唇张开之后没有其它动作,不要带嘴唇变化造成的 ʊ 的音色;从 ə 到 l 的过程中,保持声带振动,剩余的全靠舌尖移动完成……
  • 接着直接反复说 əl... əl...
  • 再反复说 əlk... əlk...
  • 现在反复说 mɪᵊlk... mɪᵊlk...

[!Note]
需要格外注意的有两点:

  • ɪ 不是 iː 的简单化短版本(3.1.3.2),它更接近 eɪ 的短版本。于是,milk 是 mɪlk,不是 milk,你哪怕把它读成 meɪlk 都可能更准确一些 —— 只不过得想办法把 eɪ 读得短一点……
  • l 这个音,在音节末尾的时候,舌尖有个向前移动至龈脊(位置 ③)的动作 —— 这个动作很重要,否则与它相关的连读就说不出来(4.4.1)。很多人会用 ʊ 替代这个动作,比如,吧 result rɪˈzəlt 读成 rɪˈzəʊt;同样,mɪlk 也实际上被很多人读作 mjʊk…… 必须注意,音节末尾的 l 只有舌尖动作,没有嘴唇动作。再用同样的方式练练 girl ɡɝːl(常常会被误读成 gəʊ), world wɝːld(常常会被误读成 wəʊd)。

以 l 处于音节末尾的常用词汇很多,读得时候要注意,要加上 ᵊ,比如:

  • fail feɪl ⭢ feɪᵊl
  • file faɪl ⭢ faɪᵊl
  • sell sel ⭢ seᵊl
  • sale seɪl ⭢ seɪᵊl
  • tell tel ⭢ teᵊl
  • tale teɪl ⭢ teɪᵊl
  • trail treɪl ⭢ treɪᵊl
  • drill drɪl ⭢ drɪᵊl

[!Note]

ʌl 没有 ᵊ 的加音,因为 ʌ 和 ə 原本就非常相近。比如,ultimate ˈʌltɪmət,或者 result rɪˈzəlt。另外,在自然语流中,iːl 要注意。比如, reveal,词典里的音标是 rɪˈviːl, 但它的确读做 rɪˈviːᵊl,有加音 ᵊ,但,revealing,读作 rɪˈviːlɪŋ,没有加音 ᵊ,可能是因为 l 被挪到后面和 ɪŋ 构成了第三个音节 lɪŋ……

l 在语言学里有个专门的称呼,叫做音节辅音(l, r, m, n, 都是音节辅音),就是因为它的发声动作如果完整的话,前面就会自然附加着一个轻微的元音 ᵊ 的音色。比如,little ˈlɪtl̩ —— l 下面多出的那一个点 l̩ 的意思是说,这里的 l̩ 是个音节辅音,相当于 ᵊl…… 当然,很多词典干脆就直接标注成了 ˈlɪtᵊl 或者 ˈlɪtəl。《剑桥英语发声词典》中没有音节辅音符号,也没区分 ᵊ 和 ə,标注的是 ˈlɪt̬əl(另外要注意:因为 t 夹在两个元音之间,变成了弹舌音 t̬)。

3.2.12.4. 舌尖起始位置比较

比较一下以下的辅音发声时舌尖起始位置的不同:

  • t/d 的舌尖起始位置时贴在龈脊的前部 ③;
  • s/z 要相对于 t/d 往前一些,贴近但没有接触到牙齿和牙龈的接缝处 ②;
  • θ/ð 要相对于 s/z再往前一些,贴在牙齿上,或者伸出牙齿一点点 ①;
  • ʃ/ʒ 和 t/d 一样,接近但没有接触到龈脊的那个部位 ③;
  • tʃ/dʒ 和 t/d 一样,贴在龈脊的那个部位 ③;
  • l 和 t/d 一样,贴在龈脊的那个部位 ③;
  • r 相对于 ʃ/ʒ 还要再往后一点,贴在龈脊的那个部位 ④……
Positions of tongue tip Consonants
① θ, ð
② s, z
③ t, d, l, ʃ, ʒ, tʃ, dʒ, tr, dr
④ r

3.2.12.5. 常见拼写

l

  • l

    • feel fiːl
    • file faɪl
    • like laɪk
  • ll

    • mill mɪl
    • call kɔːl
    • thrill θrɪl

r

  • r
    • read riːd
    • road roʊd
    • ring rɪŋ
  • rr
    • borrow ˈbɑːr.oʊ
    • carry ˈker.i
    • hurry ˈhɝː.i

File: 1000-hours/sounds-of-american-english/3.2.13-wj.md

3.2.13. j/w

3.2.13.1. 示范

British American
D.J. 例词(Example) IPA 例词(Example)
w worker ˈwɜː.kə w worker ˈwɝː.kɚ
j yes jes j yes jes

3.2.13.2. 半元音

w 和 j 是半元音。

w 与后面的元音相连,相当于在那个元音前面加上了一个 ʊ,比如 way weɪ,读音上相当于是 ʊeɪ。

j 与后面的元音相连,相当于在那个元音前面加上了一个 ɪ,比如 you juː,读音上相当于是 iuː。

3.2.13.3. 辅音 + w

w 可以和另外的辅音结合作为音节开头:sw、tw、dw、kw、skw、gw…… 这其中最容易出错也最常的是 kw,尤其是 kwɒ 和 kwɔː,比如,quart kwɔːrt,常常会被误读为 kɔːrt(听起来和 court kɔːrt 同音);再比如,quality ˈkwɑː.lə.t̬i 常常会被误读为 ˈkɔːlɪti —— 关键在于,k 的音之后有一个发出 ʊ 的嘴唇动作,否则 kw 就变成了 k —— 这个差异在母语使用者听起来异常地明显。

3.2.13.4. 常见拼写

w

  • w
    • week wiːk
    • weird wɪrd
    • wife waɪf
  • wh
    • white waɪt
    • what wɑːt
    • why waɪ

j

  • y
    • yes jes
    • yet jet
    • yoke joʊk
  • i
    • onion ˈʌn.jən
    • million ˈmɪl.jən
  • j
    • jager ˈjeɪ.ɡɚ
    • hallelujah ˌhæl.ɪˈluː.jə

File: 1000-hours/sounds-of-american-english/3.2.14-h.md

3.2.14. h

不管人们用什么样的语言,笑声总是一致的…… 因为地球人在发笑的时候都使用大致一样的声音,都包含 h 这个音 —— 于是,没有人会觉得 h 的发音有什么困难。

3.2.14.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
h how haʊ h how haʊ

3.2.14.2. 击穿

不过有一个细节需要注意。在日常对话中,不那么正式或者速度较快的时候,h 会被 “击穿”。比如,Did he do that? 这句话,更可能被说成 dɪ diː duː ðæt ,而不是正式的那样 dɪd hiː duː ðæt。

更多的例子比如:

  • I heard him singing.
  • Has he arrived yet?
  • He helped her with the project.
  • His house is over there.
  • He's holding the door.

3.2.14.3. 常见拼写

h

  • h
    • hello heˈloʊ
    • heat hiːt
    • high haɪ

File: 1000-hours/sounds-of-american-english/3.2.2-td.md

3.2.2. t/d

t 是清辅音,d 是浊辅音。d 相对简单;然而,t 却可能是美式英语里最复杂的音素,所以也是最需要专门练习的辅音之一。

3.2.2.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
t take teɪk t take teɪk
t̬ city ˈsɪt̬.i
d dog dɒɡ d dog dɑːɡ

3.2.2.2. 舌尖起始位置

虽然每种语言都有这两个辅音,但,英文的 t/d 的发声关键在于舌尖起始位置 —— 顶在龈脊(alveolar ridge)上,即,位置 ③,而不是贴在牙齿上。

在中文普通话里,t/d 这两个声母发声时舌尖起始位置贴在牙齿上;你可以试着用中文普通话说一遍 “我踢死你!”(wǒ tī sǐ nǐ)……

所以,对中国人来说,这其实是个相当难以纠正的习惯,因为舌尖总是不由自主地使用母语习惯贴到牙齿上(位置 ①)而不是龈脊上(位置 ③) —— 于是,只能通过大量且高密度的练习建立新习惯。一个很经典的练习词汇是 student ˈstuː.dənt。

3.2.2.3. 并非 tə/də

主要额外提醒的是,虽然《剑桥英语发声词典》中,t/d 的示例都读成了 tə 和 də,但那并不是这两个音素在自然语流中的实际发音。

就好像 p/b 一样,t/d 在实际发音的时候也会自然带着一个很轻的 ɤ,而不是 ə。若是依据母语的习惯,中国人习惯于将 t(ɤ) 读作 tə,将 d(ɤ) 读作 də。还是需要为此专门建立一个新习惯。

3.2.2.3. t 的变体

t 这个音素 —— 当然也是最常用的一个 —— 也许是美式英语的辅音里最复杂的一个。t 只有在处于重音音节开头的时候才会被正常读出,比如,take teɪk。

除了正常音 t 之外,它有很多变体(allophone),比如,弹舌音 t̬,阻塞音 t̚,省略音/可选音 ᵗ,以及很多人不经讲解就完全注意不到的喉塞音 ʔ。

3.2.2.3.1. 弹舌音 t̬

夹在两个元音中间的 t 会变成接近 d 的弹舌音 t̬,比如,water ˈwɑːt̬ɚ。《剑桥英语发声词典》中的美式音标专门为此做了优化,增加了弹舌音 t̬ 的标注 —— 大多数词典并非如此。

3.2.2.3.2. 阻塞音 t̚

处于音节末尾的 t,有时只是舌尖动作完整,却没有发出声音。即,舌尖顶到龈脊之后并没有送出气流。比如,but bʌt̚。

3.2.2.3.3. 省略音/可选音 ᵗ

处于音节末尾 nt,其中的 t 可能会被省略掉,比如,winter ˈwɪnᵗɚ —— 当然,若是读成 ˈwɪntɚ也没错……[^1] 。

3.2.2.3.4. 喉塞音 ʔ

喉塞音 ʔ 又是一个英语音标体系中都没有收录的国际音标符号。

喉塞音 ʔ 相当于是 g 这个音的阻塞音 g̚, 就好像用阻塞音说 big 时一样,舌背后部抬起来顶住软腭,而后并不离开,所以没有气流输出,感觉声音被卡住了一小下…… 再反复听听 Uh-Oh! ʌʔoʊ 就明白了。

m/n/l 之前的 t 有可能变成喉塞音 ʔ,比如,utmost ˈʌʔˌmoʊst, fitness ˈfɪʔnəs, witness ˈwɪʔnəs, 或 fruitless ˈfruːʔləs —— 当然,所有词典都一样,都统一标注成 t 而不是 ʔ。

3.2.2.3.5. t 的浊化

t 处于 s 之后的时候会浊化,会被读成 d —— 虽然词典里的音标标注还是 t,比如 student,字典里的标注依然是 ˈstuː.dənt,但读出来的却是 ˈsduː.dənt
。

3.2.2.4. d 的清化

t 有可能浊化…… 与之相对地,d 也可能清化。比如,ed 有时并不读作 ɪd, 在清辅音 p, k, f, s, ʃ, tʃ, θ 之后的时候,读作 t。比如,hoped hoʊpt ,laughed læft ,liked laɪkt ,watched wɑːtʃt 。

3.2.2.5. 常见拼写

t

  • t
    • take teɪk
    • top tɑːp
    • tilt tɪlt
  • th
    • Thomas ˈtoʊm.əs
    • Thames temz
    • thyme taɪm
  • tt
    • butter ˈbʌt̬.ɚ
    • little ˈlɪt̬.əl
    • matter ˈmæt̬.ɚ
  • ght
    • caught kɑːt
    • taught tɑːt
    • thought θɑːt
  • ed (after a voiceless consonant p, k, f, s, sh, ch, th)
    • hoped hoʊpt
    • laughed læft
    • liked laɪkt
    • watched wɑːtʃt

d

  • d
    • dog dɑːɡ
    • deed diːd
    • need niːd
  • dd
    • add æd
    • riddle ˈrɪd.əl
    • sudden ˈsʌd.ən

[^1]: 非重读音节末尾的 nd 中的 d 也常常并不发音,最常见的比如 and 会被读作 ən,再比如,a second offer 会被说成 ə ˈsekən‿ɑːfɚ。甚至,ntʃ 也常常被读成 nᵗʃ,比如,adventure /ədˈvenᵗʃɚ/, 或者 French /frenᵗʃ/ —— 在 nᵗʃ 这一点上,美式英语和英式英语都一样。


File: 1000-hours/sounds-of-american-english/3.2.3-kg.md

3.2.3. k/g

3.2.3.1. 示例

British (26) American (27)
D.J. 例词(Example) IPA 例词(Example)
k card kɑːd k card kɑːrd
g gear ɡɪə g gear ɡɪr

3.2.3.2. 舌背动作

幸亏各种语言里都有这两个音,否则的话,它们学起来原本可能挺困难……

首先,这两个音需要舌背后部抬起来顶住软腭而后开始发音。这个动作在口腔深处,所以无法直接看到。绝大多数人其实并不知道自己具体是怎么发出这两个声音的,也没有人能想起来自己小时候是如何学会的。

3.2.3.3. ɤ

就好像 t/d 在发音的时候一样,k/g 也会自然带着一个很轻的元音,再一次,不是 ə 而是 ɤ,但只有气流通过,没有声带振动。请仔细体会一下 class 的发音:klæs —— 其中 ɤ 的音色,虽然轻微但也明显。

3.2.3.4. k 的浊化

另外,夹在两个元音之间的 k 也会出现像 t 夹在两个元音之间时那样的浊化现象,听起来更接近 g。比如,look out,seek out,woke up。

3.2.4. 常见拼写

k

  • k
    • kid kɪd
    • like laɪk
    • skin skɪn
  • c
    • climb klaɪm
    • cream kriːm
    • cry kraɪ
  • ch
    • ache eɪk
    • chemistry ˈkem.ə.stri
    • school skuːl
  • ck
    • brick brɪk
    • click klɪk
    • kick kɪk

g

  • g
    • get ɡet
    • go ɡoʊ
    • logo ˈloʊɡoʊ
  • gg
    • beggarˈbeɡ.ɚ
    • egg eɡ
    • waggle ˈwæɡ.əl
  • gh
    • ghost ɡoʊst
    • ghetto ˈɡet̬.oʊ
  • gu
    • guard ɡɑːrd
    • guide ɡaɪd
    • guitar ɡɪˈtɑːr

File: 1000-hours/sounds-of-american-english/3.2.4-fv.md

3.2.4. f/v

3.2.4.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
f fire faɪə f fire faɪr
v voice vɔɪs v voice vɔɪs

3.2.4.2. 嘴唇动作

与 k/g 不一样,f/v 的发声重点是可以看到的:下嘴唇略微收回,上牙贴在下嘴唇上,而后开始发音。

韩语中没有这两个音,所以,他们会不由自主地用 p 替代 f,用 b 替代 v;所以,我们经常会听到韩国人把 photo 说成 ˈpoʊˌtoʊ,把 video 说成 ˈbɪdioʊ……

中国南方有些方言里也没有 f,所以,他们可能会用 hw 替代 f,比如,把 fight 读成 hwaɪt;中文的普通话里没有 v,所以,中国人经常把用 w 替换 v,比如,把 very 读成 ˈwɛri……

3.2.4.3. 没有 ɤ

另外需要注意的是,与 p/b、t/d、k/g 不一样,f/v 在发声的时候不带任何轻微的元音音色,哪怕是那个若有若无的 ɤ。

3.2.4.4. 常见拼写

f

  • f
    • fight faɪt
    • life laɪf
    • wife waɪf
  • ph
    • photo ˈfoʊ.t̬oʊ
    • coffee ˈkɑː.fi
    • elephant ˈel.ə.fənt

v

  • v
    • live lɪv
    • vector ˈvek.tɚ
    • vine vaɪn
  • vv
    • chivvy ˈtʃɪv.i
    • divvy ˈdɪv.i

File: 1000-hours/sounds-of-american-english/3.2.5-sz.md

3.2.5. s/z

3.2.5.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
s situation ˌsɪtʃ.uˈeɪ.ʃən s situation ˌsɪtʃ.uˈeɪ.ʃən
z zoo zuː z zoo zuː

3.2.5.2. 舌尖起始位置

s/z 发声时舌尖起始位置贴近但没有接触到牙齿和牙龈的接缝处 —— 即,位置 ②。

中文里当然也有 s 这个音,但,中文里的 s 在发音时舌尖起始位置更接近下排牙齿,即,比位置 ② 更低一些你可以再试着用中文普通话说一遍 “我踢死你!”(wǒ tī sǐ nǐ)……

虽然两个略微不同的舌尖起始位置在单个音素中听不出什么区别。但,如果作为中国人不练出一个舌尖起始位置为 ② 的 s,那么说英文就相当吃力…… 比如,在说 st 这个组合的时候 —— 而 st 这恰好也是英文中使用频率特别高的一个组合。

3.2.5.3. 长辅音

英文的辅音原本并没有长短区分 —— 有些语言的辅音是有长短区分的 —— 亚洲语言也基本都没有这种差别。

然而,英文的 f/v、s/z、ʃ 以及 ts 是可以拉长的,尤其是 s 和 ts。经过提醒之后,在自然语流中你经常会注意到这种情况。

3.2.5.4. s 之后的浊化

另外,需要注意的是,s 之后的 p/t/tr/k 作为音节开头时会被浊化(比如,音节末尾的 st 中的 t 不会被浊化),相应读成 b/d/dr/g(但是,音标标注却保持原样):

  • speak spiːk → sbiːk
  • student ˈstudənt → ˈsdudənt
  • school skuːl → sguːl
  • frustrate ˈfrʌˌstreɪt → ˈfrʌˌsdreɪt

3.2.5.5. 复数末尾的 s 和 z

英语的名次和动词都有复数形式,末尾 s 与 z 的区分挺重要的,最好从一开始就能够说对…… 时间拖得越久越难改。

  • 清辅音后读作 s

    • books bʊks
    • maps mæps
    • paths pæθs
    • 但,清辅音 t 和 s 读成 ts
      • cats kæts
      • students ˈstuː.dənts
  • 浊辅音后读作 z

    • balls bɑːlz
    • dogs dɑːɡz
    • wolves wʊlvz
    • 但,清辅音 d 和 s 读成 dz
      • beds bedz
      • cards kɑrdz
  • 元音后读作 z

    • bees biːz
    • boys bɔɪz
    • days deɪz
    • cars kɑːrz
  • s/z/ʃ/tʃ/ʒ/dʒ 结尾的词加上 es 读作 ɪz

    • glasses ɡlæsɪz
    • buzzes bʌzɪz
    • brushes brʌʃɪz
    • watches wɑːtʃɪz
    • garages ɡəˈrɑːʒɪz
    • cages keɪdʒɪz

3.2.5.6. 常见拼写

s

  • c
    • ceiling ˈsiː.lɪŋ
    • cedar ˈsiː.dɚ
    • concede kənˈsiːd
  • s
    • see siː
    • sea siː
    • sick sɪk
  • ss
    • boss bɑːs
    • class klæs
    • stress stres
  • sc
    • scene siːn
    • science ˈsaɪ.əns
    • sceptic ˈskep.tɪk

z

  • z
    • zone zoʊn
    • zebra ˈziː.brə
  • zz
    • buzz bʌz
    • jazz dʒæz
    • puzzle ˈpʌz.əl
  • s
    • present ˈprez.ənt
    • raise reɪz
    • rose roʊz
  • s (forming plurals after vowels or voiced consonants)
    • cars kɑːrz
    • trees ˈtriːz
    • brains breɪnz

File: 1000-hours/sounds-of-american-english/3.2.6-θð.md

3.2.6. θ/ð

对很多人来说,θ/ð 相对较难 —— 主要是因为很多语言中没有这两个音,比如,中日韩都一样,都没有这两个音。

3.2.6.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
θ thank θæŋk θ thank θæŋk
ð this ðɪs ð this ðɪs

3.2.6.2. 舌尖起始位置

虽然,学校里的英语老师们都强调说,发这两个音的时候要用牙齿咬住一点点舌尖再发声,也就是说,舌尖要伸出牙齿一点点 —— 这么做当然发声更为清楚,在读单个音节或词汇的时候尤为明显……

但是,在连贯的自然语流之中,会有大量处于非重音位置的 θ/ð 发声时舌尖起始位置并没有伸到牙齿之外,只是贴在牙齿上而已 —— 即,位置 ①。反过来,即便是处于重音位置的 θ/ð, 也一样可以把发声动作简化一下,只要把舌尖贴到牙齿上,而后开始发音即可。

最初练习的时候,可以借助 s/z 作为辅助:

  • 先发 s 的音,而后,把舌尖往前推一点点就接触到了牙齿,然后以与 s 同样的方式发音,就能听到 θ;然后分别说两个词 sink sɪŋk 和 think θɪŋk……
  • 先发 z 的音,而后,把舌尖往前推一点点就接触到了牙齿,然后以与 z 同样的方式发音,就能听到 ð;然后分别说两个词 zed zed 和 that ðæt……

3.2.6.3. 常见拼写

θ

  • th
    • think θɪŋk
    • bath bæθ
    • wealth welθ

ð

  • th
    • this ðɪs
    • then ðen
    • with wɪð

File: 1000-hours/sounds-of-american-english/3.2.7-ʃʒ.md

3.2.7. ʃ/ʒ

3.2.7.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
ʃ shore ʃɔːr ʃ shore ʃɔːr
ʒ vision ˈvɪʒ.ən ʒ vision ˈvɪʒ.ən

3.2.7.2. 舌尖起始位置

再一次,关键在于发声时舌尖的起始位置,龈脊附近 —— 即,位置 ③。

ʃ 和 ʒ 都是舌尖起始位置接近但没有接触龈脊(位置 ③)。

ʃ 对很多人来说也许难度并不大,因为 ʃ 的舌尖起始位置其实和汉语拼音的 [sh] 是一样的。

然而,ʒ 却可能非常难 —— 虽然它其实只不过是 ʃ 这个清辅音的浊辅音版本。舌尖起始位置相同,清辅音 ʃ 没有声带振动,而浊辅音 ʒ 有声带振动。

除了英语之外,大多语言里没有 ʒ 这个辅音。即便是在英语里,含有这个辅音的词汇也很少,常见的不过几十个而已。中国学生会不由自主地用 dʒ 替代 ʒ —— 因为 dʒ 是一个他们熟悉的辅音,相当于中文拼音中的 zh。ʒ 和 dʒ 的区别在于,ʒ 发声时舌尖贴近但没有接触到龈脊;而 dʒ 发声时起始的舌尖贴在龈脊(与 ʒ 同一个位置 ③)。

少数人知道 dʒ 替代 ʒ 不是一回事,但,由于舌尖起始位置并不准确,所以他们说出来的 ʒ 听起来更接近 r —— 舌尖缩得过头了 —— r ④ 发声时舌尖起始位置相对于 ʒ ③ 要更靠后一点。

3.2.7.3. 常见拼写

ʃ

  • s
    • sugar ˈʃʊɡ.ɚ
    • sure ʃʊr
  • ch
    • chef ʃef
    • machine məˈʃiːn
  • sh
    • finish ˈfɪn.ɪʃ
    • sheep ʃiːp
  • ss
    • discussion dɪˈskʌʃ.ən
    • mission ˈmɪʃ.ən
    • pressure ˈpreʃ.ɚ

ʒ

  • g
    • genre ˈʒɑːn.rə
    • garage ɡəˈrɑːʒ
  • s
    • measure ˈmeʒ.ɚ
    • leisure ˈliː.ʒɚ
    • decision dɪˈsɪʒ.ən
    • fusion ˈfjuː.ʒən
  • z
    • azure ˈæʒ.ɚ

File: 1000-hours/sounds-of-american-english/3.2.8-tʃdʒ.md

3.2.8. tʃ/dʒ

3.2.8.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
tʃ check tʃek tʃ check tʃek
dʒ jet dʒet dʒ jet dʒet

3.2.8.2. 舌尖起始位置

ʃ/ʒ 发声时舌尖贴近但没有接触到龈脊,tʃ/dʒ 则需要舌尖贴到龈脊(位置 ③),和 t/d 一样;但,无论是 ʃ/ʒ 还是 tʃ/dʒ 发声时舌背后部都抬得较高,舌的两侧抵到后牙。

为了让舌尖适应那个部位,不妨反复练习:

  • ʃ... tʃ... ʃ... tʃ... ʃ... tʃ... ʃ... tʃ... ʃ... tʃ...
  • ʒ... dʒ... ʒ... dʒ... ʒ... dʒ... ʒ... dʒ... ʒ... dʒ...
  • ʃ... ʒ... ʃ... ʒ... ʃ... ʒ... ʃ... ʒ... ʃ... ʒ...
  • tʃ... dʒ... tʃ... dʒ... tʃ... dʒ... tʃ... dʒ... tʃ... dʒ...

3.2.8.3. 常见拼写

ʧ

  • ch
    • charm tʃɑːrm
    • church tʃɝːtʃ
    • teach tiːtʃ
  • tch
    • match mætʃ
    • pitch pɪtʃ
    • watch wɑːtʃ
  • t (+ure)
    • creature ˈkriː.tʃɚ
    • future ˈfjuː.tʃɚ
    • nature ˈneɪ.tʃɚ

dʒ

  • d
    • soldier ˈsoʊl.dʒɚ
    • procedure prəˈsiː.dʒɚ
  • g
    • gentle ˈdʒen.t̬əl
    • giant ˈdʒaɪ.ənt
    • rage reɪdʒ
  • dg
    • badge bædʒ
    • bridge brɪdʒ
    • judge dʒʌdʒ
  • j
    • job dʒɑːb
    • joy dʒɔɪ
    • jump dʒʌmp

File: 1000-hours/sounds-of-american-english/3.2.9-trdr.md

3.2.9. tr/dr

不知道为什么《剑桥英语发声词典》的 Pronunciation symbols 中并没有收录 tr 和 dr。

3.2.9.1. 示例

British American
D.J. 例词(Example) IPA 例词(Example)
tr tree triː tr tree triː
dr dry draɪ dr dry draɪ

3.2.9.2. 舌尖起始位置

虽然发声时舌尖起始位置相同,但,tr/dr 与 tʃ/dʒ 不一样的地方在于,tr/dr 在发声之前嘴唇要有个缩小成圆形的动作,所以它们开头的音节,总是听起来夹带着一个 ʷ,tree triː 听起来是 tʃʷiː,dry draɪ 听起来是 dʒʷaɪ。

很多地区的人基于自身母语的习惯,会把 tr 和 dr 分开着连续读出的。比如,tree,印度人可能会把它读成 tɤ.riː,其中的 t 干脆读成 d,并且 r 还会用齿龈颤音;再比如,driver,可能会被俄罗斯人读成 dɤ.raɪvə,其中的 r 同样会用齿龈颤音。

其实,他们只要把 tr 理解为 tʃ + r,把 dr 理解为 dʒ + r,就好办了,挺简单的。

3.2.9.3. 常见拼写

tr

  • tr
    • track træk
    • tree triː
    • trick trɪk

dr

  • dr
    • drive draɪv
    • dream driːm
    • drink drɪŋk

File: 1000-hours/sounds-of-american-english/3.3-variations.md

3.3. 变体

虽然几乎每个权威词典都声称自己采用的是 “国际音标”(IPA),可实际上,每个词典的音标标注都各不相同,都是国际音标的一个自定义子集。

事实上,音标本身就是个不完美的标注系统,无论是英文的音标,还是中文的拼音(或者注音),抑或是其他语言的类似系统,都只是 “尽了全力却终究在一些细节上无法做好” 的那么一种存在 —— 哪怕是历经多年增补修改的国际音标。

幸亏,各种词典的音标不同主要体现在元音上 —— 辅音的标注大抵上都是一样的 —— 所以,掌握了某一个音标体系之后,稍微再挣扎一下,就可以看懂各种词典的音标。

元音音标 例词 剑桥 牛津 朗文 韦氏 柯林斯
ʌ but bʌt bət bʌt bət bʌt
ɚ father ˈfɑː.ðɚ ˈfɑðər ˈfɑːðər ˈfä-thər fɑːðəʳ
ɝː worker ˈwɝː.kɚ ˈwəːrkər ˈwɜːrkər ˈwər-kər wɜːʳkəʳ
ɒ/ɑː dog dɑːɡ dɔɡ dɒːɡ ˈdäg dɔːg
e bed bed bɛd bed bed bed
er air er ɛr er er eəʳ
ɪr ear ɪr ɪr ɪr ir ɪəʳ
ʊr pure pjʊr pjʊr pjʊr ˈpyu̇r pjʊəʳ
oʊ nose noʊz noʊz noʊz ˈnōz noʊz

稍加整理,就会发现,各个词典中最常不同的,变体最多的,其实只有 ə:

  • 短元音版本 ə[^1],在某些词典中,可以用来表示 ʌ —— 比如,牛津词典或韦氏词典里的 but bət;
  • 短元音儿化音版本 ɚ, 可能被写作 ər 或者 əʳ;进而,在柯林斯词典里,ɪr 被写作 ɪəʳ,er 被写作 eəʳ, ʊr 被写作 ʊəʳ……
  • 长元音 ɝː,可能被写作 əːr,ɜːr,或者 ɜːʳ。

另外,e 有可能被写成 ɛ,比如牛津词典。

而 ɒ/ɑː 最混乱,各有各的写法。比如 dog:

元音音标 例词 剑桥 牛津 朗文 韦氏 柯林斯
ɒ/ɑː dog dɑːɡ dɔɡ dɒːɡ ˈdäg dɔːg

韦氏词典的音标相对最特殊,可能需要专门适应[^2]。比如,双元音使用上横标表示:

剑桥 aɪ eɪ oʊ
韦氏 ɪ̅ a̅ o̅

韦氏词典的辅音也相对比较独特。比如,它用 th 标注 θ ,用带下划线的 th 标注 ð…… 初学者可以完全不必理会韦氏词典的音标。

其实,快速掌握音标的最简单直接有效的方法就是勤查词典 —— 看的次数越多,看的密度越高,就自然而然地熟悉了…… 不过,在一段时间里,最好只查一个特定的词典。

另外,在附录 8.2. 获取 CEPD 音标中,我介绍了一种可以在 macOS 上快速查询并获得《剑桥英语发声词典》中的音标和发音的方法。

事实上,我们还会遇到很多其它的变体。比如,在 Enjoy App 中,在底层对音频文件进行语音识别的引擎,用的是 espeak,它就有一套自己的音标体系;而语音评估采用的引擎是微软的 Azure,它也有自己的一套音标体系…… 而真正的解决方案其实是 “态度上的选择” —— 不怕麻烦。说实话,除此之外,根本就没有其它的决方案。

[^1]: 比较罕见的情况下,短元音 ə 会被写作 ɜ。
[^2]: https://merriam-webster.com/assets/mw/static/pdf/help/guide-to-pronunciation.pdf


File: 1000-hours/sounds-of-american-english/4-natural-speech.md

[Binary file]


File: 1000-hours/sounds-of-american-english/4.1-syllables.md

4.1. 音节

这是所有语言共同的特性:

  • 自然语音都以音节为最基础单位。
  • 音节以元音为核心。
  • 每个音节有且只有一个元音。

元音之于音节,正如细胞核之于细胞。

4.1.1. 音节构成

英文的词汇由至少一个音节构成。英文中出现频率最高的几个词,a/an, the, of, to, for... 等等都是单音节词汇。有的词汇可能很长,由很多音节构成。在英文词典中能找到的最长词汇总计由 19 个音节,45 个字母构成:

Pneumonoultramicroscopicsilicovolcanoconiosis

ˌnumənəʊˌəltrəˌmaɪkrəˌskɑpɪkˌsɪləkəʊvɑlˌkeɪnəʊˌkəʊniˈəʊsəs

一个音节中,有且只有一个元音(被称为 nucleus),也是该音节的韵(rhyme)。音节以元音为核心,前后可有多达三个辅音构成的组合。

英文的音节构成大抵上有以下几种形式(其中,c 代表辅音,v 代表元音):

  • v - awe ɑː
  • vc - add æd
  • vcc - east iːst
  • vccc - axed ækst
  • cv - the ðə
  • cvc - dog dɑːɡ
  • cvcc - task tæsk
  • cvccc - text tekst
  • ccv - flee fliː
  • ccvc - speed spiːd
  • ccvcc - thrust θrʌst
  • ccvccc - flexed flekst
  • cccv - spray spreɪ
  • cccvc - spring sprɪŋ
  • cccvcc - splashed splæʃt
  • cccvccc - scrounged skraʊndʒd

4.1.2. “音节” ⭤ “字”

在学习和练习英文的时候,亚洲人特别需要注意的是,要从心理上纠正一个对应关系,“英文音节 ⭤ 字”,而不是 “英文单词 ⭤ 字” —— 亚洲文字,无论是中文、日文还是韩文,所有的字都是单音节构成,但,英文的绝大多数单词由一个以上的音节构成。

individual ˌɪndəˈvɪdʒuəl 这一个单词,总计 5 个音节,所以,说出这个英文单词相当于 5 个汉字的长度…… 对比以下句子的音节数量:

  • 人们看法各不相同。[Rénmen kànfǎ gè bù xiāngtóng] —— 总计 8 个字,8 个音节。
  • People's opinions vary from individual to individual. ˈpiːpəlz əˈpɪnjənz ˈveri frɑːm ˌɪndəˈvɪdʒuəl tuː ˌɪndəˈvɪdʒuəl —— 总计 7 个单词,19 个音节。

这个对应关系的纠正很重要,因为这个对应关系在最底层影响大脑理解自然语流的方式。


File: 1000-hours/sounds-of-american-english/4.2-words.md

4.2. 单词

一个单词(word)至少由一个音节(syllable)构成。

4.2.1. 重音、次重音、非重音、弱音

重点在于,英文的音节有重音、次重音、非重音的区别,这一点和亚洲语言明显不同。

如果一个单词只有一个音节,单独读出的时候,就当作是重音(stress)音节读出。而一个多音节词汇中有且只有一个重音音节,但,可能还有另外一些音节是次重音(secondary stress),在音标中使用 ˌ 作为标记。比如,serendipity ˌserənˈdɪpət̬i,有一个重音和一个次重音。

而 Pneumonoultramicroscopicsilicovolcanoconiosis 总计有 19 个音节,其中 7 个是次重音,唯一的重音是 oʊ……

形象地讲,5 个不分轻重的汉字(或者日文字、韩文字)排在一起大概是这样的:

但,由 5 个各自轻重不同的音节构成的英文词汇 individual ˌɪndəˈvɪdʒuəl 相应是这样的:

非重音 音节中,还有弱音,即被弱化成 ə 的央元音(schwa)音节。

细细体会 individual ˌɪndəˈvɪdʒuəl 这个词,如果每个音节都清晰地用同样的强度读出来的话,应该是 ɪn-dɪ-vɪ-dʒju-əl…… 这里面,第 2 个音节 dɪ里的元音 ɪ 被弱化为 ə;另外,第 4 个音节 dʒu 里的元音 ju 也被弱化成了 ə,但保留了 u 的音色;而处于音节末尾的 l,之前自带着轻微的 ə,于是连成了很轻的 ʷᵊl……

有些时候,同样的词汇,因重音位置不同会产生词义或词性的变化。比如,address, ˈædres 是名词,“地址”;əˈdres 是动词,“强调”;再比如,record,可以读作 ˈrekɚd 或 rɪˈkɔːrd,前者是名词,后者是动词。

类似的还有很多,比如以下常见词汇[^1]:

Noun Verb
'conduct ˈkɑːndʌkt con'duct kənˈdʌkt
'conflict ˈkɑːnflɪkt con'flict kənˈflɪkt
'convert ˈkɑːnvɝːt con'vert kənˈvɝːt
'digest ˈdaɪdʒest di'gest daɪˈdʒest
'permit ˈpɝːmɪt per'mit pɚˈmɪt
'rebel ˈrebəl re'bel rɪˈbel
'subject ˈsʌbdʒekt sub'ject səbˈdʒekt

不妨逐个练习一下以下常用多音节词汇,注意重音音节、次重音音节,以及非重音音节和弱音音节。

[!Note]
在练习跟读每个单词的之前,请先数一下该单词到底有多少个音节?然后再揣摩一下整个单词读出来的长度。

  • accommodate əˈkɑːmədeɪt
  • anniversary ˌænəˈvɝːsɚi
  • anticipate ænˈtɪsəpeɪt
  • appreciate əˈpriːʃieɪt
  • beautiful ˈbjuːt̬əfəl
  • celebration ˌseləˈbreɪʃən
  • characteristic ˌkerəktəˈrɪstɪk
  • communication kəˌmjuːnəˈkeɪʃən
  • determination dɪˌtɝːmɪˈneɪʃən
  • discovery dɪˈskʌvɚi
  • encouragement ɪnˈkɝːɪdʒmənt
  • entrepreneur ˌɑːntrəprəˈnɝː
  • environment ɪnˈvaɪrənmənt
  • exaggerate ɪɡˈzædʒəreɪt
  • examination ɪɡˌzæməˈneɪʃən
  • explanation ˌekspləˈneɪʃən
  • fascinating ˈfæsəneɪtɪŋ
  • government ˈɡʌvɚnmənt
  • hospitality ˌhɑːspɪˈtælət̬i
  • imagination ɪˌmædʒəˈneɪʃən
  • impossible ɪmˈpɑːsəbəl
  • incredible ɪnˈkredəbəl
  • independent ˌɪndɪˈpendənt
  • information ˌɪnfɚˈmeɪʃən
  • inspiration ˌɪnspəˈreɪʃən
  • interesting ˈɪntrɪstɪŋ
  • international ˌɪnt̬ɚˈnæʃənəl
  • knowledgeable ˈnɑːlɪdʒəbəl
  • opportunity ˌɑːpɚˈtuːnət̬i
  • personality ˌpɝːsənˈælət̬i
  • photography fəˈtɑːɡrəfi
  • professional prəˈfeʃənəl
  • recognition ˌrekəɡˈnɪʃən
  • rehabilitation ˌriːhəˌbɪləˈteɪʃən
  • relationship rɪˈleɪʃənʃɪp
  • responsibility rɪˌspɑːnsəˈbɪlət̬i
  • revolutionary ˌrevəˈluːʃəneri
  • satisfaction ˌsæt̬ɪsˈfækʃən
  • spectacular spekˈtækjəlɚ
  • temperature ˈtempɚətʃɚ
  • transportation ˌtrænspɚˈteɪʃən
  • unbelievable ˌʌnbɪˈliːvəbəl
  • understand ˌʌndɚˈstænd
  • understanding ˌʌndɚˈstændɪŋ
  • unforgettable ˌʌnfɚˈɡet̬əbəl
  • university ˌjuːnəˈvɝːsət̬i
  • vegetarian ˌvedʒəˈteriən
  • vocabulary voʊˈkæbjəleri
  • vulnerable ˈvʌlnɚəbəl
  • wonderfully ˈwʌndɚfəli

4.2.2. 强读与弱读

单词的读音实际上都有两种形式:

  • 强读式(accented form)
  • 弱读式(weak form)

字典里的音标标注或者真人朗读示范,都是强读式。任何单词,在单独说出的时候都是强读式。但,在自然语流之中,不是每个单词都是强读式,只有少数是强读式,更多是弱读式。

比如 our 这个单词,词典里标注的当然是 ˈaʊ.ɚ —— 这是强读式,每一个单词的 “默认形式”。然而,在实际的自然语流中,你更多听到的并不是这个饱满的三元音 ˈaʊ.ɚ 而是它的弱读式,一个很轻很短的 ɑr:

It's our pleasure.ˈaʊ.ɚ

关于强读式与弱读式的区别,得等到音节、单词、意群、连接全都讲清楚之后,到了句子那个章节再深入讲解。

4.2.3. 词典读音

现在,你已经知道了,所有的词典,都没有,也不可能标注单词的弱读形式 —— 可能是因为在自然语流中,弱读形式就不存在一个所谓的 “标准”。

除此之外,你还必须了解一个可能是所有学校里的老师都没有告诉过你的一个重要事实:

词典中的音标标注,或者真人发声示例,其实都只是 “完成度极高” 的 “半成品”。

首先,人类的自然语音,就是很难使用一个符号系统去完美地标注……

英文的例子一会儿再讲,现在先举一个中文的例子。你琢磨一下自己平日里是如何说 “不知道” 这三个字的?当然,我们可以用拼音分别标注这三个字 [bù zhī dào] —— 可你真的是这样三个字分开一字一顿地说的吗?你说出来的声音,只能用拼音凑合着标注成 [búr(i)dào] —— “不” 你可能读的不是四声,更像是速度很快的二声;“知” 你说得像 “日”,但速度很快,乃至于可能感觉只有一个声母 [r] 没带着韵母 [i];最后,三个字里,只有 “到” [dào] 这个字算是字正腔圆地说完了。****

更何况,音标本身也是个 “无法完美” 的符号系统。

比如,ə/əː 的儿化音,到底是用 ər/əːr 好呢?还是用 ɚ/ɝː 更好呢?大多数情况下看不出什么区别,但,就是有一些词会出现无论用哪种都不太合适的情况。

比如,literally 这个词。

  • 牛津词典的标注是: ˈlɪtərəli,而后,真人示例中,英音 听起来像 ˈlɪtrəli,美音像 ˈlɪtɚəli(其实还真就是这个标注才对)……
  • 剑桥词典的标注是:ˈlɪt̬.ɚ.ᵊl.i,而后,真人示例中,英音 听起来像 ˈlɪtrəli,美音像 ˈlɪt̬ərəli……

如果你要是误以为所有词典里的标注或者示范都是 “权威的”、“标准的”,那么,没比较过,没深入探究倒也罢了,只要稍微认真一点,就得掉入 “无所适从” 的尴尬境地。

这个词,本身就有好几种不太一样的读法。针对其中的任何一种读法,想要用音标完美标注都感觉相当费劲,甚至勉为其难。

[!Note]
说实话,这个词真的不太容易读好,Instagram 上就有个人演示过自己 literally 这个单词死活读不明白的尴尬……

  • 当然,作为 ESL 练习者,对策也很简单,反正自己选择一种固定下来就是了。比如,我就选择了剑桥英语发声词典的 ˈlɪt̬.ɚ.ᵊl.i,不仅如此,而后还选择了用舌背后缩的方式读 ɚ 这个音节。甚至,我还专门买了 The Phonetics 3D[^2],去仔细观看 literally 这个词发声时的舌头动作:

又比如,另外一个相当常用的单词,temperature —— 我曾经误以为它读作 ˌtem.pə.ˈreɪ.tʃɚ —— 它实际读音的音标标注是 ˈtem.pɚ.ə.tʃɚ,结果呢,在日常生活中,你更常听到的是 ˈtem.pə.tʃɚ,或者是 ˈtem.pɤtʃɚ,甚至干脆是 ˈtem.ptʃɚ

再举一个更常用的词作为例子,important ɪmˈpɔːr.tənt,你可能无论如何都想不到,这个由 3 个音节构成的单词,你可能有 3 处细节需要注意,但,竟然从来没意识到……

  • 第一个是最普遍的,很多人不分元音长短,所以会说成 ɪmˈpɔ.tənt 或者 ɪmˈpɔr.tənt;
  • 第二个细节是,这个词的第一个 t 经常会被说成喉塞音 ʔ,所以,你很多时候听到的其实是 ɪmˈpɔːr.ʔənt;
  • 第三个细节是,这个词的最后一个 t 其实是 “可选 ᵗ”(即,非重读音节末尾 n 之后的 t)—— ɪmˈpɔːr.ʔənᵗ —— 那个 ᵗ 在自然语流中经常并不存在,比如,当你说 It's a very important aspect. 的时候,与后面的 æ 连起来读的(示例语音中并未连读),更可能是 n 而不是 t。

我们其实已经用了一些英文词典里的音标中并不存在的符号才能把一些细节讲清楚,比如,阻塞音符号 ◌̚,比如,比央元音更弱的一个音, ɤ,再比如喉塞音 ʔ…… 可即便如此,英文有那么多的单词(几十万个),有至少 7,000 个左右构成独特的音节,于是,无论如何都不大可能用一个并不完美的音标系统完美地标注任何自然语音。

[^1]: Sound files in this list come from CEPD online edition.
[^2]: literally 在该软件里的音标标注为 ˈlɪtɚːəli —— 虽然和《剑桥英语发声词典》略有不同,但我们依然看得懂……


File: 1000-hours/sounds-of-american-english/4.3-grouping.md

[Binary file]


File: 1000-hours/sounds-of-american-english/4.4-linking.md

4.4. 连接

一个意群内可能有若干个单词,而每个单词都由至少一个音节构成 —— 于是,一连串的音节之间,可能会构成单独朗读时不存在的连接。

相邻的两个词之间,可能产生的连接通常有以下三种:

  1. 辅音 + 元音
  2. 辅音 + 辅音
  3. 元音 + 元音

4.4.1 辅音 + 元音(Consonant + Vowel)

在词汇内部,“辅音 + 元音” 当然可以构成一个音节;在同一个意群(thought group)中,如果以辅音结尾的词汇遇到以元音开头的词汇的话,那么前一个词末尾的辅音和后一个词开头的元音很可能会连起来读,听起来构成一个音节,这种方式叫做连读。

比如在 People's opinions vary from individual to individual. 在这句话中,People's 末尾的 z 和 opinions 开头的 ə 会连在一起,piː·pəl·zə·ˈpɪ·njənz —— 感觉上是在读一整个由 5 个音节构成的词汇一样……

这类连读,其实无需刻意,只要做到前面一个词末尾的辅音发声器官动作完整,而后能够熟练且又清楚地说出下一个元音开头的词汇,语音就会自然而然连接起来。

这类连读中有相当难度乃至于必须刻意练习的其实只有两种,t 和 l 构成的连读。

之前提到过,在美式英语里,t 有个特殊的现象,它夹在两个元音之间的时候会被浊化,被读成弹舌音,用 t̬ 表示,听起来接近 d…… 比如,在 city ˈsɪt̬i 这个词汇里, t 就夹在两个元音之间,所以读成 t̬。

在自然语流里,同一个意群中,经常会出现以 t 结尾的词汇后面跟着一个以元音开头的词汇,并且,t 的前面是元音的概率也很高,所以,词汇之间出现 t 的浊化弹舌音 t̬ 的情况非常普遍。比如,Get it done. ɡet̬ ɪt dʌn

l 构成的连读,对绝大多数人来说,难点在于,如果前一个单词末尾的 l 舌尖动作不够完整的话(即,结束的时候舌尖没有贴到龈脊)那么,l 这个弹舌音就发不出来,无法与后面的元音连上…… 尤其是在没有纠正掉用嘴唇动作替代舌尖动作的错误(乃至于有 ʊ 的音色)的情况下。

请仔细听一遍以下的录音,注意所有以 l 作为末尾的音节:

Whether the goal of an insurgency has been to establish the Christian religion in the days of the Roman Empire, to create an interstate commerce commission in nineteenth-century America, or to promote civil rights for minorities in the twentieth century, what a successful insurgency does in institutional or process terms is to change the incentives and constraints facing others, as well as the incentives and constraints facing themselves and their successors.[^1]

在以上这段录音中,goal‿of, successful‿insurgency, as well‿as, 都有前一个单词末尾的 l 与后一个单词开头的元音之间轻微的连读。但,institutional or 之间却没有 —— 因为这两个词汇实际上分别属于前后不同的意群。

初学者容易矫枉过正,想把一切自己遇到的词汇间 “辅音 + 元音” 的组合连起来读…… 请注意,是很可能连起来读,但并不一定。首先,这多少与个人讲话的习惯有关。更为重要的是,讲话的时候要划分意群,意群之间要有暂停(pause)—— 前一个意群末尾的辅音和下一个意群开头的元音,不应该连读。

并且,即便是在同一个意群里,也不能时时刻刻连读,有时盲目连读会出现歧义。

比如在这句话之中:

  • She will cherish those memories and ever hold them close to her heart.

如果 and ever,非要连起来读,前面的 and 可能被弱读作 æn, ən,而后要是非要与后面的 ˈev.ɚ 连起来,就可能被听成 ə.nˈev.ɚ(and never)—— 那岂不是可能会被理解成相反的意思?

[!Note]

目前(2024.03) OpenAI 的 TTS 引擎生成的语音中,l + vowels 的组合总是没有连读效果 —— 也许将来的版本会改进?

4.4.2. 辅音 + 辅音(Consonant + Consonant)

“辅音 + 辅音” 的组合需要注意的地方相对较多。

4.4.2.1 省音(elision)

“辅音 + 辅音” 的组合,常常会造成前一个辅音虽然发声器官(articulator)动作完整但并不发声的情况,于是会出现一个既 “听不到” 也 “看不见” 的停顿(stop),之前举过单词内存在这种情况的例子,hotdog ˈhɑːtdɑːɡ 和 network ˈnetwɝːk,再比如,hard-nosed hɑːrd-noʊzd, partner ˈpɑːrtnɚ……

有人把这种现象叫做 省音(elision);但,这种说法容易产生误导,因为音的确是省了,但,动作却没省,不仅没有省,动作还很完整。

在意群中,更是经常出现前一个词汇末尾是辅音,后一个词汇开头也是辅音的情况 —— 同样会出现省音。

4.4.2.2. 叠音(geminates)

上一个音节末尾的辅音和下一个音节开头的辅音相同的时候,这一对相同的辅音被称作叠音(geminates)。在连贯的自然语音中,这两个辅音就只发声一次 —— 但听起来的时候,有可能感受到前一个辅音存在造成细微停顿。它从机制上来看,其实和省音一样。其实哪怕相邻的两个辅音相似的时候,也会发生同样的现象。

比如,at that time, 不是 æt ðæt taɪm,而是 æ·ðæ·t̬aɪm —— 第一个 t 由于后面跟着一个辅音,于是产生了省音,听不到了,但,该有的停顿却依然在,在这里我们用 · 代表那个停顿 ;而后,第二个 t 与第三个 t 是叠音,这两个 t 只发声一次。

上下居中的圆点 · 是我们用来标记这种因为停顿(stop)的符号。(注意,不是英文句号 . —— 那是用来标记音节边界的符号。)

又比如,a bad day, 不是 ə bæd deɪ,而是 ə bæ·deɪ。 再比如,with this, 不是 wɪθ ðɪs,而是 wɪ·ðɪs。

4.4.2.3. 同化(assimilation)

同化(assimilation)主要有两种情况:

  • t + j = tʃ
  • d + j = dʒ

最常见的比如,Don't you? doʊn tʃju? Would you? wʊ dʒju? 这里的关键在于,t, d 发声时起始的舌尖位置如果放对了(3.2.2),它与后面的 ju 连起来的发声就只能如此。

同化主要发生在 j 这个音上。除了已经讲过的 j 前面遇到 t 和 d 时会产生同化之外,

  • s + j = ʃ
  • z + j = ʒ

比如,s+j 可能会被读成 ʃ,z+j 可能会被读成 ʒ。再比如,Miss you so much. mɪ ʃu səʊ mʌʧ.It was your job. ɪt wɒ ʒʊr ʤɒb.

另外一个细节是,k/g 之前的 n,可能会被同化为 ŋ:

  • ten cups, ten kʌps → teŋ kʌps
  • increase, ˌɪnˈkris → ˌɪŋˈkris
  • brown gate, braʊn geɪt → braʊŋ geɪt

[!Note]

请注意,同化都是可能,并非一定,并非所有英文母语使用者都如此发音。并非所有人都会使用这种同化的发音。比如,Don't you? doʊnt̥ ju? Would you? wʊd̥ ju?

4.4.2.4. 击穿(dropping)

“辅音 + 辅音” 的组合中,如果第二个辅音是 h 的话,它常常被击穿(dropping),因为 h 原本就是很轻的音,发音时声带并不震动,所以总是自然而然地被前后发音相对更为响亮的声音所掩盖。

比如,Was he hurt? 三个单词分开读,应该是 wɒz hi həːt 在连贯的语音中,会被读成 wɒzi həːt —— 听不到 h,它被击穿了。

很多美国人在 t 这个音上还有另外一个特殊的习惯,t 跟在 n 之后的时候,美国人说话的方式会让我们听不到那个 t,也就是说,t 也可能被击穿。比如,他们说 interview 的时候你听到的可能是 ˈɪnəˌvju,没有 t —— 也就是说,那其实是一个可选音 ᵗ(3.2.2.3.3)。

另外,ð 也可能被击穿,基本只发生在 them 这个常用词上。比如,let them let ðəm, 变成了 let-əm,又由于 ð 被击穿了之后,t 等于被夹在了两个元音之间,于是会变成浊化的弹舌音 t̬,于是,说出来的或者听到的是 let̬əm…… 所以,在快速的自然语流中 let him 和 let them 实际上几乎没有区别,需要通过上下文确定究竟是 him 还是 them。

4.4.2.5 其它(others)

值得一提的是,m/n + f/v 的情况。词汇之内我们看过 comfort ˈkʌmfɚt 和 conversation ˌkɑːnvɚˈseɪʃən 的例子(3.2.11.3)。这种情况在意群之内也经常会遇到,比如,stem from, 只能读成 sten frəm……

4.4.3. 元音 + 元音(Vowel + Vowel)

“元音 + 元音” 的组合之中,会出现加音(intrusion)。

前一个元音以 ɪ/i/iː 结尾,会出现加音 ʲ:

  • I am - ˈaɪ ˈæm ⭢ ˈaɪʲæm
  • He is - ˈhiː ˈɪz ⭢ ˈhiːʲɪz
  • She is - ˈʃiː ˈɪz ⭢ ˈʃiːʲɪz
  • They are - ˈðeɪ ˈɑːr ⭢ ˈðeɪʲɑːr

注意:一些以 i 结尾的动词,使用进行时态的时候,末尾会加上 ing,即,ɪŋ。比如,study ˈstʌdi 的现在分词形式是 studying ˈstʌdi.ɪŋ —— 这里会出现加音 ʲ,即最后一个音节变成 jɪŋ,相当于 ˈstʌdi.ʲɪŋ —— 虽然,studying 在词典里标注的只能是 ˈstʌdi.ɪŋ。

再比如:

  • applying - əˈplaɪ.ʲɪŋ
  • carrying - ˈker.i.ʲɪŋ
  • crying - ˈkraɪ.ʲɪŋ
  • denying - dɪˈnaɪ.ʲɪŋ
  • qualifying - ˈkwɑː.lə.faɪ.ʲɪŋ
  • replying - rɪˈplaɪ.ʲɪŋ
  • satisfying - ˈsæt̬.ɪs.faɪ.ʲɪŋ
  • specifying - ˈspes.ə.faɪ.ʲɪŋ
  • spying - spaɪ.ʲɪŋ

前一个音节以 ʊ 结尾,比如 ʊ/uː/aʊ/oʊ,会出现加音 ʷ:

  • Go away - ˈɡoʊ əˈweɪ ⭢ ˈɡoʊʷəˈweɪ
  • Do all - ˈduː ˈɔːl ⭢ ˈduːʷɔːl
  • Do it - ˈduː ˈɪt ⭢ ˈduːʷɪt
  • Throw it - ˈθroʊ ˈɪt ⭢ ˈθroʊʷɪt

[^1]: This audio clip is extracted from the Audible edition of Knowledge and Decisions by Thomas Sowell.


File: 1000-hours/sounds-of-american-english/4.5-sentences.md

[Binary file]


File: 1000-hours/sounds-of-american-english/5-above-ground.md

5. 基础之上

语音是基础的基础,在此之上,路漫漫其修远。

5.1. 流利

学习另外一种语言,总是要处理很多与母语不一样的细节。

凡是和母语发声方式不一样的地方,都是语音塑造的重点。

在语音中,最重要且最普遍被忽视的差异是:

英文的音节在绝大多数情况下读出来都比亚洲语言的字要长许多……

首先,英文的元音有长短之分,除了 6 个基础元音 ʌ、e、ə、ɪ、ʊ、ɒ 是短元音之外,剩下的十几个都是相对更长的元音;而亚洲语言的元音都是等长的。

除此之外,在英文中,当一个短元音处于重音音节的时候,会出现因强调而发生的短元音变长的情况。比如,你可以试着说一下 This is a big city! —— 为了强调 big,你会不由自主地将它读成长长的 biːg,而不是 bɪg,如果强调 city,它的第一个 sɪ 也会稍微变长一点点(你可以把 s 拉长)……

而英文的音节构成也相对更为复杂,元音前有可能是两个辅音。亚洲语言的音节(字)几乎没有两个辅音作为开头的情况,在英文中这种情况却非常普遍。亚洲语言的音节同样没有两三个辅音作为结尾并且还要发声清晰的情况,在英文中这种情况同样非常普遍。每个辅音都要发声清晰的话,就会占用一定的时长。比如,flexed, flekst,虽然整体上只是一个音节(ccvccc 的结构),可即便这个音节中的元音 e 是短元音,整体发声时它也比任何一个亚洲语言中的 “字”(同样是一个音节)都长。

平均来看,英文的音节中辅音数量可能是亚洲语言的两三倍以上 —— 这造成的结果就是,说英文的时候,舌头比说其他语言的时候相对要忙太多…… 并且,因此英文单个音节的发声时长也相对更长 —— 不是长一点点,而是长很多。

音节上的长短差异会造成语音在韵律和节奏上的巨大差异。

若是忽视了这一点,那么,在节奏韵律上的巨大差异会形成一个无法逾越的障碍。很多人压根就不知道这里有一个巨大的障碍,于是,从来就没有可能跨越它 —— 请问,你如何跨越一个你不知其存在的障碍呢?

还有另外一个比较隐蔽的却也同样重要的差异:

英语的自然语音中有大量的塞音存在于音节之间。这些音我们虽然听不到,也看不到发声器官的动作,但这些动作却是完整完成的 —— 也就是说,它们也是占用时长的。

还没有完…… 记得吗?两个元音直接连在一起的时候,还有可能存在加音(ʲ/ʷ),以及很常见的 l 之前的加音 ᵊ……

所有这些细节加在一起,造成了一个格外普遍的现象:

亚洲人讲英文的时候速度都过快……

常常把长元音和双元音,以及美式英语特有的半长元音读成更短的版本(尤其是 æ),很多辅音没有清楚地发音,很多实际存在的微妙停顿(比如塞音)全都忽略,甚至可能在某些辅音之后插入了原本不存在的元音,但是,反过来常见的加音却实际上缺席……

整体结果就是,同样一句话,亚洲人总是能够做到更快、很快、甚至太快地讲完。可问题在于,从理解的角度来看,在英文母语使用者耳中,几乎所有的韵律和节奏全都是错的。用错误的韵律节奏,讲的速度越快,就越难以被理解。

还没有完……

另外一个影响初学者讲英文时语速不正常地快的原因,更微妙,来自于一种基于普遍误解的心理压力。在这一点上,全世界的人都一样,当人们听到自己听不懂的另外一种语言的时候,总是误以为对方说话速度很快。

可这就是因误解而生的幻觉。之所以幻觉对方语速快,是因为自己听不懂。听母语的时候,大脑甚至可以以句子为单位处理信息,可突然之间,要退回到音节级别,又因为那声音里充满了自己并不习惯甚至没听过的音素,不习惯的韵律和节奏,当然需要更多的精力…… 听不懂,当然记不住。于是,大脑更不够用,更是误以为对方说话太快。

其实,全世界的人在说话的时候,不管使用任何语言都一样,都会不由自主地划分意群,下意识地选择轻重,并且都会有意无意地适当停顿,不仅是在句子之间,句子之内也有。

可是,突然之间,只是因为听不懂、记不住,大脑就像一台同时运行了太多软件的电脑, CPU 过热,内存溢出,恨不得当场死机。于是,不知不觉之间产生了幻觉,就是觉得对方说话快,即便对方正在以再正常不过的语速讲话。

基于上面这个普遍误解的下一个误解,同样微妙,人们常常误以为语速够快就能构成讲得足够流利。其实,流利的构成与语速快慢几乎全无关系。是否流利更多是发音是否正确,措辞是否准确,句法和用法是否符合习惯,逻辑是否顺畅,等等等等 —— 以及,很多人可能并未意识到的另外一个很重要的东西,叫做节奏。

所以,刚开始的时候,要刻意放慢自己的语速。记住,流利不靠语速,起码不只靠语速。语速过快,容易出错,越快出错越多。再说,流利也不是一上来就需要追求的东西,速度更不是。

好莱坞动作明星阿诺德·施瓦辛格口音很重但表达清楚且流利 —— 这是怎么回事呢?一般来说,决定一个人讲话流利与否的因素,从听众角度出发,如果能够按照重要性排列的话,大抵应该如下:

  • 语意完整
  • 上下文足够丰富
  • 符合习惯
  • 逻辑清晰
  • 语法正确
  • 措辞准确
  • 发音
    • 节奏
      • 停顿
      • 轻重
      • 缓急
    • 韵律
      • 高低
      • 起伏
    • 音素
      • 元音
      • 辅音

即便是到了相对最不重要的音素层面,也有重要性上的先后顺序,元音比辅音更重要。然而,绝大多数人在整个练习过程中,在最不重要的层面上就被卡住了…… 越是重要的越没机会练习,越是重要的,越没能力去关注 —— 这才是失败的关键吧?

5.2. 情绪

学习语音的唯一有效方法只有模仿。在模仿的时候,最难模仿的,其实并不是我们已经讲解过的各种重点…… 还有一个可能无法模仿的,和另外一个其实可以模仿的。

可能无法模仿的是对方的音质,因为到最后,每个人的声音都不一样,声线、音域、音量都不一样…… 通常来说,除非是模仿能力特别强的人,才能做到发出和别人同样音质的声音 —— 虽然不是谁都做不到,但,这个要求多少的确有点过份……

然而,的确有确实可以模仿的 —— 情绪。紧张、兴奋、疲惫、失望、恐惧、悲伤、快乐、期待,等等等等。就算不能模仿得一模一样,终归能按照自己的方式去表现同样的情绪 —— 瞬间就能做到八九不离十。

用 AI 生成的真人语音,最大的问题在于,它目前还不能做到情绪饱满,它只是尽量做到了 “听起来像是真人说话”,虽然已经很好,但就是缺乏情绪表达 —— 它也的确没有什么真正的情绪……

各种惊悚片动作片都很精彩,很吸引人…… 可实际上它们真的不是最好的学习材料,因为这类影视内容的对话事实上非常枯燥,警匪片里最常重复的,只不过是 Freeze! Drop your gun! 要么就是 You have the right to remain silent... 战争片里最常重复的更加迷离,反反复复最多的都是 Get down! 或者 Go! Go! Go! —— 动作太多,语言就只能太少。至于情绪么,往往更多的只有愤怒或者悲伤。

这就是为什么生活情景剧和脱口秀常常是很好的学习材料的重要原因 —— 主要是情绪丰富且饱满。另外,纪录片往往都是很好的学习材料。它们的特点是,措辞简单明了,语速慢,吐字清晰,并且情绪饱满。情绪更加饱满的,是各种给青少年甚至婴幼儿看的动画片或者绘本讲解,情绪丰富饱满到夸张的地步……

如果觉得这些都太尴尬,还有个办法是不断学唱英文歌曲 —— 每个音节都带着不同的音高曲调,甚至有可能一个词就唱了满满一两个小节,容不得一丝的错误,真的是绝佳的练习场景。

语音的功用,如果说有 20% 是用来传递对事实的感受的话,那么,剩下的 80% 肯定并且只能用来传递情绪,不是吗?一直以来,大家在 “学外语” 的时候,都太理智了,不是吗?理智的确是一种很好的品质,但,有时候,它可能会成为不可逾越的障碍…… 真的很可惜!


File: 1000-hours/sounds-of-american-english/6-vocabulary.md

6. 词汇构建

千万不要天真地把 “背单词” 和 “学英语” 等同起来…… 构建词汇量,的确是一个重要的环节,但,它不仅不是全部,甚至不是最重要的环节。

另外一个关键在于,在构建词汇量的过程中,最重要的是 “文本与语音之间不可分割的紧密联系” —— 不知道为什么,觉得大多数人竟然觉得这最关键的东西根本无所谓…… 但,那些人早晚会因为他们的误解付出惨重的代价。


File: 1000-hours/sounds-of-american-english/6.1-effectiveness.md

6.1. 有效记忆单词

在第三章《音素详解》中,在每个小节,针对每个音素都罗列出了 “常见拼写” —— 这才是未来扩充词汇的时候,最有效的辅助记忆手段和工具。

英文的词汇构成,主要分为 “表音” 和 “表意” 两种。

mermaid
flowchart LR
spellings(拼写) <-.->|拆分| syllables(音节构成) <-.->|组合| sounds(发音)
spellings <--> sounds
spellings(拼写) <-.->|拆分| parts(含义组件) <-.->|组合| sounds(发音)

apple ˈæp.əl 就是一个表音构成的词汇,这是两个音节的词汇,app 对应着第一个音节 ˈæp,le 对应着第二个音节 əl。所以,记忆它的时候,不是一个字母一个字母地背,说,“a、p、p、l、e…… apple!”。而是,æ 对应着 a;p 的拼写是两个叠加的 pp,而后是 le 读作 əl —— 这样的拼写很常见,比如,double, impossible……

而 impossible ɪmˈpɑː.sə.bəl 这个词里,就有表意的构成,im- 是个常见词头(prefix),和 un- ir- 一样,表示否定的含义,possible 是 “可能的”,impossible 就是 “不可能的”。进而,possible ˈpɑː.sə.bəl 就可以把它完全当作只有表音构成的词汇,po 读作 ˈpɑː,或者反过来,ˈpɑː 写作 po,ssi ⭤ sə,ble ⭤ bəl…… 反正不应该是 “p、o、s、s、i、b、l、e…… possible!”…… 生硬地按顺序记住 7 个字母,显然不如 “只记三个音节” 来的容易 —— 这其中,需要多注意一下的,不过是 ss(double s)而已。

另外,常用词汇中其实有不少是 “组合词汇”(compound words),各个组成部分也都是 “表意” 的。比如 classroom ˈklæs.ruːm , doorbell ˈdɔːr.bel , handwriting ˈhændˌraɪ.t̬ɪŋ , sunshine ˈsʌn.ʃaɪn , upstairs ʌpˈsterz 等等。

词根词缀,尤其是那些来自于拉丁语的词根词缀,在词汇量没达到一定程度之前,实际用处不大 —— 但,到了一定地步,比如,词汇量超过 5,000 的时候,在这样扎实的基础上,稍微研究一下词根词缀,对快速且大量地做大词汇量是很有帮助的。

举个例子,ichthyosaur ˈɪk.θiə.sɔːr,这个一看就知道并非常用的词汇,其实很简单,先从表音构成去看,ˈɪk.θi.ə.sɔːr —— 剑桥词典把它划分成了 4 个音节…… 但感觉上,第二第三个音节可以合并,ˈɪk.θiə.sɔːr,ich ⭤ ˈɪk, thyo ⭤ θiə, saur ⭤ sɔːr…… 而从表意的角度去看呢?前半部 ichthyo- 的意思是 “与鱼有关的”…… 后半部 -saur 是什么意思呢?各种恐龙的 “龙” 都是 -saur 结尾,于是,这个词的意思是 “鱼龙”……

记忆词汇的最朴素最有效方法,就是把它的拼写、读音和意义联系起来 —— 这原本是文字本来的结构和意义。

mermaid
flowchart LR

sounds(读音)<--->meanings(意义)
meanings<--->spellings(拼写)
sounds<--->spellings

除此之外,其他的任何所谓的 “方法”,都不仅无效,甚至只有副作用,弊大于利。比如什么 “谐音记忆法” 或者 “趣味记忆法” 什么的,它们都违背大脑对语言文字的基本工作机制,根本不可能提高效率,只会增加不必要的负担 —— 虽然有时候觉竟然觉得有点意思……

人们失败的原因很简单,他们总想 “更省事儿一点”。坐在那里只用眼睛看,既不动口也不动手,也因此实际上更少动脑。只调用一个器官和同时调用多个器官是不一样的,前者好像更省事儿,可实际上由于脑力调用太少,导致的结果是 “效果几近于零”。

学外语的人十有八九失败。很多失败的人都曾经去问过老师,“老师,我背单词不记发音行不行?” “老师,我背单词不记拼写行不行?” 这种荒谬至极的问题问出来,并不是想要什么答案,只是想要一个 “偷懒认证”,给自己的偷懒找个背书…… 还别说,还真有老师说 “可以!” 因为真的有相当数量相当比例的老师,通过这种方法获得更多来自学生的好感,进而提高自己的收入……

刚开始的时候,记忆单词无论如何都是吃力的。这是一个真诚的忠告,谁不信谁吃亏,爱信不信:

千万不要尝试用任何手段去提速……

—— 因为事实上谁都不可能提速,无论什么手段都不可能提速…… 真正提速的方法只有一个,积累。

扩充词汇,是有加速度的过程 —— 可以越来越快…… 可是,在最初的时候,速度很低,加速度为零,所以总是感觉超级吃力。然而,词汇之间是有关联的,对大脑来说,一个生词与已有的词汇关联越多,越容易记住。也就是说,已有词汇量越多,新词可能与它们产生的关联越多,所以才越来越容易。当你的词汇量超过三五千的时候,你就会感觉很多生词几乎看一眼就记得住,无论是拼写还是读音还是其意义甚至其用法 —— 整个看似来是个复利曲线一样有越来越大的加速度的过程。

倒是有个窍门。直接背例句…… 对大脑来说,“多朗读几遍例句” 远比 “只把力气花在某一个单词或者词组上” 来得更为轻松。在语言方面就是这样,你做得越多,对大脑来说越轻松,反过来,你做得越少,所谓 “省事儿” 逐步形成的,对大脑来说只能是不可逾越的障碍。

进而,最靠谱的扩大词汇量方法:精读。找到自己真正感兴趣的书(小说类、非小说类各几本),遇到生词就查,逐一消灭 —— 每本书都要读若干遍(所以一定要选自己真迷恋的书)…… 读着读着,词汇量就大了,句法障碍就消失了,理解能力就提高了,阅读速度就飞快了…… 各种语言都是这样的。哪怕是我们的母语,我们对母语的掌控能力,也是这么练出来的 —— 学校里的语文课和语文老师,从来都帮不上什么忙…… 说点刻薄的话,这些语文老师啊,他们的唯一作用就是在考试里给绝大多数学生设置奇怪的障碍。


File: 1000-hours/sounds-of-american-english/6.2-polyphonic-spellings.md

6.2. 多音拼写

之前的章节里,都罗列了对应每个音素可能的拼写。有些拼写只对应一个读音,比如,h 就只对应着 h;但,有一些拼写可能对应着多个读音。以下是一个总结整理,需要经过反复对照而谙熟于心。

6.2.1. 元音拼写

  • "a": ɑː, æ, e, eɪ, ə
  • "ai": e, eɪ
  • "al": ɑː, æ, ɔː
  • "ar": ɑːr, ɚ
  • "au": ɑː, aʊ, ɔː
  • "e": e, ə, ɪ, iː
  • "ea": e, iː, eɪ
  • "ear": er, ɪr, ɝː
  • "er": ɚ, ɝː
  • "ew": uː, oʊ
  • "i": ɪ, aɪ, ə, j,
  • "ie": iː, e, aɪ
  • "o": ʌ, ɑː, ə, ɔː, uː, oʊ
  • "oo": ʌ, ʊ, uː
  • "oor": ʊr, ɔːr
  • "or": ɚ, ɝː, ɔːr
  • "ou": ʌ, ʊ, ə, aʊ
  • "ough": ɑː, oʊ
  • "our": aʊr, ʊr, ɔːr
  • "ow": aʊ, oʊ
  • "u": ʌ, ʊ, uː, ə
  • "ure": ɚ, ʊr

6.2.2. 辅音拼写

  • "c": s, k
  • "ch": ʃ, k, ʧ
  • "d": d, dʒ
  • "g": g, dʒ, ʒ
  • "j": j, dʒ
  • "s": s, z, ʃ, ʒ
  • "ss": s, ʃ
  • "th": ð, θ, t
  • "y": ɪ, aɪ, i, j
  • "z": z, ʒ

File: 1000-hours/sounds-of-american-english/6.3-compound-words.md

6.3. 常见组合词汇

  1. airplane ˈer.pleɪn
  2. airport ˈer.pɔːrt
  3. backyard ˌbækˈjɑːrd
  4. bedroom ˈbed.ruːm
  5. birthday ˈbɝːθ.deɪ
  6. blackboard ˈblæk.bɔːrd
  7. bookstore ˈbʊk.stɔːr
  8. brainstorm ˈbreɪn.stɔːrm
  9. breakfast ˈbrek.fəst
  10. classroom ˈklæs.ruːm
  11. cupcake ˈkʌp.keɪk
  12. daydream ˈdeɪ.driːm
  13. dishwasher ˈdɪʃˌwɑː.ʃɚ
  14. doorbell ˈdɔːr.bel
  15. downtown ˌdaʊnˈtaʊn
  16. earthquake ˈɝːθ.kweɪk
  17. everyday ˈev.ri.deɪ
  18. eyewitness ˈaɪˌwɪt.nəs
  19. firefighter ˈfaɪrˌfaɪ.t̬ɚ
  20. football ˈfʊt.bɑːl
  21. greenhouse ˈɡriːn.haʊs
  22. handwriting ˈhændˌraɪ.t̬ɪŋ
  23. headache ˈhed.eɪk
  24. highway ˈhaɪ.weɪ
  25. homework ˈhoʊm.wɝːk
  26. iceberg ˈaɪs.bɝːɡ
  27. jellyfish ˈdʒel.i.fɪʃ
  28. laptop ˈlæp.tɑːp
  29. lighthouse ˈlaɪt.haʊs
  30. mailbox ˈmeɪl.bɑːks
  31. moonlight ˈmuːn.laɪt
  32. notebook ˈnoʊt.bʊk
  33. nobody ˈnoʊ.bɑː.di
  34. pancake ˈpæn.keɪk
  35. postcard ˈpoʊst.kɑːrd
  36. rainbow ˈreɪn.boʊ
  37. sailboat ˈseɪl.boʊt
  38. sandbox ˈsænd.bɑːks
  39. seashore ˈsiː.ʃɔːr
  40. skateboard ˈskeɪt.bɔːrd
  41. snowflake ˈsnoʊ.fleɪk
  42. spaceship ˈspeɪs.ʃɪp
  43. sunflower ˈsʌnˌflaʊ.ɚ
  44. sunshine ˈsʌn.ʃaɪn
  45. superhero ˈsuː.pɚˌhɪr.oʊ
  46. tablecloth ˈteɪ.bəl.klɑːθ
  47. toothbrush ˈtuːθ.brʌʃ
  48. toothpaste ˈtuːθ.peɪst
  49. typewriter ˈtaɪpˌraɪ.t̬ɚ
  50. underwater ˌʌn.dɚˈwɑː.t̬ɚ
  51. upstairs ʌpˈsterz
  52. volleyball ˈvɑː.li.bɑːl
  53. waterfall ˈwɑː.t̬ɚ.fɑːl
  54. watermelon ˈwɑː.t̬ɚˌmel.ən
  55. weekend ˈwiːk.end
  56. wheelchair ˈwiːl.tʃer
  57. windmill ˈwɪnd.mɪl
  58. workshop ˈwɝːk.ʃɑːp

File: 1000-hours/sounds-of-american-english/6.4-parts-of-words.md

6.4. 常见词根词缀

英文的词根大多来自拉丁语;而常用词缀,包括前缀和后缀 —— 它们都是表意的。

6.4.1. 常见前缀

  1. un- (not, opposite of)
  • unhappy ʌnˈhæp.i
  • unknown ʌnˈnoʊn
  • unusual ʌnˈjuː.ʒu.əl
  1. re- (again, back)
  • redo riːˈduː
  • review rɪˈvjuː
  • return rɪˈtɝːn
  1. in- (not, into)
  • incomplete ˌɪn.kəmˈpliːt
  • invisible ɪnˈvɪz.ə.bəl
  • inside ɪnˈsaɪd
  1. dis- (not, opposite of)
  • disagree ˌdɪs.əˈɡriː
  • disappear ˌdɪs.əˈpɪr
  • disconnect ˌdɪs.kəˈnekt
  1. pre- (before)
  • preview ˈpriː.vjuː
  • predict prɪˈdɪkt
  • preschool ˈpriː.skuːl
  1. mis- (wrongly)
  • misunderstand ˌmɪs.ʌn.dɚˈstænd
  • misplace ˌmɪsˈpleɪs
  • mislead ˌmɪsˈliːd
  1. non- (not)
  • nonstick ˌnɑːnˈstɪk
  • nonprofit nɑnˈprɑf·ɪt
  • nonviolent ˌnɑːnˈvaɪə.lənt
  1. over- (too much)
  • overeat ˌoʊ.vɚˈiːt
  • overwork ˌoʊ.vɚˈwɝːk
  • overheat ˌoʊ.vɚˈhiːt
  1. sub- (under)
  • submarine ˌsʌb.məˈriːn
  • subtitle ˈsʌbˌtaɪ.t̬əl
  • subconscious ˌsʌbˈkɑːn.ʃəs
  1. inter- (between, among)
  • international ˌɪn.t̬ɚˈnæʃ.ən.əl
  • interact ˌɪn.t̬ɚˈækt
  • interrupt ˌɪn.t̬əˈrʌpt
  1. trans- (across, beyond)
  • transport ˈtræn.spɔːrt
  • transfer ˈtræns.fɝː
  • transform trænsˈfɔːrm
  1. under- (too little, below)
  • underpaid ˌʌn.dɚˈpeɪd
  • underestimate ˌʌn.dɚˈes.tə.meɪt
  • underground ˌʌn.dɚˈɡraʊnd
  1. super- (above, beyond)
  • superhuman ˌsuː.pɚˈhjuː.mən
  • supermarket ˈsuː.pɚˌmɑːr.kɪt
  • supervisor ˈsuː.pɚ.vaɪ.zɚ
  1. semi- (half, partly)
  • semicircle ˈsem.iˌsɝː.kəl
  • semifinal ˌsem.iˈfaɪ.nəl
  • semiconscious ˌsem.aɪ.ˈkɑːn.ʃəs/
  1. anti- (against)
  • antibiotic ˌæn.t̬i.baɪˈɑː.t̬ɪk
  • antifreeze ˈæn.t̬i.friːz
  • antisocial ˌæn.t̬iˈsoʊ.ʃəl
  1. de- (down, away from)
  • devalue ˌdiːˈvæl.juː
  • defrost ˌdiːˈfrɑːst
  • decode diːˈkoʊd
  1. en- (make, put into)
  • enable ɪˈneɪ.bəl
  • enrich ɪnˈrɪtʃ
  • encourage ɪnˈkɝː.ɪdʒ
  1. em- (cause to)
  • empower -ˈpaʊr
  • embrace ɪmˈbreɪs
  • employ ɪmˈplɔɪ
  1. non- (not)
  • nonexistent ˌnɑn·ɪɡˈzɪs·tənt
  • nonsense ˈnɑːn.sens
  • nonprofit nɑnˈprɑf·ɪt
  1. mid- (middle)
  • midnight ˈmɪd.naɪt
  • midterm ˈmɪd.tɝːm
  • midfield ˈmɪd.fiːld

6.4.2. 常见后缀

  1. -able (capable of)
  • readable ˈriː.də.bəl
  • manageable ˈmæn.ə.dʒə.bəl
  • comfortable ˈkʌm.fɚ.t̬ə.bəl
  1. -ible (capable of)
  • visible ˈvɪz.ə.bəl
  • flexible ˈflek.sə.bəl
  • edible ˈed.ə.bəl
  1. -al (relating to)
  • natural ˈnætʃ.ɚ.əl
  • musical ˈmjuː.zɪ.kəl
  • personal ˈpɝː.sən.əl
  1. -ful (full of)
  • helpful ˈhelp.fəl
  • joyful ˈdʒɔɪ.fəl
  • careful ˈker.fəl
  1. -less (without)
  • hopeless ˈhoʊp.ləs
  • fearless ˈfɪr.ləs
  • endless ˈend.ləs
  1. -ly (in the manner of)
  • quickly ˈkwɪk.li
  • slowly ˈsloʊ.li
  • happily ˈhæp.əl.i
  1. -ment (action or process)
  • development dɪˈvel.əp.mənt
  • agreement əˈɡriː.mənt
  • improvement ɪmˈpruːv.mənt
  1. -ness (state or quality)
  • kindness ˈkaɪnd.nəs
  • darkness ˈdɑːrk.nəs
  • happiness ˈhæp.i.nəs
  1. -er (one who, comparative)
  • teacher ˈtiː.tʃɚ
  • runner ˈrʌn.ɚ
  • faster fæst
  1. -or (one who)
  • actor ˈæk.tɚ
  • inventor ɪnˈven.t̬ɚ
  • conductor kənˈdʌk.tɚ
  1. -ist (one who practices)
  • artist ˈɑːr.t̬ɪst
  • scientist ˈsaɪən.tɪst
  • pianist ˈpiː.ən.ɪst
  1. -ion (action or condition)
  • celebration ˌsel.əˈbreɪ.ʃən
  • decision dɪˈsɪʒ.ən
  • creation kriˈeɪ.ʃən
  1. -tion (action or condition)
  • education ˌedʒ.əˈkeɪ.ʃən
  • suggestion səˈdʒes.tʃən
  • transportation ˌtræn.spɚˈteɪ.ʃən
  1. -sion (state or condition)
  • admission ədˈmɪʃ.ən
  • confusion kənˈfjuː.ʒən
  • extension ɪkˈsten.ʃən
  1. -ous (full of)
  • dangerous ˈdeɪn.dʒɚ.əs
  • nervous ˈnɝː.vəs
  • famous ˈfeɪ.məs
  1. -ive (tending to)
  • active ˈæk.tɪv
  • creative kriˈeɪ.t̬ɪv
  • attractive əˈtræk.tɪv
  1. -ic (relating to)
  • artistic ɑːrˈtɪs.tɪk
  • athletic æθˈlet̬.ɪk
  • energetic ˌen.ɚˈdʒet̬.ɪk
  1. -ity (state or quality)
  • reality riˈæl.ə.t̬i
  • ability əˈbɪl.ə.t̬i
  • simplicity sɪmˈplɪs.ə.t̬i
  1. -ance (state or quality)
  • performance pɚˈfɔːr.məns
  • importance ɪmˈpɔːr.təns
  • acceptance əkˈsep.təns
  1. -ence (state or quality)
  • difference ˈdɪf.ɚ.əns
  • independence ˌɪn.dɪˈpen.dəns
  • existence ɪɡˈzɪs.təns

6.4.3. 常见词根

  1. aqua (water)
  • aquarium əˈkwer.i.əm
  • aquatic əˈkwæt̬.ɪk
  • aqueduct ˈæk.wə.dʌkt
  1. aud (hear)
  • audience ˈɑː.di.əns
  • audio ˈɑː.di.oʊ
  • audition ɑːˈdɪʃ.ən
  1. bene (good, well)
  • benefit ˈben.ə.fɪt
  • benevolent bəˈnev.əl.ənt
  • benefactor ˈben.ə.fæk.tɚ
  1. cent (hundred)
  • century ˈsen.tʃər.i
  • percent pɚˈsent
  • centennial senˈten.i.əl
  1. dict (say, speak)
  • dictionary ˈdɪk.ʃən.er.i
  • predict prɪˈdɪkt
  • dictate ˈdɪk.teɪt
  1. duc (lead)
  • conduct kənˈdʌkt
  • produce prəˈduːs
  • reduce rɪˈduːs
  1. fract (break)
  • fracture ˈfræk.tʃɚ
  • fraction ˈfræk.ʃən
  • infraction ɪnˈfræk.ʃən
  1. ject (throw)
  • project ˈprɑː.dʒekt
  • inject ɪnˈdʒekt
  • reject rɪˈdʒekt
  1. jud (judge)
  • judicial dʒuːˈdɪʃ.əl
  • prejudice ˈpredʒ.ə.dɪs
  • judgment ˈdʒʌdʒ.mənt
  1. mal (bad, ill)
  • malnutrition ˌmæl.nuːˈtrɪʃ.ən
  • malicious məˈlɪʃ.əs
  • malfunction ˌmælˈfʌŋk.ʃən
  1. mater (mother)
  • maternal məˈtɝː.nəl
  • maternity məˈtɝː.nə.t̬i
  • matriarch ˈmeɪ.tri.ɑːrk
  1. mit (send)
  • transmit trænsˈmɪt
  • admit ədˈmɪt
  • submit səbˈmɪt
  1. mort (death)
  • mortal ˈmɔːr.t̬əl
  • mortician mɔːrˈtɪʃ.ən
  • mortify ˈmɔːr.t̬ə.faɪ
  1. multi (many)
  • multiple ˈmʌl.tə.pəl
  • multiply ˈmʌl.tə.plaɪ
  • multinational ˌmʌl.t̬iˈnæʃ.ən.əl
  1. pend (hang, weigh)
  • pendant ˈpen.dənt
  • suspend səˈspend
  • depend dɪˈpend
  1. port (carry)
  • transport ˈtræn.spɔːrt
  • export ˈek.spɔːrt
  • import ˈɪm.pɔːrt
  1. scrib/script (write)
  • describe dɪˈskraɪb
  • manuscript ˈmæn.jə.skrɪpt
  • subscription səbˈskrɪp.ʃən
  1. sect/sec (cut)
  • section ˈsek.ʃən
  • dissect daɪˈsekt
  • intersect ˌɪn.t̬ɚˈsekt
  1. sent/sens (feel)
  • sensation senˈseɪ.ʃən
  • sensitive ˈsen.sə.t̬ɪv
  • consent kənˈsent
  1. spec/spect (look)
  • inspect ɪnˈspekt
  • spectator spekˈteɪ.t̬ɚ
  • spectacle ˈspek.tə.kəl
  1. struct (build)
  • construct kənˈstrʌkt
  • structure ˈstrʌk.tʃɚ
  • destruct ˌself.dɪˈstrʌkt
  1. tele (far)
  • telephone ˈtel.ə.foʊn
  • television ˈtel.ə.vɪʒ.ən
  • telegraph ˈtel.ə.ɡræf
  1. terra (earth)
  • terrestrial təˈres.tri.əl
  • territory ˈter.ə.tɔːr.i
  • terrain təˈreɪn
  1. vac (empty)
  • vacant ˈveɪ.kənt
  • vacuum ˈvæk.juːm
  • evacuate ɪˈvæk.ju.eɪt
  1. vid/vis (see)
  • video ˈvɪd.i.oʊ
  • vision ˈvɪʒ.ən
  • invisible ɪnˈvɪz.ə.bəl

File: 1000-hours/sounds-of-american-english/7-whats-next.md

7. 从此之后

转眼,现在是 2024 年,距离我 2010 年写《人人都能用英语》已经是 14 年 —— 按我经常说的话,7 年就是一辈子,这就一晃两辈子过去了……

大环境发生了很大的变化。在 2010 年的时候,我认为一个人 “用” 英语的 “最少必要知识” 包括:

  • 音标
  • 拼写规则
  • 具备一定的基础词汇量
  • 会查词典
  • 具备基础的语法知识
  • 会查语法书
  • 会用 Google

—— 这就可以了,这样就可以开始用英语了。

2023 年前后,基于大语言模型的人工智能爆发…… 经过一段时间的使用之后,我觉得 “用” 英语的 “最少必要知识” 可以进一步简化了:

  • 语音训练
    • 音标
    • 拼写规则
  • 会用 AI(或 Enjoy App)

而且,“学” 英语的重点应该彻底转移了 —— 应该、必须、且只能 “以语音为重点”。

从此之后,没有任何人任何机构在英语教学方面比 AI 更强…… 哪怕像我这样的人,也顶多是 “还算不错的助教” 而已。AI 不仅很强,还极便宜 —— 无论是从金钱成本来看,还是从时间成本、学习成本来看都是如此。

从此之后,爱用不用,用或不用,只不过是一个人的自由且任性的选择而已。

李笑来

第三版正式稿,2024 年 8 月 22 日,于北京


File: 1000-hours/sounds-of-american-english/8-appendix.md

附录

这里补充的是一些日常可以使用的桌面版工具。


File: 1000-hours/sounds-of-american-english/8.1-inputting-phonemes-and-symbols.md

8.1. 输入音标与特殊符号

在电子文档中输入音标符号(及其其它特殊符号)从来都很麻烦。

macOS 上有一个收费软件,Alfred,可以用来定义很多快捷流程(workflow)去完成相对复杂的任务。

Alfred 的使用方法,参见:
https://github.com/xiaolai/apple-computer-literacy/blob/main/alfred.md

我用 Alfred 作为辅助在电脑上输入各种特殊符号。以下是 Alfred workflow 文件:

IPA-Phonetic-Symbols.alfredworkflow

以启动关键字 ipae 为例 —— 呼出 Alfred:

这时,就可以用 CMD + 数字 的方式,将对应的符号插入当前文本。比如,CMD + 4 就是将 ɝː 插入当前文本编辑器。

以下罗列的是各个符号对应的 Alfred 关键字(Keywords):

关键字(Keyword) 符号(Symbol)
ipaa ʌ
ipaaa ɑ
ipaae æ
ipae ə
ipaeeer ɝː
ipaer ɚ
ipaes ᵊ
ipai ɪ
ipau ʊ
ipao ɒ
ipaoo ɔ
ipal ɤ
ipatd t̠
ipatg ʔ
ipats ᵗ
ipan ŋ
ipath θ
ipad ð
ipas ʃ
ipaz ʒ
ipaj ʲ
ipaw ʷ
ipa1 ◌̅ flat
ipa2 ◌́ rise
ipa3 ◌̌ fall-rise
ipa4 ◌̀ fall
ipa5 ◌̂ pitch raise
ipa6 ◌̲ long vowel
ipa7 ◌̩ syllabic consonant
ipa8 ◌̥ voiceless
ipa9 ◌̚ stop
ipa0 ◌
ipa: ː long vowel symbol
ipa" ˈ prime stress
ipa' ˌ secondary stress
ipa- ◌‿◌ linking
ipa| ‖ grouping boundary
--> ⭢
<-- ⭠
<-> ⭤
irise ⤴ senetence intonation rise
idown ⤵ senetence intonation fall

File: 1000-hours/sounds-of-american-english/8.2-cepd-phonetics-and-sound.md

8.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())

File: 1000-hours/sounds-of-american-english/8.3-phoneme-exercises.md

8.3. 音标练习

这是一个 Jupyter Notebook,用来建立音标符号与声音之间的关联。

每次执行,随即从《剑桥英语发声词典》中选取一个词汇,播放真人朗读语音,而后要求对元音或者辅音填空……

phonetics-fill-in-exercise.ipynb

执行结果如下:

Jupyter Notebook 代码如下:

python
# %%
%pip install python-vlc

# %%
import requests
import json
import vlc
import re
import random
from IPython.display import Audio

import json
import requests

def load_json_database(source):
    records = []
    
    def parse_json_lines(lines):
        for line in lines:
            if line:
                try:
                    record = json.loads(line)
                    records.append(record)
                except json.JSONDecodeError as e:
                    print(f"Error parsing JSON: {e}")

    try:
        if source.startswith('http://') or source.startswith('https://'):
            # Handle as URL
            response = requests.get(source)
            response.raise_for_status()  # Raise an error for bad status codes
            parse_json_lines(response.iter_lines(decode_unicode=True))
        else:
            # Handle as file
            with open(source, 'r', encoding='utf-8') as file:
                parse_json_lines(file)
    except requests.exceptions.RequestException as e:
        print(f"Error fetching data from URL: {e}")
    except FileNotFoundError as e:
        print(f"Error opening file: {e}")
    except Exception as e:
        print(f"An unexpected error occurred: {e}")
    
    return records

url = "https://raw.githubusercontent.com/zelic91/camdict/main/cam_dict.refined.json"
json_database = load_json_database(url)
# %%
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'

def replace_with_underscores(match):
    return '_' * len(match.group(0))

# %%
# get a random word from the database

vowel_phonetics = re.compile(r'ɑː|ɑːr|ʌ||iː|ɪ|i|ɪr|ʊ|ʊr|uː|ʊr|e|er|æ|ə|ɚ|ɝː|ɒ|ɔː|ɔːr|ɔɪ|aɪ|aɪr|eɪ|aʊ|aʊr|oʊ|')
consonant_phonetics = re.compile(r'p|b|t|d|k|ɡ|f|v|θ|ð|s|z|ʃ|ʒ|tʃ|dʒ|r|h|l|t̬|j|w|ŋ|n|m|tr|dr|ts|dz|br|pr|fr|ɡr|θr|dr|ʃr|kr|bl|kl|ɡl|fl|pl|sl|sp|st|sk|sm|sn|sw|str|spr|skr|spl|sfr|skw|skr|skl|')

# if the word is with certain enddings such as 'es, ed, ing', get another word
random_word = random.choice(json_database)
while random_word['word'].endswith(('ed', 'ing', 'es', 'ts', 'ks', 'ds', 'ps', 'bs', 'gs', 'ls', 'rs', 'ms', 'ns', 'er', 'est')):
    random_word = random.choice(json_database)

# get pronunciation of the random word with region 'us'
random_word_us = search_in_json_database(json_database, random_word['word'], 'us')

# get the word's phonetics
random_word_entry = random_word['word']
print(random_word_entry)

random_word_phonetics = random_word_us['pronunciation']

# get the audio url of the word
random_word_us_audio_url = random_word_us['audio']
print(random_word_us_audio_url)

blank_vowel_phonetics = re.sub(vowel_phonetics, replace_with_underscores, random_word_phonetics)
blank_consonant_phonetics = re.sub(consonant_phonetics, replace_with_underscores, random_word_phonetics)

# fill vowels in blanks
print(f'Fill vowels in blanks: {blank_vowel_phonetics}')

# fill consonants in blanks
print(f'Fill in consonants in blanks: {blank_consonant_phonetics}')

# play the audio
player = vlc.MediaPlayer(random_word_us['audio'])
player.play()

# display the audio
Audio(url=random_word_us_audio_url)

File: 1000-hours/sounds-of-american-english/8.4-daily-speech-exercises.md

8.4. 每日练习语音生成

这是一个 Jupyter Notebook —— 需要有自己的 OpenAI API Key。指定 user-prompt,而后生成

  • 一个篇章及其 markdown 文件,以及由 alloy 和 nova 朗读的 mp3 文件
  • 同一话题的两个对话,及其 mp3 文件

压缩包链接:

8.4-daily-speech-exercises.zip


File: 1000-hours/training-tasks/ai.md

人工智能

人工智能在生活中的应用非常多,但,最有用的地方(无需附加上 “之一”)是用来提高我们的语言使用能力。毕竟,现在的人工智能都是基于大语言模型的,所以,它们天然在语言领域更为灵活更为强大。


File: 1000-hours/training-tasks/ground.md

[Binary file]


File: 1000-hours/training-tasks/kick-off.md

[Binary file]


File: 1000-hours/training-tasks/language.md

[Binary file]


File: 1000-hours/training-tasks/predicaments.md

[Binary file]


File: 1000-hours/training-tasks/procedures.md

2. 训练方法

请后续反复认真阅读《语音塑造》中的每一个章节。

2.1. 搞清每个单词的读音

在挣扎着读准之前,首先要避免读错。这只是一个习惯,遇到任何不确定的词汇都要查词典 —— 当然,在有各种辅助工具的情况下(GPT: Phonetic Transcriber),甚至可以整句查询音标。

望文生音非常可怕。我曾经在很多年里把 facade 读成 ˈfækeɪd —— 其实是 fəˈsɑːd);我也曾把 specific 读成 ˈspesɪfɪk —— 其实是 spəˈsɪfɪk)…… 不妨再猜猜 plaid 这个词怎么读?我在很长一段时间里误以为是 pleɪd …… 后来才发现并非如此 —— 其实是 plæd 。

如果不养成这个习惯,那么读错的单词会越来越多,等于时时刻刻在为自己的牢墙添砖加瓦,到最后再也无法逃脱 —— Github 上有个常见中国程序员发音错误的单词列表,不妨去看看,当作自己的警钟。

遇到自己不熟悉发音的词汇,要单独反复大声朗读,直至自己的舌头和嘴唇都协调得非常轻松自然。每个人遇到的困难不一样。比如,Instagram 上就有个人演示过自己 literally 这个单词死活读不明白的尴尬 —— 不过,这恰恰就是在自己的大脑里新建连接新建网络所要面临的困难,要通过练习克服的就是这个困难,并且还要通过短时间内足量重复把新连接新网络强化到原有近似连接近似网络无法竞争的地步……

2.2. 放慢播放速度仔细听

要慢速听很多遍。从 2 大层面总计 7 个方面分别去分析,详情参见《语音塑造》:

  • 韵律节奏
  • 音素变化
    • 元音(3.1)
    • 辅音(3.2)

仔细听的意思是说,按照以上的顺序,逐条分析,直至每个音素都认真分析过、认真体会过、认真尝试过。这一步最需要注意力集中,也是整个训练中最关键的部分 —— 这场训练,从另外一个角度来看,实际上都是注意力训练。

如果这一点没做到、没做好的话,就会出现 “明明听到的是一回事,脑子里反应的却是另外一回事”。

比如,假设过去你一直习惯于把 recent ˈrisənt 里的 s 读成了 z,而后在这一步中你并没有做到仔细听并分析到音素级别的话…… 那么接下来弄不好无论听多少遍,无论跟读多少遍,你都有可能依然无法发现你有一个音竟然读错了 —— 你的大脑会固执地用原有的连接和网络,乃至于自己毫无察觉。如果有人提醒,你会感觉特别奇怪,感觉上那么明显的差异,自己怎么就竟然一直没注意到?这里有个示例,(recent health tips)—— 这是某位同学被发现之前完全没有意识到的错误。

在这一步,每个单词都可以跟读一下,通过试验感觉自己的声音,认真找自己需要调整的地方。

在最初尚不熟悉的时候,可以把文本和音标打印出来,在纸上用笔做各种标记。

  • 用 | 标注可换气停顿,用 · 标注非换气停顿;
  • 在音高(pitch)被拔高的音节上标注一个 ^;
  • 在重读的单词可用加重字体作为标注;
  • 需要读长的元音在下面或者上面画一段直线;
  • 在必要的重读音节的元音上标注声调,◌̅, ◌́, ◌̀
  • 连读用 ◌‿◌ 符号做出标记
  • 在读得很快的几个词汇下画波浪线;
  • 格外需要注意并调整的音素,引出一个箭头之后写上各种必要的笔记……

这一步的仔细分析很重要,是后面所有练习步骤的必要前提。请注意,这一步分析,弄上半小时甚至一小时都不过分…… 因为你不知道的你就注意不到。

2.3. 分段跟读

这和我们练琴特别像。刚开始的时候,人家弹得轻松听着优美,我们自己的手指干脆不听话,笨得跟脚趾似的……

于是,只能放慢听,放慢速度练……

可即便放慢速度了也不行…… 于是,只能一小节一小节地练,练熟了一小节再去练下一小节,两个小节都练熟了之后吧,还得拼起来重复很多遍才能做到两个小节之间衔接自然…… 如此这般,一小节一小节地终于 “爬” 完之后,才算有资格可以进行正式练习了……

自然语音中有暂停(pause)的地方,就相当于是乐谱里的小节分界线。分段练习,实在难的小节,还可以继续拆分……

在跟读的时候,有必要夸张一点。声音也要正常地大 —— 确实不用喊,嗓子的确需要保护。实际上,我们主要需要练的是嘴唇、舌头、气流振动的配合,主要练的还真不是声带。

跟读的时候,可以戴着耳机。一个比较好的方法是戴单只耳机 —— 这样,一方面录音听得更清楚,另外一方面也不妨碍听清自己的声音,还可以换着耳朵戴。

上一步中的音素级分析,在这一步中开始发挥作用,因为你可以注意到每一个细节。而后的过程,漫长且又难过 —— 短时间内足量重复 —— 要在大脑里创建新连接强化新连接,创建新网络强化新网络,防止旧连接旧网络被启用,防止近似连接近似网络劫持操作…… 时时刻刻感觉到自己的笨拙,苦恼于做不到、做不好 —— 非常难过,但必需忍受。

不要害怕自己的笨拙。

大家都一样,刚开始的时候就是很吃力,就是很生硬 —— 并且,这种笨拙必然要持续相当长一段时间…… 哪怕感觉上已经熟练,还是需要继续练习的 —— 做什么都一样。

TED 上有一个讲座,Benjamin Zander 讲 The transformative power of classical music,提到说 “没有人是音盲(tune deaf)” 所以每个人都可以练习演奏 —— 这很重要…… 不过,值得你在这里听听的是他模仿了不同时期孩子弹钢琴的情况,从生硬到熟练……

其实,无论干什么,每个人都得经历那其中的各个阶段。

2.4. 完整跟读

终于,可以尝试完整跟读了。

在这个阶段里,千万不能误以为自己现在已经很熟练了就彻底过关了。

完整跟读几遍之后,要录音。这时候,之前做的详细的标记就更起作用了。你会发现自己总是会在一些想象不到的地方一不小心就变成了过往自己说话的样子 —— 这就是近似连接近似网络和新建连接新建网络竞争胜出的结果。也许你需要换个颜色的笔再做一些重点标记。

重复三五遍之后,就要再录一次音,再对比再调整。

录音非常重要。因为不录音的话,很多自己没弄明白的细节就被掩盖了。只要录音,没做好没做对的地方就无可遁形。倒不见得每一次跟读都要录音,但,一定要时不时录一次。

2.5. 背诵

这一步格外重要,绝不能糊弄!—— 这是两个核心任务之一。随着时间的推移,记忆扩展的重要性会逐步超过语音塑造 —— 毕竟,语音塑造练一段时间之后就可以用一辈子;但,记忆扩展却是可以且最好长期持续进行的。

切记:记忆是一切语言能力的基础。

这时候,你已经把整个文本读过不知道多少遍了 —— 背诵不应该有太多困难。

然而,由于它并不是用你目前高度熟悉的语言书写的,所以你还真不一定能够一下子记住。要集中注意力短时间内重复多次才可以。

刚开始的时候可能会感觉死活记不住…… 放心,你的记忆力会越来越好的,只要你肯练。

每隔一段时间要专门腾出一天复习之前的内容。比如,周日的时候,专门复习这一整周的所有内容。同样,到了月末,要腾出两三天专门复习这一整个月的内容。

2.6. 放松

在此之前,你的所有努力都是要尽量用录音里的方式说出所有的文字。在这个过程中,为了保证练习效果,你可能一直相当夸张,这也非常必要。

在练习的过程中,绝大多数人都会不由自主受到的影响有一部分来自于示范录音中的音质。

无论是人工智能生成的所谓真人语音,还是有声书里的录音,抑或是影视剧里的台词 —— 这些录音中的朗读者音质也好声线也罢,都是训练有素的表演。绝大多数人在日常生活里并未受到过这方面的专业训练,肯定不影响日常交流,但,的确很难做到在音质上或者声线上模仿。

当你熟悉到一定程度之后,你可以尝试着放松自己的声音。这样多少可以摆脱音质或声线造成的影响。但,依然需要重点关注的是那两大方面:韵律节奏和音素变化 —— 这些都与音质或声线无关。

放松自己的嘴唇、舌头、呼吸,用尽量自然的方式反复朗读文本。重复几遍之后就录一次音…… 对比一下…… 也需要做调整…… 尝试背诵…… —— 重复以上步骤。

2.7. 复盘

一天至少三个小时,每周最多可以中止一天。

每天结束之前,要花 5~10 分钟做一下复盘,回忆并记录一下自己今天遇到的困难、已经克服的困难、尚未克服的困难、以及面对那些困难时所采用的方法…… 想一想还有什么方法可以试试?这些都要写下来。相信我,记录这个东西 ,总是会以想象不到的方式起想象不到的作用。


File: 1000-hours/training-tasks/revolution.md

[Binary file]


File: 1000-hours/training-tasks/surprise.md

意料之外

经过一段时间的自我训练之后,你可能会有个意料之外的困境:

自己无话可说……

原本每天的 3 小时的注意力应该集中到语音塑造和记忆扩展之中,结果很多人发现,“把自己的想说的话用母语写出来” 竟然越来越耗时费力,到最后,甚至压根就想不起来可以说什么…… 怎么回事?这是个非常隐蔽的困境,很多人可能从来都没有意识到。虽然学外语的困难可以来自方方面面,最让人尴尬的莫过于发现最大的困难竟然是自己的母语水平并不过关。

显然,母语水平限制第二语言的习得。

有些人最初的时候以为自己的问题在于词汇量不够…… 于是就找来词汇书或者背单词软件死磕。所有人都一样,效果并不好。为什么?因为有太多的单词是自己生活中压根就不会用的东西,那些在自己在母语中并不使用、甚至没见过的概念,用外语怎么能记得住?死记硬背倒也不是不可以,甚至挺好,但,用到哪里好呢?

这是一个非常令人遗憾的事实:

无论哪个国家,虽然基本的生活沟通谁都看起来没什么问题,但,人群中真正能够使用语言文字良好表达良好沟通的人占比永远不到 $\frac{1}{3}$……

这其实都是客气。若是要求稍微抬高一点,说是 $\frac{1}{100}$ 也其实毫不过分。你只要看看身边有多少人可以上台演讲,公开发表文字就知道了,而那极少数中绝大多数,又只不过是滥竽充数而已……

可问题在于,这不是词汇量的问题,这不是语法知识的问题,这甚至也不是基础语言能力的问题,这个困境源自于观察能力和思考能力的欠缺。大脑需要输入之后经过处理才能输出。跟电脑一样,输入的若是垃圾,输出的只能是垃圾。若是没有输入,请问,处理什么呢?若是处理都处理不明白,请问,就算输出又能怎样呢?

然而,也别着急,的确有办法可以迅速提高,因为日常的自然语言结构都很简单。

如果是说理的话,那么:

最常见的无非是说完一句话之后,从 What, Why, How 三个方面选择一个展开,如有必要就各自全面展开……

也就是说,它就好像是一个桌子,有个桌面,而后可以只有一条腿(一个例子,一个理由,一个解释),也可以有两条腿(一个例子,再加一个理由;或者两个例子;或者两个理由),也可以有三条腿、四条腿…… 但是,通常也不需要太多的腿……

如果是讲故事的话,那么:

最常见的无非是按照时间顺序讲述,了不起用倒叙或者插叙 —— 为了制造悬念和效果。

除此之外,全都是细节。所需的能力也只能靠日积月累。看到好词、好句、好句型,收藏起来;看到好情节好段子,收藏起来;看到好的事例,好的分析,好的结构收藏起来…… 只要遇到可以应用的地方就想办法多用几次 —— 仅此而已。

如果你愿意养成习惯,不妨额外再多处理一下细节,比如:

  • 关键信息准确:数字、年代、人名、地名;
  • 若是存在引用,文字要做到一字不差;

如此这般,你的输出能力就基本过关了…… 只要起步,不断积累,就会越来越好。你看,很多人只不过是习惯了懒而已 —— 开始时并不是做不到,但,懒得太久,就再也无法做到了。

输出(说话、写作)的前提,处理(思考)呢?它其实仰仗另外一个前提 —— 输入(阅读、观察)。因为只要输入就需要处理,所以,输入得越多,处理经验就越丰富,就这么简单。所以,一定要多读书,多读好书,这也是必需的日常健脑活动。

除此之外,最重要的是要养成个习惯:

收集值得思考的问题。

为它专门准备个本子,或者手机的记事簿里专门备一个独立的条目。不断收集,不断整理。脑子里若是没有问题,大脑就不会为了它们专门处理相关的输入。若是脑子里装满了问题,你就会发现,你观察得更多,观察的时候看到的细节更多,思考的时候关联也更多……

这个问题集,一方面会像吸铁石一样,把那些没有它你就很可能注意不到的信息展现在你的面前,另外一方面又像筛子一样,帮你过滤掉那些对你来说无关紧要的东西。到最后,你会发现它才是你驾驭自己注意力的最佳工具之一。

当然,有时间有精力,你应该去读更多写作相关的书籍。比如,William Strunk Jr. 的 The Elements of style, Steven Pinker 的 The Sense of Style: The Thinking Person's Guide to Writing in the 21st Century,Joseph M. Williams 的 Style: Lessons in Clarity and Grace 和 The Craft of Research,Stephen King 的 On Writing: A Memoir Of The Craft,Robert McKee 的 Story: Style, Structure, Substance, and the Principles of Screenwriting…… 好书实在是太多了。


File: 1000-hours/training-tasks/wonder.md

[Binary file]


File: 1000-hours/workers-site/package.json

{
"private": true,
"name": "worker",
"version": "1.0.0",
"description": "A template for kick starting a Cloudflare Workers project",
"main": "index.js",
"author": "Ashley Lewis [email protected]",
"license": "MIT",
"dependencies": {
"@cloudflare/kv-asset-handler": "~0.1.2"
}
}


File: 1000h-portal/README.md

Nuxt 3 Minimal Starter

Look at the Nuxt 3 documentation to learn more.

Setup

Make sure to install the dependencies:

bash
# npm
npm install

# pnpm
pnpm install

# yarn
yarn install

# bun
bun install

Development Server

Start the development server on http://localhost:3000:

bash
# npm
npm run dev

# pnpm
pnpm run dev

# yarn
yarn dev

# bun
bun run dev

Production

Build the application for production:

bash
# npm
npm run build

# pnpm
pnpm run build

# yarn
yarn build

# bun
bun run build

Locally preview production build:

bash
# npm
npm run preview

# pnpm
pnpm run preview

# yarn
yarn preview

# bun
bun run preview

Check out the deployment documentation for more information.


File: 1000h-portal/package.json

{
"name": "1000h-portal",
"private": true,
"type": "module",
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev --host",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"@nuxtjs/seo": "^2.2.0",
"nuxt": "^3.15.4",
"nuxt-og-image": "^4.1.4",
"vue": "^3.5.13",
"vue-router": "^4.5.0"
},
"devDependencies": {
"autoprefixer": "^10.4.21",
"postcss": "^8.5.3",
"sass": "^1.85.1",
"tailwindcss": "^3.4.17"
}
}


File: 1000h-portal/tsconfig.json

{
// https://nuxt.com/docs/guide/concepts/typescript
"extends": "./.nuxt/tsconfig.json"
}


File: 1000h-portal/server/tsconfig.json

{
"extends": "../.nuxt/tsconfig.server.json"
}


File: 1000h-portal/workers-site/package.json

{
"private": true,
"name": "worker",
"version": "1.0.0",
"description": "A template for kick starting a Cloudflare Workers project",
"main": "index.js",
"author": "Ashley Lewis [email protected]",
"license": "MIT",
"dependencies": {
"@cloudflare/kv-asset-handler": "~0.1.2"
}
}


File: book/README.md

[Binary file]


File: book/chapter4.md

第四章 朗读

1. 最古老最有效的训练方式

拥有文字之前,人类就已经能够说话,只不过能说的没那么复杂、要说的也非常简单而已。有了文字,后来甚至发展并掌握了逻辑之后,人们能够想到的、需要表达的开始变得越来越复杂起来。某种意义上,最终拥有了文字是人类与其它近亲物种最深刻的本质区别。一旦人类拥有了文字,有意识、有目的的教育就成了必须。

而所有文化在这一点上都一模一样:朗读是语文教育的最古老、最普及、成本最低、效果最好的训练方式。只可惜这种最好的训练方法即便在我们的母语语文教育中被重视的程度都远远不够。并且,每代人都以为自己可以找得到更好的方法而忽略这个其实无法超越的手段。

许多年来,我一直在进步,但从来没觉得自己英语学得好(至少不是人们普遍认为的那种 “好”),但在习得过程中确确实实没有觉得那么费劲。这要归功于我的父亲。我的父亲是个精通多种语言的人。毕业于黑龙江大学俄语系,文革没多久就被下放到海林县一中任英语教员,后被 “落实政策” 而调任延边医学院外语系主任直至退休。由于我的父亲是位英语教授,我一上初中就被老师任命为 “英语课代表”。我的班主任误以为我爸爸是英语教授,我的英语就自然会不错 —— 大错特错。

有句话说,“医不治己”。同样的道理,我老爸是个对学生无比耐心的好老师,可是回家教自己儿子,两句话之后就受不了了,不由得骂起来:“小崽子,是我儿子么?这么笨!” 当然,我也不示弱:“你不说我是你捡来的么!” 于是爷俩就不欢而散。那时,我觉得他英语好是他的事儿,我英语不好还是他的事儿。

可我已经成了 “英语课代表”。每天早上要站在全班同学面前领读课文,要是磕磕巴巴就很丢人。于是只好硬着头皮向老爸求助。那个年代(大约是 1984 年前后)的英语课本是没有配套磁带的(当然更没有现在这么方便的 mp3)。老爸是外语系主任,于是家里很早就有录音机,他又假公济私弄来两盘空白进口牌子 TDK 磁带,为我把所有课文朗读了一遍录了下来。此后,我事先在家里花几十分钟把课文跟着磁带读熟,然后再到学校领读,总算是不再丢脸。

初中课本很简单,从 “This is a book. That is a table. ” 开始。一册书总共也没有多少单元,而一个单元要一个星期(甚至更久)老师才能讲完。于是,课本上的每句话,我都不知道要带着全班同学读上多少次。很快我就发现领读三五遍之后,我就基本上能把课文背下来。我读完一句,等同学们跟读的时候,自然而然地就能想起来下一句是什么 —— 我甚至不用带书就可以站到前面领读。

此后的许多年里,英语课上我从来都没有认真听讲过,考试成绩却也从来没有差过。做选择题的时候,只是觉得哪一个选项填进去 “顺嘴” 就选哪个,正确率奇高无比,几乎从不出错。没多久,我就发现同学们问我哪一道题为什么只能选那一个选项的时候我要是如实回答往往招来怀疑的目光,于是就开始用从老师那里学来的行话胡说八道:“唉,语感呗……” 说来也怪,得到这种莫名其妙的答案的时候,提问者往往表情凝重,显得若有所思,然后缓缓点头,默默走开。

许多年后,我自己莫名其妙成了英语老师,认真回顾才发现我捡了个大便宜:不知不觉用了成本最低、效果最好的训练方式躲过了无数劫难。

2. 朗读有助于提高文字理解能力

说来可惜,但大多数人确实并不重视朗读训练 —— 无论是母语还是外语的习得过程中都是如此。朗读训练既简单又有效,并且可以解决很多许多人花很多钱去各种各样的培训班解决不了的问题。

朗读训练是提高文字理解能力的最有效方式。想象一下,现在你要流畅地朗读一个由二十个单词构成的句子。

首先,每看到一个单词,你都要有能力识别。有些单词长得很像的,比如,“principle” 和 “principal”,“quite” 和 “quiet” —— 甚至有没有空格都是需要考虑的因素,比如 “some time” 和 “sometimes”,或者 “everyone” 和 “every one”……

其次,大多数单词有很多个意思,至于它究竟在当前这句话里是哪一个意思,要根据与它相邻的单词究竟是什么意思来决定。比如,“scale” 这个单词,就有很多个意思,如果后面跟着 “~ of the economy”,那它就是 “规模” 的意思;如果后面跟着 “~ of fish”,那么它应该是 “鱼鳞” 的意思……

再次,有些单词组合在一起之后表达的意思几乎完全不是字面的含义,比如 “strike home”、“even Steven”、“paint the town red” 等等。完全不明白倒也罢了,有时真实的意思与直观的感觉恰恰相反就很难办,比如,“birds of prey”,只认识 “prey” 这个单词的学生没有专门查过词典的话,很可能把这个词组理解为 “被捕食的鸟”,而正确的含义却是 “食肉鸟、猛禽”。(别惊讶,相信我,你并不孤独。)

另外,但凡一个句子超过十个词的长度,大抵上它更可能是个复杂句,有词组、有从句,有可能是倒装句或者强调句,也有可能存在被省略的语法成分。这些语法现象并不总是那么容易处理,偶尔需要破费一些心思才能正确完成。
之所以朗读是提高 “理解能力” 的最基本方法,是因为当一个人可以流利地朗读一个句子的时候,即意味着说他正在完成对这个句子的 “拆解” 与 “重组” 的过程 —— 这是个复杂的系统工程:

信息通过眼睛输入,经过大脑识别、理解、处理之后又运用口腔的种种器官形成正确的声音,而后又通过耳朵反馈回大脑;而与此同时,大脑在一刻不停闲进行各种处理过程:句子成分都有哪些、哪几个字词构成什么样的成分、这些成分各自是什么意思、成分之间的关系究竟是什么、这些成分组合起来又构成怎样的含义,等等。

反过来也一样,如果阅读者面对一个语法正确、逻辑严谨的句子竟然不能够把它流利地朗读出来,就说明阅读者“拆解”有误或者“重组”有误。重新把句子结构与成分意义以及它们之间的关系都搞清楚之后,句意也就自然明朗了,读起来自然就“顺”了;而后再把句子多读几遍——其实就是“通过重复练习理解过程、巩固理解能力”了。

事实上,大多数人很难做到用母语流畅朗读任何句子 —— 尽管大多数人都认为自己可以做到。举例来说,也许大多数人能够在不作任何准备的情况下,能够比较流畅地朗读《读者》杂志中的任意句子 —— 因为那只不过是个扫盲类的杂志;但是,只有少数人(应该是极少数)能够做到在不作任何准备的情况下流畅地朗读《读书》杂志里的任意句子 —— 因为这种杂志所传递的才是真正需要智力才能理解的知识。即便是专业播音员,朗读任何材料之前也要首先花点时间熟悉一下内容,才能做到基本不出错地朗读出来。

关于《读者》与《读书》的评论,只是我个人看法。另外,《读书》好像已经停办了?

“朗读” 甚至是一种能力,也就当然需要通过锻炼才能掌握。尽管不是每个人都需要做到极致(最终成为播音员或者演员的人除外),但是如果连这都不及格,那么很可能因此导致 “理解能力” 低下,乃至于各个科目都可能受到影响。读者不妨回想一下自己的成长过程,每个班级里都至少有那么一两个因朗读糟糕而被老师或者同学耻笑的学生,大抵上他们其他科目的成绩不大可能理想的 —— 因为学习任何学科都需要阅读文本,需要理解能力,但这些孩子连流利朗读都掌握不了,理解能力自然就差出许多,于是在各个科目都可能因此落后于他人。,这几乎是铁律:儿时的文字训练影响一个人一生的思考能力,进而影响一生的生活质量。

3. 朗读训练会潜移默化地提高阅读理解速度

平时,我们并不在意自己的阅读速度,尤其在读闲书的时候,“速度” 几乎是不被考虑的因素 —— 快与慢全凭个人喜好。有的人喜欢咬文嚼字,有的人就是喜欢囫囵吞枣 —— 当然更多的人干脆懒得读书,只看画报与影视。人们真正在意自己的阅读速度的时候,基本上都是在考试的时候,比如,在参加外语考试诸如国内的四六级考试或者国外的留学考试 TOEFL、SAT、GRE、GMAT、LSAT 的时候 —— 大多数人的直接感受是阅读速度太慢,乃至于时间不够用。而尽管考试从来都不是招人喜欢的东西,但优异的考试成绩,往往是一个人发展的通行证,不得不为之努力。当然,在工作中,输入至关重要,因此一个人的阅读理解速度不足够快,会在很大程度上限制一个人的能力 —— 因为他获取、过滤、筛选信息的速度,以及获取的信息量和质量都在不同程度上受到些限制。

为了解决阅读速度的限制,人们(包括老师与学生)给出了各种各样的解决方案和建议,同时也定义了很多所谓的 “恶习”,比如,“唇读”、“指读”、“回读”、“译读” 等等。很多学生在面临问题的时候也难免 “病急乱投医”,相信 “唇读”、“指读” 等等方式真的是所谓的恶习。事实上,无论多么荒谬的事情只要有人肯斩钉截铁地说出来就会有人(很多人)不假思索地相信。每天遇到的这种例子还少吗?

而这些 “快速阅读” 建议基本上都是治标不治本的,因为它们解决的都是输入速度问题而已,而不是输入之后的理解速度问题。输入的速度再快,理解速度跟不上,又于事何补?有的时候有点想不明白为什么那么多人脑子里明明想着要提高 “阅读理解速度”,而实际 “阅读” 中却只关心 “速度” 而干脆忽略 “理解” 的重要呢?(也许是 “跳读、略读” 的习惯造成的?一不小心就把 “理解” 两个字给跳过去了,干脆没看着 …… 这就是很好的一个出于好意的不严谨建议最终带来恶果的例子。)

只看到表象,从未深入实质,是一切问题得不到解决的根源。阅读理解速度的瓶颈在于理解速度,而绝非输入速度。

“输入” 的方式至少有以下常见的四种:

  • 扫读:只用眼睛快速浏览文字(本质上来看是必然以遗漏一些信息为代价
  • 默读:在用眼睛浏览文字的同时脑子里有一个声音在 “说” 这些文字,并不实际发声
  • 唇读:在用眼睛浏览文字的同时嘴唇翕动 “说” 出这些文字
  • 朗读:大声把自己读到的文字说出来

现实生活中,没有人永远只用以上四种输入方式中的某一种 —— 无论是在读母语的时候,还是在读外语的时候;相反,大家都是在不自觉地根据需要选择输入方式。阅读内容对阅读者来说相对简单(即,阅读者的理解能力在这方面相对很强)的时候,更多的情况下都是采取 “扫读” 的方式;而内容难度高一点的时候,就会采用 “默读” 的方式;如果内容难度相对较高,那么就会自然地采取 “唇读” 的方式 —— 因为这样可以把速度放慢,以便有更多时间思考消化。所以说,“扫读” 也好, “默读”、“唇读” 也罢,都只是输入方式,且是各有用处的输入方式,根本不是什么恶习。如果学生相信 “唇读” 和 “默读” 都是恶习的话,他们实际上已经相当于 “三脚猫被砍掉了两条腿” —— 换句话讲,“雪上加霜”。

对于任何人都一样:阅读内容难度与阅读理解速度成反比,即,正在阅读的内容难度越高,阅读者的理解速度越低。而我们正在使用的输入手段(“扫读”、“默读”、与 “唇读”)必然会配合理解速度;于是,一旦阅读者开始使用 “唇读” 的时候,就说明此时正在阅读的内容难度已经达到一定程度,而在这样的难度之下,阅读者的 “理解速度” 已经小于等于 “唇读” 速度 —— 如果理解速度再差一些的话,阅读者还可能需要 “反复阅读” 若干次,甚至要返回之前的某一点(前一句、前一段、甚至前一页)才可能找到能让他迷途知返的线索。

而文字本身就是有声音的,只因为大多数人既不是聋子也不是哑巴。于是在理解文字的时候是不可能回避声音的。不妨自我审视一下自己的所谓 “扫读” 过程,就会发现脑子里的那个声音其实一直存在。本质上来看,“扫读” 的时候那个声音之所以有时 “断断续续”,其实只不过是因为在阅读的过程中 “跳” 过了一些 “即便不全读也能正确推测到的内容”;而那个声音只在 “读” 那些 “必须读到才不至于影响理解” 的内容 —— 也可能是句子、也可能是只言片语。再进一步,一个人但凡正常,那么他顶多可以刻意回避 “唇读”,但根本无法回避 “默读”。

大多数英语初学者在阅读一定难度的文本之时,他们的 “理解速度” 甚至赶不上 “朗读速度”。其实,类似 TOEFL 这种语言能力测试,应试者只需要做到 “理解速度” 与 “朗读速度” 相当,那么在考场上的时间就相当富裕了(而 SAT、GRE、GMAT 这几种考试对理解速度的要求相对来看就高出许多)。既然朗读训练能够提高文字理解能力,那么,朗读是提高阅读理解速度的有效训练手段 —— 尽管从感觉上来看并不那么直观。

4. 不必专门练习听力,朗读就够了

大量的朗读训练,可以使学生不必专门练习 “听力”。某种意义上,很多学生花费时间去专门练习听力其实非常荒谬。不聋不哑的正常人是没必要专门训练什么听力的,事实上也没办法专门练 —— 大家的耳朵构造是相同的,怎么练耳廓也不会增大,耳膜也不会变得更薄……

其实道理很简单,只要说得出,就能听得懂 —— 不管是哪一种语言。所以,只需要练说,而没必要专门练听。很多人所谓的 “听力不好” 其实是说得不好造成的,然而,他们舌本求末,就是不说,而后专门练听,这不是荒唐是什么?事实上,哪怕说得不好,也一样能够听懂。举例来说,我国有很多地区的人普通话说得并不标准,讲话掺杂着浓重的本地口音,甚至使用大量的本地特有词汇,但是,你遇到过他们之中的哪一个向你抱怨说中央电视台的新闻联播听不懂么?

这一点上体系外的培训机构显得更加荒唐,它们往往为学生配备专门的 “听力” 老师。作为商业机构,这种做法一点都不奇怪,很容易理解 —— 投其所好就有钱赚。可事实上那完全是在浪费学生时间,当然,浪费掉的还有学生的金钱 —— 可从另外一个角度上来看同样也是学生自愿浪费时间和金钱,完全是周瑜打黄盖。在这些培训机构里,我们从来看不到哪一个听力老师主张学生通过练习说而提高所谓的 “听力” —— 因为如果那么做的话,岂不是在抢口语老师的饭碗么?

很多 “听力” 老师鼓吹甚至神化 “听写” 训练的好处 —— 尽管他们并非有意欺骗,事实上他们可能真的很相信自己的方法是最有效的。但是,听写训练几乎是最浪费时间最无效果的所谓方法了。经常遇到学生这样的提问:“老师,我已经听写三个月了,怎么没有提高呢?” 这样的时候我就很迷惑,心里想:“你都已经用三个月时间完美地证明这个方法无效了,怎么还来问我它为什么无效?”

英语教学领域中,荒唐的 “方法” 要比医学领域中被吹得神乎其神的 “灵丹妙药” 多得多。因为现代医学领域中起码还有个双盲测试的方法来判定一种药物是否真的有效,可是英语教学领域中,很难运用双盲测试(或者类似的其它什么方法)来做有效性判断。然而,关于 “听写” 训练为什么无效,其实只需要用两句话(尽管可能不雅)就可以解释清楚:1) 听不懂写个屁嘛!2) 听得懂写个屁嘛!这么简单的事实,根本不用 “争议”。

事实上,Listening Comprehension 和 Reading Comprehension 一样,重点更在于 Comprehension,而非仅仅在于 Listening 或者 Reading。用耳朵听进来的东西,最终要理解了才可以,否则就没有意义。而所谓的 “练听力” 本质上来看是治标不治本的手段。

5. 朗读训练可以提高语言文字记忆能力

朗读训练会不知不觉地提高我们的语言文字记忆力。我们记忆人脸、记忆歌曲曲调、或者记忆文章段落的时候所使用的方法模式都是各不相同的。因为我们不可能一辈子只反复朗读同一个句子,或者同一篇文章,也因此我们必将遇到各种各样的行文模式、韵律和组合。而一定量的重复必然产生深刻记忆,于是,在大量的朗读训练过程中,会自然而然地调用我们各种可能用得到的记忆手段,比如模式的、声音的、文字的等等。

学习任何一门外语,我们最终都要能够做到用那一门语言自如地记忆篇章、转述大意。而这些都需要一个基本的能力,记忆力。学英语的时候,那就是英文记忆力。我在面试英文教师的时候,基本上只要求他们做一件事:随便背诵一段曾经熟读的篇章。换你是我,很快就会发现这么简单的一个要求会迅速地过滤掉大多数应聘者 ——大多数人竟然背不出任何 100 词以上的篇章。这一点基本的英文记忆能力都没有,怎么可能自如地运用英文呢?

多年的特殊工作经验,使我变成了 “考试机器”。很多人惊讶于我做阅读题的速度。过去参加 TOEFL 考试的时候,要求 55 分钟之内做完的题目我们可以在大约 25 分钟内做完。为什么呢?事实上,我们的阅读速度并不快,只不过,看一遍就能看懂,并且大致都记得住。于是做题的时候就会很快。一道题拿过来,看到 A 选项,就知道这个肯定不对,因为明显跟刚才看到的恰恰相反;再看 B 选项,马上就知道不能选,因为刚才读过的文章中没提到这个;再看 C 选项,就是它了,看起来只不过是原文的一句同意改写而已;这时候 D 选项甚至不用看了,因为这是四选一题目,已经有个正确答案,那剩下的必然是错的……

让我来描述一下为什么很多考生会觉得时间怎么都不够。事实上他们读得并不慢,只不过,读完了并不全懂,更谈不上记得住。等做题的时候,看到 A 选项,心想,刚才我好像看到过这个的,可是在哪儿呢?于是回到文章中去找,找啊找,文章又扫了一遍,可是竟然没有找到!于是就慌了 …… 事实上,他们的阅读速度很快,但就是无法做到完全理解,更谈不上有所记忆,于是,文章反复读了很多遍,竟然根本无从判断正确答案是哪一个。

TOEFL 考试是目前最权威的英语水平测试之一。现在的托福考试包括听说读写四个部分,无论是哪一个部分,都需要考试者拥有足够的英语记忆能力才能够获得高分。很多人托福听力考试成绩差的原因并不是因为他们 “没有听懂”,而是因为他们 “其实听懂了,但等听到题目的时候,已经想不起来刚才听懂的内容了”。记忆力对阅读成绩的影响刚才已经说过,那我们再来看看记忆力对说和写两个部分的影响。无论是说,还是写,这两个部分的考题中都有所谓的 “综合测试部分”,即,在听或读(或先听后读,或先读后听)之后根据刚刚输入的内容再输出,即,说或写。所谓的 “综合测试” 考核的一项重要能力是 “准确、全面的细节复述能力”,没有基本的记忆力,复述从何谈起?

如果参加的是 GMAT 之类的考试(这些考试本质上来看不是英语考试,而是逻辑考试,只不过用英语考而已),记忆力差的考生就更惨了。那些题目都有五个选项(而不是四个),每个选项都可能是长达三四行的复杂句,然后题目可能是这么问的:“请问以下 A、B、C、D、E 五个选项中,哪一个选项的陈述如果成立的话,那么文章中的观点会遭到严重削弱?” 没有起码的记忆力,这种题目如何才能做对呢?——想都别想。

我们很难记忆无意义、无关联的信息。比如,背下圆周率小数点后面的 100 位以上很难,相对来看很可能要比背一篇 200 字的文章难多了。一个人的文字记忆能力,很大程度上依赖他的文字理解能力。朗读的过程中,除了文字理解能力会潜移默化地提高之外,文字记忆能力也会大幅度提高。我们都有这样的经历,同一文章反复朗读很多遍,我们就会自然而然地把它背下来。这是因为 “读书千遍其义自现” —— 理解了之后就很容易记忆。而大量朗读不同的文章,实际上会有很多类似的 “模式” 在反复重复,于是,我们也相当于在不停地往我们的记忆库里潜移默化地保存信息。

反过来,一个人的记忆力同样也会影响他的理解能力。之前读过的信息如果记不住的话,就无法与后继输入的信息联系起来。信息之间无法建立足够的联系,那么就很难被理解。所以,记忆力的提高促进理解力的加强,同时,理解力的发展也会促进记忆力的发展。记忆力就是这样:记住的东西越多,记得住的东西就越多。一个人记忆力的发展空间取决于他现有的记忆力。而理解力也是如此,已经理解的东西越多,能够进一步理解的东西就越多,一个人的理解力的发展空间同样取决于他现有的理解力。

6. 朗读训练能够提高表达能力

朗读训练会提高一个人的表达能力,无论是说还是写。大量的朗读会使你不知不觉记住大量的表达法。越是常用的、越是必要的表达法,在各种文章中重复出现的频率越高,而通过大量地重复,这些表达法会慢慢刻在脑海中。按照心理学家的说法就是这些信息会慢慢从短期记忆区域移动到长期记忆区域,即,这些表达法会渐渐成为你的 “内嵌”(built-in)表达手段。

学习外语的时候,语法总是最大难点之一。英语中,有些名词单复数形式相同,而另外一些名词有特殊的复数形式;有些动词可能是及物动词也可能是非及物动词,如若它被当作非及物动词使用的时候,那么就要搭配一个恰当的介词;有些动词后面只能接 “ing” 形式,而另外一些动词后面只能接 “to do” 形式 …… 这些规则尽管在语法书中都被整理的一清二楚,但想通过阅读语法书记住这些实在是太难 —— 要不然怎么会有那么多人反复参加英语考试之后依然得不了满分,依然反复出错?而如若朗读过那些语法考点的类似例句,那么做题的时候就会感觉 “正确答案顺嘴”,“错误答案拗口”…… 而在平时说或者写的时候,就会自然而然地使用正确的方式,而非在自己都并不知晓的情况下 “发明了一种新的英语”。

朗读训练还会在不知不觉中培养练习者的语言文字韵律感。这方面,即便在我们母语的正规语文教育体系中,都强调得太少。我们所拥有的对母语文字韵律的了解,几乎全部不是从学校里刻意学来的(因为学校里很少刻意去教),而是在朗读中不知不觉习得的。我们在成长过程中,或主动或被动地朗读过许多的课文(通常文字确实比较隽永),许多的诗歌(现代诗、唐诗、宋词等等),很多人就算没有朗读过太多的文章、诗歌,但起码会唱许多流行歌曲(某种意义上,大多数流行歌曲的歌词为了能够朗朗上口,也相当追求韵律),所以,人们在使用母语的时候,好像 “不用教、不用学、不用练” 就 “自然地” 拥有一定的语言文字韵律感。

如果你在出版社做过哪怕一两天文字编辑就知道有很多人写出来的文字根本没法读,全然缺乏文字的哪怕最基本的韵律感,而作者显然并不知道自己的文字究竟有多么地拗口 —— 能给出版社投稿的作者往往都自认为自己的文字写得相当不错 …… 这就是母语朗读训练太少而造成的恶果。而朗读训练会使一个人不知不觉避免这种尴尬,俗话说,“熟读唐诗三百首,不会作诗也会吟”,某种意义上说的也是这个道理。

7. 朗读训练可以提高语言文字模式识别能力

朗读训练会提高一个人的语言文字模式识别能力。正常人在各方面都有很强的模式识别(pattern recognition)能力。比如,能在几十张脸中迅速识别出哪些是陌生的哪些是熟悉的 —— 哪怕看到的并不是百分之百清楚、甚至可能是多少有点扭曲的图像。心理学家们早就注意到英语使用者可以瞬间分辨出 “indicate” 和 “intricate” 这两个词,尽管这两个词只有一两个字母不相同(第一个单词由八个字母组成,第二个单词由九个字母组成)—— 能够做到这一点就是因为他们在不由自主地运用他们的模式识别能力。

当我们使用语言的时候,无论是听说读写,都不是一个字一个字单个输入而后再组合而后再进行处理的;实际上,我们往往是 “整块处理”,即,只要能用模式识别就用模式识别。

为什么我们听到 [le – m – gəu] 能明白那是在说 [let him gəu]?那不是我们一个词一个词识别(let + him + go)之后才进行理解而后得到结论的。那是日常生活中我们自己就说过很多遍,也听过很多遍,所以 “Let him go” 早成为一整个 “模块”,并且,在听到这个音流的过程中,还有可供辅助理解的场景存在,所以才显得我们瞬间已经领会。

再比如,当我们说 “I've lost my key!”(“我把钥匙弄丢了!”)的时候,我们不是用这种这样处理的:

  • I(我……)
  • 've(“have” 要和 “I” 连起来,于是 have 就要缩略为 ‘'ve’…… 钥匙是刚刚丢的,所以应该用现在完成时……)
  • lost(“lose” 是个不规则动词…… “lose” 的过去式和过去分词都是 “lost”……
  • my(那个钥匙是我的,而不是别人的……)
  • key(我丢的是钥匙,不是别的……)

我们更可能是这样处理的:

I've lost my(刚发现钥匙不见了;之所以这里可能有停顿,是因为正在找钥匙……)key!

也就是说,“I've lost my” 被当作一个单元,而 “key” 是另外一个单元。日常生活中,“I've lost my...” 其实不知道已经说过多少遍,比如:

  • I've lost my key.
  • I've lost my money.
  • I've lost my wallet.
  • I've lost my ticket.
  • I've lost my job.
  • ...

而我们其实也不知道听别人说过多少次类似的话:“I've lost my...”。所以,当我们听到别人说 “I've lost my...” 的时候,脑子里的反应是 “What did you lose?”,而不是:

  • 听到 “I” 而后想,“你 …… 怎么了?”
  • 听到 “'ve” 而后想,“哦,你说的现在完成时的什么动作呢?还是你 ‘有’ 什么?”
  • 听到 “lost” 之后想,“哦,原来是丢东西了啊,这个不规则动词你居然用对了……”
  • 听到 “my” 之后想,“知道,你丢了你的什么东西啊,我还以为是把我的什么东西弄丢了呢……”
  • 而听到 “key” 之后想,“哦,原来是你刚刚把钥匙弄丢了啊!”

(就算真的如此想,那想的速度也应该快到我们都不知道在这么想的地步。)

以下的两个例子可以用来演示模式识别在语言应用中的重要性。

绝大多数中国人其实无法详细地解释出 “编” 和 “织” 这两个汉字的异同之处。某一个层面上,这两个字的意思是如此相同,乃至于拼起来 “编织” 还是那个意思。可是这两个字的用法上并不完全相同。我们可以说某个女孩子 “她编毛衣”,也可以说 “她织毛衣”;我们可能说某个男孩子 “他编故事”,但是我们却绝对不会说 “ 他织故事”!——换言之,哪怕做不到详细地解释出 “编” 和 “织” 这两个字的异同之处,但是却绝对不会用错。合理的解释是,母语使用者在过去曾经遇到过大量的 “编毛衣”、“织毛衣”、“编故事” 之类的组合,但是却从未遇到过 “织故事” 的组合,于是潜意识里就不存在这个 “模式”。

以英语为母语的人也是如此 —— 事实上所有人使用语言的时候都应该如此。大多数人(少数语言学教授除外)只能清楚地说出 “important” 与 “essential” 之间的区别是程度上的差异,即,“essential” 相当于 “very important”。“essential” 这个单词有个特征 —— 它所修饰的通常不是人 —— 就是大多数人说不出来的了。但是,以英语为母语的人可能会说 “He is an important teacher in my life.”,但轻易不会说 “He is an essential teacher in my life.” 以英语为第二语言的人却常常犯这样的 “错误”。

母语使用者知道关于自己母语的很多自己并不知道自己知道的知识 —— 往往被不知所以然的人称之为 “母语直觉”。而这样的知识的获得某种意义上只能靠 “大量应用” 以及 “日积月累”。而朗读对第二语言习得者来说,更可能只能在缺乏环境的情况下训练自己的语言模式识别能力。于是,朗读就几乎成了唯一可依赖的手段。反复朗读的过程中,很多 “模式” 就会不由自主地刻在脑子里,慢慢转化为自己都不知道自己知道的知识 —— 那种我们的英语老师常常闪烁其词的 “语感” 就自然而然地养成了。

< 第三章: 语音 第五章: 词典 >

File: book/chapter7.md

[Binary file]


File: book/chapter8.md

第八章 叮嘱

1. 速成绝不可能

中国学生总觉得自己已经 “学” 了十多年英语,一想到这么多青春年华的逝去,就觉得自己特别可怜;转念一想,“可怜” 这个词是贬义,于是开始用 “悲壮” 形容自己。可事实上,真的学了那么多年吗?那么多年里真的学了吗?不问倒罢了,一旦正视这个问题,就知道过往许多年里的所谓 “学” 相当禁不住推敲。

其实大多数学生每天投入到英语学习的时间并没有多少。也许某段时间昏天暗地地突击,可是从未有过长期持续的努力 —— 如果有的话,哪怕很差的方法都会发生一定的甚至是很大的正面作用,早就不再为英语苦恼了。

许多年前,我在网上读到 Peter Norvig 的一篇文章,“Teach Yourself Programming in Ten Years”。这位作者认为人们去买那种诸如 “7 天自学 Java 语言” 之类名字的书是很无知的表现。他认为用十年时间学会程序设计非常值当。

再看另一种类型的领域。披头士乐团似乎是在1964的Ed Sullivan 剧场表演突然地火起来并成为第一乐队的。但其实他们从 1957 年开始,就在利物浦、汉堡等地的小型俱乐部表演。虽然他们很早就显现强大的吸引力,但他们决定性的成功作品 Sgt Pepper 也到1967年才发行。Samuel Johnson 则认为或许还不止十年才行,他说:任何领域的卓越成就都必须用一生的努力才能取得; 稍微低一点的代价都是换不到的。Chaucer 则感叹道: “生命如此短促,学习技艺却要这么地长”

这两段引用的是徐侑的译文

Peter Norvig 写这篇文章(2001)的几年后,2008 年 11 月,Malcolm Gladwell 出版了他那本畅销书《Outliers》,在这本书中 Malcolm Gladwell 把这 “十年” 换算成了更为精确的 “10000 小时” —— 想要出类拔萃,就要努力至少一万小时。让我们来算一下,一年三百六十五天,如果每天花在学英语的时间持续保持在三个小时,那么九年多一点点就能够积累 10000 小时的 “驾驶里程”;如果每天 4 个小时,则七年不到的时间就够了。如果每天 6 个小时,大约四年半就够了。

如果你自己正在为英语学习所苦恼,不妨扪心自问,自己在过去的许多年里,持续努力的时间究竟有多久呢?病根就在这里。另外,请格外注意 “持续” 两个字。突击一个月不到,然后半年无消息,则相当于前功尽弃,毫无累积。

最近几年,我的学生中有很多高中生在托福考试中获得极高的成绩 —— 很多都在 110 分以上。按照ETS的官方数据,110 分的百分比等级(Percentile Rank)是 96.8%,即,每次考试中大约只有 3.2%的人成绩在 110 分以上。以我的经验,在大学生中获得 110 分以上托福成绩的人数感觉上要比高中生少很多。某种程度上我只能用我自己的经验去审视这个现象。我问自己的问题是,为什么我教的东西是一样的,但高中生却能获得比大学生更高的成绩呢?

想来想去,最合理的解释也许是这个:高中生学习的时间更长。高中生还非常习惯上午上四节课,下午上四节课,晚上回家再做两个小时的作业。而反过来,大学生却不是如此,很多大学生一天要是学上两个半小时,就觉得自己已经很刻苦了!大学生可做的事情太多,要参加朋友的生日聚会,要谈恋爱,要参加各种活动,等等等等 —— 他们太 “忙”,像李宗盛描述的那样 “忙忙忙,忙是为了自己的理想还是为了不让别人失望?” 某种意义上,高中生能够获得比大学生更高的托福考试成绩 —— 这个现象本身就在证明托福这种考试考的不是智商,当然也不是智慧(生活经验在这里没有任何用处)。最终,在这样的考试上,谁花费的时间越多,谁就可能具备更多的优势。

正如之前所说的那样,想要改变生活,就要改变观念。从现在开始,请牢牢记住,“速成绝不可能”。如若真的相信这个简单的道理,就不大可能懈怠,因为相信这个道理就等于相信 “一切都靠积累”,而笃信这种简单道理的人怎么可能偷懒,怎么可能懈怠?

而真正的关键又在于,用英语还真是几乎所有技能中最简单的 —— 因为它真的根本就不需要 10 年时间。实际情况是,只要坚持 6 个月,就肯定渐入佳境。这些年我教过的无数高中生向我清楚地证明了这点 —— 而后面的文字里,我还有进一步的说明。

2. 英语不能只学不用

大多数中国学生学不好英语的关键在于他们 “学得太久,用得太少。” 对大多数普通人来说,英语只不过是一种工具,或者说复杂点,英语是一种技能。如果再严格点,对大多数普通人来说,英语只能是一种工具,最多只能是一种技能。毕竟只有少数人会成为语言学家或者文学家(竟然使用第二语言)—— 因为很多人尽管梦想成为语言学家但最终大多无疾而终,就好像很多梦想成为画家的人最终会沦落为画匠一样。

人们常常假定所谓的技能都必须熟练到一定程度才可以安全应用。这个假定在很多情况下确实是正确的。比如,如果你想以医生为职业,那么你必须通过考试获得行医资格之后被允许救死扶伤;如果你想以律师为职业,那么你也必须通过考试获得律师资格之后才可以去匡扶正义。哪怕再简单一些的技能也可能如此,比如,你买了一辆车想将其作为代步工具,那么就必须通过考试获得驾照之后才被允许开车上路 —— 无证驾驶是违法的。

然而这个假定并不适用于英语(或者说,其他的第二语言)这项技能的习得以及应用。司机、医生、律师需要通过考试才能应用所需技能的重要原因在于这些技能的应用如若出现差错很有可能会对他人造成伤害 —— 甚至可能是无可挽回的。但是, 英语这项技能的应用在大多数情况下很难对他人造成伤害。你英文发音再难听,听的人也不会因此晕死;你英文语法错误再多,读的人也不会因此疼痛;别人对你说英文你没听懂或者给你看英文你没读懂,若非极端情况,你也不会因此就从此真的无颜见人。

英语这项技能并不是一定要学好到一定程度才可以使用的。甚至,从一开始就可以,也应该直接使用。但我们并没有。对很多中国学生来讲,其实学了这么多年英语,倒也不是从来都没用过,只不过,用在一个比较荒谬、离语言的真正应用八杆子打不着的一样东西上 —— 考试。原本世上从来就不曾存在过任何一个真正 “公平、合理、准确” 的考试,所有的考试都有一定程度的荒谬成分存在。而国内的英语考试更是如此 —— 这事实几近于公理,谁都知道,乃至于无需进一步证明。

第二语言习得与母语习得有很大的不同。母语习得过程中,我们是先会 “听”,之后才会 “说”,听说都已经很熟练了才开始 “读”,而 “写” 是最后习得的。由于 “写” 本质上最需要思考能力(另外一个更加难以学会使用的东西),所以事实上,很多人(比例可能高得惊人)至死都没有真正学会 “写” ——他们顶多 “识字” 而已。第二语言习得过程中,不仅这种自然的顺序被打乱了,对很多人来讲,听说读写哪一个都从来没有真正习得。

对第二语言来讲,大多数人会很自然地先会 “读”,再会 “听”,之后很难会 “说”。至于 “写”,母语的都没弄明白呢,第二语言就不用提了。但是,事实上, “读” 已经是语言作为一种工具最为重要的功能了(关于过分强调口语的重要性,嘲笑 “哑巴英语” 的做法究竟为什么多少有些荒谬,我会写另外一篇文章),在第二语言是,“识字” 本身已经足够,“能言善辩” 当然很好,不过也算 “锦上添花” —— 就算没有花,也已经相当锦绣了。我们常说,大量的机会本质上都来自于信息不对称 —— “你知道的我不知道,所以我只好付费给你换取信息。” 那么,如果用英文可以获得更多的信息的话,是不是已经格外划算了呢?(还记得之前说过的 “其实连哑巴英语都并不那么坏” 么?)

3. 背单词不是学英语

一不小心就把 “背单词” 当作英语学习的全部,这是中国学生学英语最常见的缪误。背单词并不等同于学英语,它原本只应该是英语学习的一小部分内容而已。在国内,几乎每个学生都买过若干本词汇书。我常常见到学生的书架上有高考词汇书、四级词汇书、六级词汇书、考研词汇书、TOEFL 词汇书、SAT 词汇书、GRE 词汇书 …… 有时候我禁不住问,“咦?你怎么就不买一本好词典呢?” 得到的回答竟然是 “哦,太贵了……” 很难弄明白这些学生究竟是怎么想的。

其实倒也不是猜不出来。当学生看不懂一篇英语文章之时,他所能体会到的最直接的尴尬来自于让他们无能为力的 “大量生词”。于是就自然而然地认为自己的最大问题在于 “没有足够的词汇量”,于是希望通过背一本词汇书迅速提高词汇量(请注意这再次出现的急于求成之心理)。可问题真的就如看起来的那样吗?

如果我们把每个单词比喻成一块的砖头,而把一篇文章比喻成一栋的房子的话,那么就很容易明白文章并不只由词汇构成 —— 除了砖头之外,还要有很多其他材料,最容易想到的起码还有钢筋和水泥。并不是你比别的人拥有更多的砖头就意味着说你肯定能够盖出比别人更大的房子;如果你只有砖头而没有钢筋水泥的话,你有的只不过是砖堆而已。实际上,我们都宁可砖头少一点,但一定要有足够的钢筋和水泥 —— 这样的话我们就能造出房子。哪怕因为砖头没那么多所以房子小了一点,但是,毕竟还有房子可住,比既不中看又不中用的砖堆好多了吧?我真的很喜欢这个类比,可以把事情讲得特别清楚:

An essay is written with words just as a house is built with bricks, but merely a collection of words cannot be called an essay any more than a pile of bricks can be called a house.

在分辨哪一种背单词方法最好(后文会有详细论述)之前,首先要明白仅仅背单词肯定是不够用的,甚至是全然没用的 —— 只有砖头没有钢筋水泥等材料还不如什么都没有,因为既盖不了房子又干着急。

其实,各种各样背单词的 “神技” 几乎都没有多大用处。最好的、最有效的是最朴素的方法:通过大量阅读积累词汇,通过频繁使用消化词汇 —— 这也是不二法门。

4. 为了学好外语,绝不能忽视母语

先请读者做一道 TOEFL 词汇题,然后再讲道理。

The second possible benefit of communal roosts is that they act as "information centers." During the day, parties of birds will have spread out to forage over a very large area. When they return in the evening some will have fed well, but others may have found little to eat.

The word "forage" is closest in meaning to which of following?

text
(A) fly
(B) assemble
(C) feed
(D) rest

一个人的外语能力往往受限于自己的母语能力。第二语言学得再好,也很难比母语更好。即便是那些 “天生” 的多语使用者,在生活过程中必然会出现某一种语言使用得比其它语言更多的情况;于是,最终那个被使用得最多的语言将成为他们的 “主导语言”(The dominant language);而其后,这些人再去学习其它语言的时候,能够达到的程度基本上会受限于他们 “主导语言” 的水平。其实,更加准确地来说,之所以一个人能够使用的众多语言之中母语使用能力总是处于最高水平,本质上是因为母语被使用的机会最多,套用司机的术语就是,母语的 “驾龄” 最久。语言与任何其他技能一样,越用越熟,熟能生巧,巧则可夺天工。

甚至语言应用的各个方面(听、说、读、写)都是如此。我个人的经历来就是很好的例子。我是朝鲜族。小学二年级之前,我读的是全韩语授课的学校,那时候,尽管我能同时说汉语和韩语两种语言,但显然韩语的读与写要强过汉语的读与写,而听与说的能力在两种语言上很难看出太大差异。后来转学到全汉语授课的学校,没多久情况就逆转了过来,汉语的读写能力远远强过韩语的读写能力。原因很简单,用汉语读写的东西远远超过韩语读写。在全汉语授课的环境中不到两年的时间,由于长时间不说韩语,我甚至出现了相当长一段时间的韩语 “失语” 现象 —— 尽管依然能够听懂韩语,但就是说不出来(这种现象在双语使用地区往往非常普遍)。直到初中的时候全家随父母调动工作搬迁到延边朝鲜族自治州之后,由于必须说韩语的场合多了起来,几个月之内开始慢慢恢复,直至可以像过去一样流利地说韩语。许多年后在新东方教书七年,由于工作的需要,几乎每天都在长时间大量阅读英文资料。三五年下来,可以明显感到的是英文阅读能力开始慢慢超过中文阅读能力,但是说与写的能力还是英文远不如中文,道理也很明显,就是各方面的使用量各不相同而已。在离开新东方之前的几年里,教授的是作文,每天讲啊讲的同时也在写啊写,英文写作能力渐渐超过中文写作能力。而最近几年,每天都在写博客,能够清楚地感觉到中文写作能力在不断提高(每天都在进步所带来的感觉往往并不是沾沾自喜而是暗暗自卑 —— 因为每天都在进步很可能说明另外一个问题,那就是,之前实在是太差了),再次超过英文写作能力。现在,我的英文阅读能力最好,中文听说写能力次之,韩文的听说读写相对最差 —— 最差的是韩文的写作能力,几乎二十多年没有用韩文写过东西了 …… 一个人语言使用能力的 “用进废退” 有多么明显,由我的个人经历可窥见一斑。

然而,对于大多数人来说 —— 大多数人最初只是单语使用者 —— 无论如何都是母语使用能力最强、母语使用频率最高(无论听、说、读、写哪一方面)。而当我们运用语言汲取知识,交流经验,沟通讨论的时候,连带着语言一起使用的还有很多其他能力,比如,观察能力、概括能力、转述能力、逻辑能力、语言组织能力、换位思考能力,甚至肢体语言的运用能力等等。这些能力会自然地与语言文字运用能力交织在一起完成其功用。当我们使用母语的时候,这些必须与之搭配使用的能力会自然而然地被调用,进而各自的运用技巧会在不断的实践中被打磨甚至升华。与此同时,这些能力的提高会反过来影响母语语言文字运用能力的提高,它们之间相辅相成。

学习外语的时候,常常能观察到两个不同的人,即便智商大致相同,也好像花费了同样的时间精力却成效大不相同。最合理的解释就是两个人所拥有的上文提到的那些其它能力之间存在着巨大的差异,而这些能力会限制语言能力的习得与发挥。

很多中国学生醉心于背单词(其实,背单词是英语学习过程中最为简单的一件事情 —— 尽管大多数人不这么认为),可是他们之中的很多人并不知道,自己背单词感觉那么难的重要原因之一在于他们的母语词汇量就不足够大。根据阅读量、以及主动阅读(active reading)经验积累的不同,每个人的词汇量,以及每个人能够熟练使用、明晰分辨的词汇量都各不相同,往往差异巨大。如此说来,相对于那些母语词汇量大(能够熟练使用、明晰分辨的词汇量同样也相对更大)的人来说,他们可能在阅读中见到更多他们在母语中就没用过甚至干脆没见过的词汇,所以他们相对会遇到更多 “几乎无法逾越的” 阅读障碍;而在背诵单词列表的时候,他们也相对面临更多的困难。

我在长期讲授 TOEFL 作文的过程中,最常观察到的现象是,很多学生写不出作文根本不是英文问题 —— 因为事实上,那些作文题目尽管貌似简单,但是实际上很可能就算让他们用中文写也不一定写得出来。更多的时候,他们不是不会写英文,而是干脆没什么东西可写,哪怕让他们用中文也一样没什么东西可写。老外的文章并不是因为辞藻华丽句式复杂才值得看(任何文化都一样 —— 包括中文世界 —— 讨厌 “金玉其外败絮其中” 的文风),而是因为好的文章简洁、有效、朴素、具体、生动(想想看,在中文世界里,这样的文风不也是被认为最佳的么?至少孙犁先生就这么认为。)平日里写中文文章就是空话连篇的人,如何教会他用英文写出 “using clearly appropriate examples or details to demonstrate his ideas”(使用清楚恰当的例子或者细节论证他的观点)的文章呢?(这一条几乎是所有留学考试——TOEFL、GRE、SAT、IELTS……——中的作文部分的最重要评分标准之一)

这甚至不是中文问题,而是思考习惯问题。我常常调侃很多学生写文章,“for example” 的时候只能 “for 一个 zample”(“for example” 的谐音),甚至很多时候连一个都没有 —— 这是平日里没有带着问题观察记录的习惯造成的,与语言(无论是中文还是英文)甚至没有任何关系。

大多数人没有写作的习惯。于是,很多人根本就没有斟词酌句的经验。但是,很容易想象,一位在使用母语时经常斟词酌句的人,对各类同近义词之间的微妙差异就相对那些没有经验的人可能更加敏感。所以,这些人在学习外语的时候,同样可能会自然而然地更多关注各类同近义词之间的微妙差异,并且可以更加轻松地掌握。

同样的道理,没有大量朗读经验的人(很多人即便用母语也很少朗读),往往对语言的韵律并无恰当的敏感。很难想象他们在学习外语的时候却可以做到突然开始格外关注文字的韵律。而那些对母语的文字韵律就很敏感的人,在学习外语的时候,相对更有机会习得更加地道更加自然更加韵律感十足的语言文字用法。

大多数人事实上缺乏足够的转述能力(新 TOEFL 考试中很重视这种能力的测评),于是,我们身边只有少数人能做到读过一本书或者看过一个电影之后有声有色地讲述给他人,进而勾起他人一睹为快的欲望。我猜,差不多也只有这少数的人如果花费时间精力习得外语的话,最终同样也可以做到用英语做同样的事情达到同样的效果。

阅读母语的时候不注重上下文联系的人,阅读外语的时候往往更无暇顾及上下文联系(因为有很多生词需要处理,很多不熟悉的语法结构要解析),乃至于更经常 “阅读但不理解”。

刚才那道词汇题的考点是 “forage”,市面上的词汇书里这个单词取的往往是字典里的第一个意思,“名词,草料、干草”。可是,这道题下的四个选项却都是动词,于是 “forage” 在文章中的词性就只能是动词。那它是什么意思呢?(很多人就是这样被 “词汇书” 给害惨了。)背过这个单词的人也许会颤颤巍巍地猜想 “草料” 被名词动用,那就应该是 “feed” 的意思。恭喜你!做对了!

可是这样能够做对这道题目的人究竟有多少呢?看看数字就知道了。最终做对这道题目的人只有 35%。把那些靠乱猜做对的人数去掉的话,就相当于仅有 26.25% (=35% X 75%)的人凭实力做对。可实际上,“forage” 并不是什么所谓的 “高难词汇”,大学英语四级词汇大纲中就有这个单词,在每一本四级词汇书的 “F” 列表里都有这个单词。换言之,TOEFL 考生里背过这个单词的人应该远远超过 26.25%这个比例才对。

然而,就算不认识 “forage” 这个单词,能不能作对这道题呢?让我们看看上下文。前面那句句话说,“白天的时候,鸟们出去干了件事(至于干什么了,暂时不知道)”(During the day, parties of birds will have spread out to forage over a very large area. ),后面那句话说 “晚上它们回来的时候,其中的一些就吃饱了。”(When they return in the evening some will have fed well)现在,请听题 —— “它们干什么去了?” 这还用认识那个单词么?连脑筋急转弯都算不上,答案是 “吃” 去了么!大多数考生(至少七成以上)完全无法想象出题者有多么地体贴:出题者担心考生认不出 “fed” 是 “feed” 的不规则过去分词,还特意在后面再补上一个句子 —— “而另外的一些鸟几乎没吃着什么”(but others may have found little to eat.),用来说明 “fed” 其实就是 “eat”!于是,题目要求考生在四个选项中找一个 “fed” 和 “eat” 的同义词,那就是 “C” 选项,“feed” ——有什么理由做错这道题呢?奇怪。

讲解过后,读者就可以明白这道题竟然有七成以上的人做错有多么荒唐了吧?可是统计数据告诉我们这就是冷冰冰的事实 —— 七成以上的人完全不具备上下文联系能力。

七成以上。如果你觉得这个比例很惊人的话,相信我,1) 你并不孤独;2) 你又错了。让我们来审视一下我们自己在母语世界里的表现罢。

“学而时习之不亦说乎?友朋自远方来不亦乐乎?人不知而不愠不亦君子乎?”

——《论语》(学而第一)

这三句话应该如何理解呢?目前中学课本里的解释,基本上沿袭宋代学者朱熹(1130—1202)先生的解释,这三句话的译文大约是:

孔子说:“学了又时常温习和练习,不是很愉快吗?有志同道合的人从远方来,不是很令人高兴的吗?人家不了解我,我也不怨恨、恼怒,不也是一个有德的君子吗?”

钱穆先生(1895—1990)在他的《论语新解》中对这几句话的解释其实依然沿袭朱熹,并没有什么新意,只不过是 “新译” 而已。

先生说:“学能时时反复习之,我心不很觉欣畅吗?有许多朋友从远而来,我心不很感快乐吗?别人不知道我,我心不存些微怫郁不欢之意,不正是一位修养有成德的君子吗?”

两千多年的时间里(直到今天也一样),这种解释一直占据主导地位。但是南怀瑾先生(1918 年—)在他的《论语别裁》里提出了异议(也许他并不是第一个)。关于南怀瑾先生的具体解释(南怀瑾先生对这三句话的解释超过三千字),细节上我个人也有不同意的地方。比如,我不认为 “友朋” 中的 “友” 字是用来表示 “有” 字的借用字。“友朋” 就是一个词,表示 “志同道合的人” 或者是能够在某一件事上 “能与你做到心领神会的人”。然而,对一段写于两千多年前的话又怎么可能每个人都理解得全都一样呢?

可是关键在于南怀瑾先生认为这三句话不应该是各自孤立的,而应该是相互关联的;而之前的朱熹先生与钱穆先生全然不顾这三句话之间的联系,任凭这三句话被理解的七零八落。仅从这一点上来看,南怀瑾先生要比朱熹先生和钱穆先生拥有更好的阅读理解能力。理解文字的关键在于探寻文字之间的联系,文字互不关联就很难存在任何真正的意义。所以,我认为南怀瑾先生的解释要比朱熹或者钱穆的都要好。

不得不承认,能够做到像南怀瑾先生那样阅读并理解文字的人确实不多。但,某种意义上这是原本不应该的事情。阅读的时候要联系上下文,这不应该是很自然的么?当然应该。这是很难的事情么?当然不是。那为什么很少有人做到?估计只不过是因为大多数人最初的时候没有养成好习惯而已。纠正难不难呢?以我的经验来看,很简单 —— 甚至与智商无关。

我们的思考能力受到自身经历的局限,与此同时,我们未来的经历某种意义上取决于我们今天的思考能力。于是,我们往往一不小心就掉到死循环之中。不夸张地讲,绝大多数人的所谓 “悲惨命运” 其实就是这么造成的。举例来说,在一个恶劣的生活环境中成长的人更可能因其灰暗坎坷的经历而养成消极的人生观,信奉 “人为财死鸟为食亡之类” 的社会达尔文主义信条,从不相信任何人,做事从来都是不择手段;而他的这种人生观又会进而影响他生活中的每一个决定,最终注定遭遇更加暗淡的结局。追求速成的人某种意义上也是这样的。过去的生活经历从未让他有机会体会积累的好处。所以他们根本就没有积累的动力和愿望,在他们看来 “速成”、 “捷径” 才是正途。而正因为他们的这种想法,他们的结果往往是到头来才觉一场空。可是时间已经流逝,能够用来达成愿望的时间更少了,于是就更希望能够找到捷径,能够速成了。

同样的道理,我们的外语学习能力受到我们母语学习经历的局限。把母语修炼得更好,外语才可能学得好用得棒。所以,我常常建议我的学生,每天都要留出一定的时间(比如一两个小时)阅读好的中文文章。像那些中文系的学生一样,常常要从文章中挑出一两个精彩的句子,揣摩作者的立意、用意、选词技巧,甚至韵律的把握,而后反复诵读。潜移默化地提高自己的母语语言文字应用能力。某种意义上,一个人的思考能力,很大程度上受他语言文字理解能力、应用能力的局限。甚至有学者曾经断言,一个人少年时期的阅读习惯将伴随他的一生 —— 其实这种看法并不极端,某种意义上,我们每天都能看到很多人现在的生活在他很小的时候早就注定了,只不过他们自己并不自知而已。所以,适当提高一下自己的阅读难度是有必要的。从这个意义上来讲,读《读书》杂志就比读《读者》杂志更加划算,而哪怕读读《读者》杂志都比只看言情武侠小说或者《知音》之类的杂志不知道要强出多少倍。当然,以上的看法只针对在意自己思考能力的人有意义。很多只在意当前阅读快感而不在意自己未来收益的人(这也许也是一种生活策略)就可以忽略以上的建议,自行其是就好。

李敖先生成年之后从未离开过台湾,即便他口语发音很差,但他用英文写的文章却漂亮得很。林语堂先生的英文文章远比中文文章更加深邃优雅。钱钟书先生的英文可以让很多牛津剑桥的教授自卑。某种意义上,我认为这些高人很可能并非拥有超人的智商才能做到如此令人惊叹。更可能是因为他们本身母语就用得过人若干等。他们自己就是语言大师,于是对语言文字的方方面面都有过人的感受、认知、敏感和心得。于是,他们哪怕花费与常人相同的时间精力去琢磨外语,也必然使常人望而兴叹、仰之弥高。更何况,这些人习得母语的时候就相对于常人花费了更多的时间精力,拥有更多的经验技巧,于是,他们在习得外语的时候,所需要耗费的时间精力自然而然就比常人更少(但他们过往的习惯会使得他们又自然而然地投入相对常人更多的时间与精力);与此同时,他们通过运用(在母语习得中)已获得的经验技巧还会使那些经验技巧更加高超,于是他们的外语水平自然会使常人只能远远地望其项背而终生不得。

人们特别容易高估自己,绝大多数成年人对自己的母语水平过度自信。他们以为自己的母语水平很高,却忘了另外一个事实:很可能他们的母语水平仅仅处在对母语使用者来说只不过是够格的级别上。只不过,大多数成年人从学校毕业之后(按照我们的教育体系教学内容设置来看,更可能是高中毕业之后)不再被强制参加各种语文考试,不再有机会因考试成绩差而自卑,于是自然而然地认为自己的语文水准已经 “相当高” —— “总比中学生强吧?” 他们这样想,可事实上还真的不见得。多少本科毕业生(甚至包括相当部分的研究生、博士)走入社会之后,竟然写不出一份像样的租房合同,或者竟然不能够完全读懂自己所签写的雇佣协议。很多人听人讲话、读人文章之后常常断章取义,其实并非出自故意,只不过是文字理解水平太差乃至于经常 “听不到”、“看不到” 一些重要内容而已。不妨想像一下,绝大多数人(这个比例绝对会超过 99%)无论多么认真地写一篇文稿,无论自己反复修改过多少次,能够正式出版之前,拿到编辑手里之后 “一字都不需改动” 的可能性几乎是零 —— 更可能的存在着一些有意无意的错别字、或隐蔽或明显的语法错误、自以为是的表达等等,往往需要另外一个人反复推敲才行。很多人忽视母语的修炼,像鸵鸟遇到危险时只顾着把头埋起来一样一头扎到英语学习中去,其实不见得是有意而为之,更深层次的原因很可能仅仅是对自己母语水平的错误估计。

这么看来,语言学习要比健身难多了。大多数人只要能做到坚持三年,每周至少三天去健身房锻炼两个小时,就可以塑造出魔鬼身材,男人雄壮,女人窈窕。当然,这只有万分之一的人做到(补充数据根据)。然而,语言的学习却需要很多知识技能的支撑,而这些知识技能也需要耗费大量的时间精力去获得、去打磨。这些其他知识技能的积累反过来又会促进语言的习得、促进语言应用能力的提高,它们之间相辅相成。可见语言学习有多难 —— 也就是说,不明就里想要速成只不过是幼稚造就的幻想而已。

有一次我到天津遇到一位出租车司机。他知道我是英语老师之后,说道,“现在是不是英语老师赚得很多啊?” 我说 “真的一般般……” 我没有撒谎,在这个国度靠教书是赚不了大钱的,只不过,赚的钱比较干净而已。他接着说,“你看我们开车的,唉,可怜着呢 …… 没办法呀,上学的时候不懂事儿 …… 哎,你说,从现在开始,我就让我儿子学英语,别的都不学了,只学英语,那是不是肯定学得比别人好啊?” 这位司机显然不是开玩笑,我也想很认真地回答他,可是我知道我很难短时间内给他讲清楚,只好说,“应该是吧……” 我知道他要是真的让儿子那么做的话,其一,他儿子就算竟然真的听话也根本做不到;其二,就算真的做到了也不会有好的结果;而我知道我这种敷衍不会害到任何人,因为其三,他儿子根本就不会听他的 —— 谁会愿意做那么无聊的事情呢?

所以,某种意义上我总是觉得如若某个人能把外语学得很好的话,那么这更归功于他的小学语文老师多于他后来所有的英语老师。(当然,更多人的母语语文老师其实是自己 —— 因为实在没遇到过好老师……)

5. 十分钟重修语文

这真是异常吊诡的事情:任何一种体制下的教育制度都在 “写作” 方面无能为力 —— 语文教育是如此地苍白无力,乃至于各个国家的教育者都沮丧地发现年轻一代至少有半数在接受所谓的 “高等教育” 之后竟然连基本的 “阅读能力” 都不具备。这是个 “十分钟教程” —— 让我们重修一下语文。人人都会写字,人人都有话可说,人人都应该能够写好文章;在这个文字发表空前容易的年代,文字更有力量。

第一分钟:词汇(Vocabulary)

最好换个角度重新认识词汇。名词是干什么的?名词是用来记录你所能够感知的事物 —— 管它是抽象的还是具体的。形容词是干什么的?你用形容词来记录你对你能够感知的那个事物的感知。动词呢?动词用来记录你能够感知的那个事物所发出的动作。那么最后,副词呢?副词修饰动词的时候,是用来记录你对你能够感知的那个事物所发出之动作的感知;副词用来修饰形容词的时候,是用来记录你对你能够感知的那个事物的感知的感知。(这一分钟的内容看起来比较拗口,只要能做到对这些文字断句准确,理解无误,那么仅在一分钟之后就已经脱胎换骨 —— 你对文字的感知已经大不相同。

第二分钟:语法(Grammar)

你不一定要成为语法学家,但你起码要知道基本规则。这就好像投资股市不一定非要先成为林奇或者巴菲特,享受电影不一定要先成为徐克或者斯皮尔伯格;但起码要学习最基本的游戏规则。中文也好英文也罢,语法书一本就够。了解基本规则之后,就开始动手写字,把语法书当作地图,需要什么就去查什么,查多了就全记住了 —— 就好像一个地方去了好几次之后就再也用不着查地图了一样。千万不要相信那些鬼话,说什么 “不用学语法” —— 人家发疯是人家的事儿,你情愿当傻子相信疯子,那是你的问题。

第三分钟:逻辑(Logic)

逻辑应该是所有生物中人类所特有的得之不易的工具。亚里士多德的三段论是最基础的东西。但是,生活中运用逻辑时所要面对的是 “不确定性”、“复杂性”。必然成立的三段论 —— 比如,大前提:人都要死的;小前提:苏格拉底是人;结论:苏格拉底必然会死的 —— 往往没有什么实际意义。生活中要处理的更可能是这样的情形:大前提:政客通常都不可靠;小前提:奥巴马当然是政客;结论是不确定的、分析是复杂的:奥巴马到底有多可靠?追求逻辑上的准确所有的挑战基本上都来自于一个人是否勇于面对 “不确定性” 与 “复杂性”。

第四分钟:文风(Style)

常见的文章起码可以如此二分:文艺类文章与说理类文章。这两类文章很不相同。基本上,文艺类的文章可能更注重修辞、更考究措辞、更华丽更天马行空。然而,说理类文章的根本目的是为了让人看懂,传递信息,积累知识,交流经验;因此说理类文章的文字最好 “简洁、朴素、有效、准确、具体”。当然,这不是铁律,如果有能力用华丽的文字说清楚道理也不是不行;反过来,用朴素的语言叙述动人的故事也未尝不可。但是所有希望自己的思考结果能够有效表达的人都最好牢记这十个字的标准 —— 仅仅十个字而已,却已经足够。

第五分钟:修辞(Rhetoric)

修辞的力量不言而喻。所有的修辞之中也许只有 “类比” 是不可或缺的。类比的本质是 “为了说清楚大家不熟悉的 X,先去找一个 1) 大家都熟悉的 2) 与 X(至少某一方面)最相似最接近的 A,最终做到 X 对大家来说不言而明”。小学老师说 “地球的构造就跟鸡蛋的构造差不多”;中学老师说 “原子内部的构造与太阳系的构造如出一辙”;对那些拿一两个 “反例” 试图反对某一观点的人我们说 “随便哪一只破烂钟表都能一天对两次呢”…… 这些都是类比,类比的力量就在于此:它是我们作为人类从无知跨越到有知必须的桥梁。其它的修辞手段,有空就学,没空就算 —— 大不了更朴素一点没有什么不好。

第六分钟:知识(Knowledge)

字、词、句、语法、风格、修辞等等,都是表达手段。没有米,无论是谁再巧做不出饭吃。“求知” 这个词的意味实在是太过理想化,还不如用比较朴素的另外一个说法 “做功课”。做好任何事情,都要提前做好功课。写小说也好、写教程也罢,都需要做功课;功课做得多了,知道的就多了,能够用来思考的也多了,这些东西多到一定程度,写出来的东西必然厚重、有质感。肤浅的文字之所以肤浅,一句话:作者没做功课。知识改变命运,只因为一个人获得新的知识之后,他的整个世界都会因此发生变化。相信我,功课无止境。

第七分钟:沟通(Communication)

有效表达只是最基本的层次,有效沟通才是真正的目标。从多个角度出发思考已非易事,从反对自己观点之人的角度出发思考问题难上加难。但如若做不到这一点,就无法做一个好的听众、好的读者。输出取决于输入,是不变的真理;不吃草的话牛是挤不出奶的。沟通不仅仅是为了说服,更多是为了获取反馈。沟通的技巧最重要的只有一个:不要认为自己与自己的观点是一回事儿。做到这点,就很容易看到种种反馈之中的宝贵之处。对做不到这点的人来说,逆耳的不仅仅是忠言,甚至就没有听着顺耳看着顺眼的东西 —— 可怜、可悲。

第八分钟:实践(Practice)

经验需要积累,而积累只能通过实践。所谓 “下笔如有神” 一看就是不会写文章的人才可能相信的痴心妄想。好的文章从来都不是一蹴而就的,好的文章从来都是改出来的。所谓的 “灵感” 也更可能在实践中闪现,而不大可能凭空而出。作者写字就好像司机开车一样。司机要积累到一定的驾驶里程,才可能遇到所有可能遇到的安全问题,于是终究有一天经验足够到有可能回避一切危险。作者也一样,写字多到一定程度才可能知道文字的种种属性 —— 不大可能通过某一本写作教程就理解所有文字的属性。不仅要多写,还要为了写好而做更多的功课,这是良性循环的起点。

第九分钟:技巧(Skill)

技巧这东西要等到明白究竟可以在哪里用得上的时候才容易学会。当前这篇 “十分钟教程” 里所提到的十个方面之中,个个都需要技巧。通过一定的实践,无论是谁也都会自然而然地掌握一些技巧。但有一个方面的技巧是应该最先打磨的 —— 获得知识的技巧:从观察到聆听,从阅读到反刍,从读书到笔记,从使用图书馆到使用搜索引擎,一切获得知识的手段需要技巧,并且还需要不停地打磨这些基本技巧。其次是逻辑思考的技巧,再次之是沟通的技巧。这三项是应该排在其他技巧之前,因为打磨任何一项技巧都需要时间,时间有限的情况下,只能划分轻重而为之。

第十分钟:修正(Rectification)

没有人从一开始就能做到完美。正如一篇好文章是要反复修改才能成为好文章一样,一个作者也要反复修正自己才能成为好作者。几乎一切都需要修正,并且需要反复修正 —— 只要时间允许。前一分钟说每一项技巧都需要打磨,这一分钟要说的是连技巧都要反复修正。甚至,还有些时候要把一切都完全推翻从头再来,这需要的不仅是勇气,还需要耐心与智慧。让自己的心智保持开放,知易行难的原因在于其中蕴含着痛苦 —— 打破牙齿和血吞(曾国藩语)的痛苦。

6. 如何看电影学英语?

“看电影学英语” 曾经是我颇为不屑的一种方式。一直以来我有个小小的偏见:一切花哨的东西都是不可取的。事实上,到今天我也不觉得 “看电影学英语” 是什么捷径。然而,学生中也好,读者中也罢,好像有很多人真的想通过 “看电影学英语” —— 他们的根据无非是 “要有兴趣才行” —— 其实兴趣根本没那么重要。

二零零八年,我在银川的唐中讲座,会后与一小女生闲聊,她提起自己有些科目成绩不错,因为感兴趣,而另外一些科目不理想,因为她不感兴趣。我想了想,告诉她,“能把感兴趣的事情学会并做好,这谁不会呢?真牛的是 ‘尽管没兴趣,但只要该学就能学会,而后也能用好’……”。时过境迁,那女生也应该高考过了吧?不知道她当时是否真的听懂了呢?

然而,作为老师,其实有很多的时候并不该太过在意学生的出发点是否正确恰当,无论基于什么原因,想学本身就已经相当难能可贵。所以,废话少说,无论如何都应该给那些想 “看电影学英语” 学生提一些有效的建议。

下载到自己想看的、喜欢看的之后,首先去 Google 搜索英文字幕。搜索关键字大抵上用这样的格式即可:

“电影名 发行年份 English subtitle”

比如,想找的是 “12 怒汉” 的英文字幕,那么就要搜索

12 Angry Men 1957 English subtitle

只要不是太新、太冷僻的电影,大多都能很容易用 Google 找到英文字幕。

字幕有很多种格式,建议只下载 “srt” 格式的英文字幕,因为这种格式的字幕可以直接用记事本程序打开(这种文件本身就是文本文件)。

用记事本打开字幕文件之后,“Ctrl+A”(全选),在 “Ctrl+C”(拷贝),把字幕内容拷贝到 Word 文档中去,而后,精读。

把不认识的词全部查过 —— 也要注意识别词组 —— 而后制作一个属于你自己的词表。(参考之前的 “如何把 MS Word 打造成学习利器”)。

然后再开始看电影。先尝试一下完全不用字幕行不行;如果吃力的话,才把英文字幕打开。注意:绝对不要看中文字幕,看不懂英文就去查词典。

而后再找时间把之前制作过的词表复习两三遍,抽空再看一遍电影。

讲到这里,一定会有读者说,“那岂不是太罗嗦?一点乐趣都没有了……” 相信我,我肯定不是第一次听到这样的抱怨(怕麻烦的人啥都做不好)。但是,这种抱怨是短视的 —— 无论是谁,都不用这样罗嗦一辈子。三五部电影之后,就会发现自己提高神速,大多数影片都可以理解个八九不离十了。

总体来说,靠看电影提高英语的程度相当有限。电影也好电视剧也罢,毕竟更多是靠画面讲故事的,大多数电影动作比对话多。喜欢看动作片、枪战片的同学更是如此,更多听到的不过是 “Drop it!” 或者是 “Go! Go! Go!!!” 之类的 “片语” 而已。即便是文艺片中的对话,所用的词藻也相当局限 —— 无论如何都不如 “海量阅读” 来得直接来得有效。

剧集与剧集的差异也非常大,像 24、Lost、The Sopranos 之类的剧集,基本上是 2000 词汇已经足够,一些历史剧所需要的词汇量就要稍微大一些,比如 Rome、John Adams 等等。另外一些剧集看起来好像难度很高,其实不然。典型的就是 House M.D.。刚看的时候会觉得充斥着大量医学名词,可一两集之后就明白一共就那么一百来个词,比如 MRI,spasm 什么的,到最后,就算医学相关内容听不懂也无所谓,因为剧情精彩的部分都跟医学无关。还有一些充满了俚语的剧集,比如 Dead Woods,对初学者意义并不大,那样的俚语就算学来,几乎没有什么用武之地的。The West Wing 是讲一帮精英如何运营美国白宫的,所以,其中的台词质量词藻华丽,句式精彩,逻辑精巧,难度颇高。私下推荐给一些学生看过,结果发现只有极少数学生感兴趣,大多数人其实只不过是 “图个乐” 而已,至于 “学习” 么,只不过是 “图乐” 的借口而已。

7. 不要再当 “初学者” 了!

这本书的初稿与 2010 年的 4 月份就已经完成。到 2011 年年初重新定稿期间,已经在网络上大面积传播。很多读者问:“这本书是面对哪个群体的?” 甚至此书的编辑们也问类似的问题:“这样大段的英文放在那里也没有翻译,适合初学者么?”

我只好把已经说过的话拿出来重新说一遍:我希望所有的人再也不要把自己当作初学者。掌握一门外语没什么了不起的,无非是花点功夫罢了。

在外语习得这件事情上,可以肯定,基本上所有的玻璃顶都是自己设置的。认为自己是 “初学者” 的害处在于,一旦如此认定,接下来的一切无能都是理所应当的:“我是初学者,听不懂才是正常的……”、“我是初学者,读不懂不奇怪……”、“我是初学者,肯定说不好……” 这些想法是那么地自然,那么地合理,乃至于不知不觉之间,就被这种想法所牵制,结果就是:一辈子都是初学者。之前在第三章里提到很多人以为要 “循序渐进” 所以坚持听 VOA SE 节目的结果却是产生了依赖,心甘情愿地停留在 “只能听懂 VOA” 的境界。

别再把自己扮成 “初学者” 了,那不应该是你。 初中英语课本学完之后,你就已经是 “英语使用者” 了,你早就可以像母语使用者一样,边用边学,边学边用,用到享受还接着用……

遇到读不懂的怎么办?
—— 查词典呗!

查了,可是没查到怎么办?
—— 换本词典再查呗!

查了好几个词典都没查到怎么办?
—— Google呗! 你把看不懂的那句英文前后加上引号输入Google的对话框,然后再补上一句中文“什么意思啊?”而后按回车键……如果你正在阅读的是流行的文本,那么相信我,一定早就有人在你之前没看懂过,而他们中的一些人肯定在网上问过,而这些问题往往早就被回答过……(Google能回答各种“奇怪”的问题,比如,“John”为什么被翻译成“约翰”?)

如果你不会使用 Google,那就在 Google 的对话框里输入 “如何使用 Google” 而后回车,看看搜索结果……

这不是什么需要 “拿出勇气” 才能做的事情,这只不过是应该做的事情而已。

最近两三年里,国内的英语使用者的水平正在发生天翻地覆的变化。尽管比例上依然是少数,但已经有相当多数量的人改变了观念,走上了另外一条路。2010 年年底,我去深圳中学讲座,了解到很多高一高二的学生,一年读 50 本以上的英文书。这样的数量当然会令很多人跌破眼镜。可实际上,这只不过是正常人正常地使用语言的量级而已。想想吧,当年你读高中的时候,不也是一下午读完一本小说么?一年读 50 本书,只不过是一周一本的速度而已,实际上并不夸张。这样大量阅读的孩子,在没有参加任何培训班的情况下,去考 TOEFL,随随便便就是 110 分以上,去考 SAT,2300 分以下基本上不太可能。这就是国内正在发生的事情。据我所知,现在国内很多著名中学孩子都是这样的,比如,南京外国语学校、长沙雅礼中学、东北育才中学、北京四中、太原五中 …… 而那些脑子早就被限制住了的家伙们呢?我所知道的国内绝大多数英语专业的大学生一年读英文书的数量不会超过 10 本。这就是差别,这就是观念差异造成的结果。

别再拿 “初学者”、“爱好者” 什么的骗自己了!

上路吧!

< 第七章: 精读 后记 >

File: book/end.md

[Binary file]


File: enjoy/README.md

Enjoy App

This is a Electron App.

bash
yarn install
yarn start

File: enjoy/components.json

{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": false,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "src/index.css",
"baseColor": "zinc",
"cssVariables": true
},
"aliases": {
"components": "src/renderer/components",
"utils": "src/renderer/lib/utils"
}
}


File: enjoy/package.json

{
"type": "module",
"private": true,
"name": "enjoy",
"productName": "Enjoy",
"version": "0.7.9",
"description": "Enjoy desktop app",
"main": ".vite/build/main.js",
"types": "./src/types.d.ts",
"scripts": {
"predev": "yarn run download",
"dev": "rimraf .vite && yarn run download && WEB_API_URL=http://localhost:3000 WS_URL=ws://localhost:3000 SETTINGS_PATH=${PWD}/enjoy/tmp LIBRARY_PATH=${PWD}/enjoy/tmp electron-forge start",
"start": "rimraf .vite && yarn run download && electron-forge start",
"package": "NODE_OPTIONS='--max-old-space-size=8192' rimraf .vite && yarn run download && electron-forge package",
"make": "NODE_OPTIONS='--max-old-space-size=8192' rimraf .vite && yarn run download && electron-forge make",
"publish": "NODE_OPTIONS='--max-old-space-size=8192' rimraf .vite && yarn run download && electron-forge publish",
"lint": "eslint --ext .ts,.tsx .",
"test": "yarn run package && yarn run playwright test",
"test:main": "yarn run playwright test e2e/main.spec.ts",
"test:renderer": "yarn run playwright test e2e/renderer.spec.ts",
"create-migration": "zx ./src/main/db/create-migration.mjs",
"download-dictionaries": "zx ./scripts/download-dictionaries.mjs",
"download": "yarn run download-dictionaries",
"sourcemap": "bugsnag-source-maps upload-node --directory .vite/build --app-version 0.7.9"
},
"keywords": [],
"author": {
"name": "an-lee",
"email": "[email protected]"
},
"license": "MIT",
"devDependencies": {
"@bugsnag/source-maps": "^2.3.3",
"@divisey/js-mdict": "^5.0.0",
"@electron-forge/cli": "^7.7.0",
"@electron-forge/maker-deb": "^7.7.0",
"@electron-forge/maker-dmg": "^7.7.0",
"@electron-forge/maker-rpm": "^7.7.0",
"@electron-forge/maker-squirrel": "^7.7.0",
"@electron-forge/maker-zip": "^7.7.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.7.0",
"@electron-forge/plugin-fuses": "^7.7.0",
"@electron-forge/plugin-vite": "7.7.0",
"@electron-forge/publisher-github": "^7.7.0",
"@electron-forge/publisher-s3": "^7.7.0",
"@electron/fuses": "^1.8.0",
"@hookform/resolvers": "^3.10.0",
"@langchain/community": "^0.3.35",
"@langchain/core": "^0.3.42",
"@langchain/ollama": "^0.2.0",
"@mozilla/readability": "^0.6.0",
"@playwright/test": "^1.51.0",
"@radix-ui/react-accordion": "^1.2.3",
"@radix-ui/react-alert-dialog": "^1.1.6",
"@radix-ui/react-aspect-ratio": "^1.1.2",
"@radix-ui/react-avatar": "^1.1.3",
"@radix-ui/react-checkbox": "^1.1.4",
"@radix-ui/react-collapsible": "^1.1.3",
"@radix-ui/react-dropdown-menu": "^2.1.6",
"@radix-ui/react-hover-card": "^1.1.6",
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.2",
"@radix-ui/react-menubar": "^1.1.6",
"@radix-ui/react-popover": "^1.1.6",
"@radix-ui/react-progress": "^1.1.2",
"@radix-ui/react-radio-group": "^1.2.3",
"@radix-ui/react-scroll-area": "^1.2.3",
"@radix-ui/react-select": "^2.1.6",
"@radix-ui/react-separator": "^1.1.2",
"@radix-ui/react-slider": "^1.2.3",
"@radix-ui/react-slot": "^1.1.2",
"@radix-ui/react-switch": "^1.1.3",
"@radix-ui/react-tabs": "^1.1.3",
"@radix-ui/react-toast": "^1.2.6",
"@radix-ui/react-toggle": "^1.1.2",
"@radix-ui/react-tooltip": "^1.1.8",
"@rails/actioncable": "8.0.200",
"@tailwindcss/typography": "^0.5.16",
"@types/ahoy.js": "^0.4.2",
"@types/autosize": "^4.0.3",
"@types/command-exists": "^1.2.3",
"@types/diff": "^7.0.1",
"@types/electron-squirrel-startup": "^1.0.2",
"@types/fluent-ffmpeg": "^2.1.27",
"@types/html-to-text": "^9.0.4",
"@types/intl-tel-input": "^18.1.4",
"@types/lodash": "^4.17.16",
"@types/mark.js": "^8.11.12",
"@types/mime-types": "^2.1.4",
"@types/mustache": "^4.2.5",
"@types/node": "^22.13.10",
"@types/prop-types": "^15.7.14",
"@types/rails__actioncable": "^6.1.11",
"@types/react": "^18.3.18",
"@types/react-dom": "^18.3.5",
"@types/semver": "^7.5.8",
"@types/turndown": "^5.0.5",
"@types/unzipper": "^0.10.11",
"@types/validator": "^13.12.2",
"@types/wavesurfer.js": "^6.0.12",
"@typescript-eslint/eslint-plugin": "^8.26.1",
"@typescript-eslint/parser": "^8.26.1",
"@uidotdev/usehooks": "^2.4.1",
"@vidstack/react": "^1.12.13",
"@vitejs/plugin-react": "^4.3.4",
"ahoy.js": "^0.4.4",
"autoprefixer": "^10.4.21",
"autosize": "^6.0.1",
"axios": "^1.8.3",
"camelcase": "^8.0.0",
"camelcase-keys": "^9.1.3",
"chart.js": "^4.4.8",
"cheerio": "^1.0.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.0.4",
"command-exists": "^1.2.9",
"compromise": "^14.14.4",
"compromise-paragraphs": "^0.1.0",
"compromise-stats": "^0.1.0",
"dayjs": "^1.11.13",
"decamelize": "^6.0.0",
"decamelize-keys": "^2.0.1",
"dependencies-tree": "^2.0.0",
"diff": "^7.0.0",
"electron": "^34.3.3",
"electron-context-menu": "^4.0.5",
"electron-devtools-installer": "^4.0.0",
"electron-forge-plugin-dependencies": "^1.0.0",
"electron-log": "^5.3.2",
"electron-playwright-helpers": "^1.7.1",
"electron-squirrel-startup": "^1.0.1",
"eslint": "^9.22.0",
"eslint-import-resolver-typescript": "^3.8.7",
"eslint-plugin-import": "^2.31.0",
"flora-colossus": "^2.0.0",
"foliate-js": "https://github.com/johnfactotum/foliate-js.git",
"html-to-text": "^9.0.5",
"https-proxy-agent": "^7.0.6",
"i18next": "^24.2.3",
"input-otp": "^1.4.2",
"intl-tel-input": "^25.3.0",
"js-md5": "^0.8.3",
"langchain": "^0.3.19",
"lodash": "^4.17.21",
"lru-cache": "^11.0.2",
"lucide-react": "^0.479.0",
"mark.js": "^8.11.1",
"media-captions": "^0.0.18",
"microsoft-cognitiveservices-speech-sdk": "^1.42.0",
"mime-types": "^2.1.35",
"mustache": "^4.2.0",
"next-themes": "^0.4.4",
"octokit": "^4.1.2",
"openai": "^4.87.3",
"pitchfinder": "^2.3.2",
"postcss": "^8.5.3",
"progress": "^2.0.3",
"prop-types": "^15.8.1",
"proxy-agent": "^6.5.0",
"react": "^18.3.1",
"react-activity-calendar": "^2.7.10",
"react-audio-visualize": "^1.2.0",
"react-audio-voice-recorder": "^2.2.0",
"react-dom": "^18.3.1",
"react-frame-component": "^5.2.7",
"react-hook-form": "^7.54.2",
"react-hotkeys-hook": "^4.6.1",
"react-i18next": "^15.4.1",
"react-markdown": "^9.1.0",
"react-resizable-panels": "^2.1.7",
"react-router-dom": "^7.3.0",
"react-shadow-root": "^6.2.0",
"react-tooltip": "^5.28.0",
"remark-gfm": "^4.0.1",
"rimraf": "^6.0.1",
"semver": "^7.7.1",
"sonner": "^1.7.4",
"tailwind-merge": "^2.6.0",
"tailwind-scrollbar": "^3.1.0",
"tailwind-scrollbar-hide": "^2.0.0",
"tailwindcss": "^3.4.17",
"tailwindcss-animate": "^1.0.7",
"ts-node": "^10.9.2",
"tslib": "^2.8.1",
"turndown": "^7.2.0",
"typescript": "^5.8.2",
"vite": "^6.2.2",
"vite-plugin-static-copy": "^2.3.0",
"wavesurfer.js": "^7.9.1",
"zod": "^3.24.2",
"zod-to-json-schema": "^3.24.3",
"zx": "^8.4.1"
},
"dependencies": {
"@andrkrn/ffprobe-static": "^5.2.0",
"@bugsnag/electron": "^8.2.0",
"@bugsnag/plugin-react": "^8.2.0",
"echogarden": "^2.3.5",
"electron-settings": "^4.0.4",
"ffmpeg-static": "^5.2.0",
"file-type": "^19.6.0",
"fluent-ffmpeg": "^2.1.3",
"fs-extra": "^11.3.0",
"reflect-metadata": "^0.2.2",
"sequelize": "^6.37.6",
"sequelize-typescript": "^2.1.6",
"sqlite3": "^5.1.7",
"umzug": "^3.8.2",
"unzipper": "^0.12.3"
}
}


File: enjoy/tsconfig.json

{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"noImplicitAny": true,
"sourceMap": true,
"baseUrl": ".",
"outDir": "dist",
"moduleResolution": "node",
"resolveJsonModule": true,
"jsx": "react-jsx",
"paths": {
"@/": ["./src/"],
"@renderer/": ["./src/renderer/"],
"@main/": ["./src/main/"],
"@commands": ["./src/commands"]
},
"types": ["vite/client"],
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"useDefineForClassFields": false
},
"include": ["src"]
}


File: enjoy/.eslintrc.json

{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/recommended",
"plugin:import/electron",
"plugin:import/typescript"
],
"parser": "@typescript-eslint/parser",
"settings": {
"import/resolver": {
"typescript": {}
}
},
"rules": {
"@typescript-eslint/no-explicit-any": "off"
}
}


File: enjoy/lib/youtubedr/README.md

Download Youtube Video in Golang






This package is a Youtube video download package, for more detail refer https://github.com/ytdl-org/youtube-dl for more download options.

This tool is meant to be used to download CC0 licenced content, we do not support nor recommend using it for illegal activities.

Overview

Installation

Install via go get

Please ensure you have installed Go 1.18 or later.

shell
go get github.com/kkdai/youtube/v2

From source code

shell
git clone https://github.com/kkdai/youtube.git
cd youtube
go run ./cmd/youtubedr

Mac

shell
brew install youtubedr

in Termux

shell
pkg install youtubedr

You can also find this package in

Usage

Use the binary directly

It's really simple to use, just get the video id from youtube url - ex: https://www.youtube.com/watch?v=rFejpH_tAHM, the video id is rFejpH_tAHM

shell
$ youtubedr download QAGDGja7kbs
$ youtubedr download https://www.youtube.com/watch?v=rFejpH_tAHM

Use this package in your golang program

Please check out the example_test.go for example code.

Example:

  • Get information of dotGo-2015-rob-pike video for downloading

    go get github.com/kkdai/youtube/v2/youtubedr

    Download video from dotGo 2015 - Rob Pike - Simplicity is Complicated

    text
    youtubedr info https://www.youtube.com/watch?v=rFejpH_tAHM
    
    Title: dotGo 2015 - Rob Pike - Simplicity is Complicated
    Author: dotconferences
    -----available streams-----
    itag:  18 , quality: medium , type: video/mp4; codecs="avc1.42001E, mp4a.40.2"
    itag:  22 , quality:  hd720 , type: video/mp4; codecs="avc1.64001F, mp4a.40.2"
    itag: 137 , quality: hd1080 , type: video/mp4; codecs="avc1.640028"
    itag: 248 , quality: hd1080 , type: video/webm; codecs="vp9"
    ........
  • Download dotGo-2015-rob-pike-video

    go get github.com/kkdai/youtube/v2/youtubedr

    Download video from dotGo 2015 - Rob Pike - Simplicity is Complicated

    text
    youtubedr download https://www.youtube.com/watch?v=rFejpH_tAHM
  • Download video to specific folder and name

go get github.com/kkdai/youtube/v2/youtubedr

Download video from dotGo 2015 - Rob Pike - Simplicity is Complicated to current directory and name the file to simplicity-is-complicated.mp4

text
youtubedr download -d ./ -o simplicity-is-complicated.mp4 https://www.youtube.com/watch?v=rFejpH_tAHM
  • Download video with specific quality

go get github.com/kkdai/youtube/v2/youtubedr

Download video from dotGo 2015 - Rob Pike - Simplicity is Complicated with specific quality

text
youtubedr download -q medium https://www.youtube.com/watch?v=rFejpH_tAHM

Special case by quality hd1080:

Installation of ffmpeg is necessary for hd1080

text
ffmpeg   //check ffmpeg is installed, if not please download ffmpeg and set to your PATH.
youtubedr download -q hd1080 https://www.youtube.com/watch?v=rFejpH_tAHM

How it works

  • Parse the video ID you input in URL
  • ex: https://www.youtube.com/watch?v=rFejpH_tAHM, the video id is rFejpH_tAHM
  • Get video information via video id.
  • Use URL: http://youtube.com/get_video_info?video_id=
  • Parse and decode video information.
  • Download URL in "url="
  • title in "title="
  • Download video from URL
  • Need the string combination of "url"

Inspired

Project52

It is one of my project 52.

License

This package is licensed under MIT license. See LICENSE for details.


File: enjoy/src/constants/languages.json

[
{
"code": "en-US",
"name": "English (United States)"
},
{
"code": "en-GB",
"name": "English (United Kingdom)"
},
{
"code": "zh-CN",
"name": "普通话"
},
{
"code": "zh-HK",
"name": "粤语"
},
{
"code": "ja-JP",
"name": "日本語"
},
{
"code": "ko-KR",
"name": "한국인"
},
{
"code": "es-ES",
"name": "Española"
},
{
"code": "it-IT",
"name": "Italiana"
},
{
"code": "de-DE",
"name": "Deutsch"
},
{
"code": "fr-FR",
"name": "Français"
},
{
"code": "th-TH",
"name": "แบบไทย"
},
{
"code": "vi-VN",
"name": "Tiếng Việt"
}
]


File: enjoy/src/i18n/en.json

{
"models": {
"user": {
"id": "ID",
"name": "Name"
},
"audio": {
"name": "name",
"namePlaceholder": "name your audio",
"type": "type",
"description": "description",
"descriptionPlaceholder": "describe your audio",
"format": "format",
"duration": "duration",
"size": "size",
"source": "source",
"createdAt": "created at",
"updatedAt": "updated at",
"recordingsCount": "recordings count",
"recordingsDuration": "recordings duration",
"isTranscribed": "transcribed",
"added": "Successfully added audio",
"removed": "Successfully removed audio",
"notFound": "Audio not found",
"fileTooLarge": "File too large. Please select an audio under 50MB. {{file}}",
"failedToAdd": "Failed to add, {{ error }}",
"fileNotFound": "File not found {{file}}",
"fileNotSupported": "File not supported {{file}}",
"failedToCopyFile": "Failed to copy file {{file}}",
"failedToDownloadFile": "Failed to download file {{file}}",
"transcriptionFinished": "Transcription finished"
},
"video": {
"name": "name",
"namePlaceholder": "name your video",
"type": "type",
"description": "description",
"descriptionPlaceholder": "describe your video",
"format": "format",
"duration": "duration",
"size": "size",
"source": "source",
"createdAt": "created at",
"updatedAt": "updated at",
"recordingsCount": "recordings count",
"recordingsDuration": "recordings duration",
"isTranscribed": "transcribed",
"added": "Successfully added video",
"removed": "Successfully removed video",
"notFound": "Video not found",
"fileTooLarge": "File too large. Please select a video under 100MB. {{file}}",
"failedToAdd": "Failed to add, {{ error }}",
"fileNotFound": "File not found {{file}}",
"fileNotSupported": "File not supported {{file}}",
"failedToCopyFile": "Failed to copy file {{file}}",
"failedToDownloadFile": "Failed to download file {{file}}",
"transcriptionFinished": "Transcription finished"
},
"recording": {
"segmentIndex": "Segment Index",
"segmentText": "Segment Text",
"duration": "Duration",
"durationTooShort": "Duration too short",
"failedToSave": "Failed to save recording",
"notFound": "Recording not found",
"cannotDetectAnySound": "Cannot detect any sound in the recording, please check your microphone"
},
"conversation": {
"name": "Name",
"engine": "AI engine",
"baseUrl": "Request endpoint",
"baseUrlDescription": "leave it blank if you don't have one",
"configuration": "Configuration",
"model": "AI model",
"type": "AI Type",
"roleDefinition": "Role definition",
"roleDefinitionPlaceholder": "Describe the AI role",
"temperature": "Temperature",
"temperatureDescription": "The higher the temperature, the more creative the result",
"maxTokens": "Max tokens",
"maxTokensDescription": "The maximum number of tokens to generate",
"presencePenalty": "Presence penalty",
"presencePenaltyDescription": "Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.",
"frequencyPenalty": "Frequency penalty",
"frequencyPenaltyDescription": " Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.",
"historyBufferSize": "History buffer size",
"historyBufferSizeDescription": "The number of message history to include in the context",
"numberOfChoices": "Number of choices",
"numberOfChoicesDescription": "The number of results to generate",
"ttsEngine": "TTS engine",
"ttsModel": "TTS model",
"ttsVoice": "TTS voice",
"ttsLanguage": "TTS language",
"ttsBaseUrl": "TTS base URL",
"ttsBaseUrlDescription": "leave it blank if you don't have one",
"notFound": "Conversation not found",
"contentRequired": "Content required",
"failedToGenerateResponse": "Failed to generate response, please retry",
"modelIsRequired": "Model is required",
"ttsConfigurationsIsRequired": "TTS configurations is required",
"ttsModelIsRequired": "TTS model is required",
"ttsEngineIsRequired": "TTS engine is required"
},
"pronunciationAssessment": {
"pronunciationScore": "Pronunciation Score",
"fluencyScore": "Fluency Score",
"completenessScore": "Completeness Score",
"accuracyScore": "Accuracy Score",
"prosodyScore": "Prosody Score",
"grammarScore": "Grammar Score",
"vocabularyScore": "Vocabulary Score",
"topicScore": "Topic Score",
"errors": {
"omission": "Omission",
"insertion": "Insertion",
"misspronunciation": "Misspronunciation",
"unexpectedBreak": "Unexpected Break",
"missingBreak": "Missing Break",
"monotone": "Monotone"
},
"explainations": {
"pronunciationScore": "Pronunciation score is the overall score of the pronunciation, fluency, completeness, and accuracy of the speech. The score is calculated by the weighted average of the four scores.",
"accuracyScore": "Accuracy score is the accuracy of the speech. The accuracy indicates how close the speech is to the reference text.",
"fluencyScore": "Fluency score is the fluency of the speech. The fluency indicates how smooth the speech is.",
"completenessScore": "Completeness score is the completeness of the speech. The completeness indicates how complete the speech is.",
"prosodyScore": "Prosody score is the prosody of the speech. The prosody indicates how natural the speech is.",
"omission": "Omission is the words that are in the reference text but not in the speech.",
"insertion": "Insertion is the words that are in the speech but not in the reference text.",
"misspronunciation": "The pronunciation of the word is not correct.",
"unexpectedBreak": "There is a break between two words when there is no punctuation between them.",
"missingBreak": "There is no break between two words when there is a punctuation between them.",
"monotone": "The word is monotone."
}
},
"chatAgent": {
"notFound": "Chat agent not found",
"created": "Chat agent created",
"updated": "Chat agent updated",
"deleted": "Chat agent deleted",
"type": "Type",
"typeGptDescription": "GPT agent can chat with you.",
"typeTtsDescription": "TTS agent can convert text to speech.",
"typeSttDescription": "STT agent can convert speech to text.",
"name": "Name",
"namePlaceholder": "Enjoy Assistant",
"nameDescription": "Help you to identify this chat agent",
"description": "Description",
"descriptionPlaceholder": "Ask me anything",
"descriptionDescription": "Describe this chat agent shortly (Will not included in the prompt)",
"prompt": "Prompt",
"promptPlaceholder": "You are my AI assistant, please answer my any questions.",
"promptDescription": "The role definition (prompt) of the chat agent"
},
"chatMember": {
"prompt": "Extra Prompt",
"promptDescription": "The extra prompt will be added to the system prompt of the chat agent. It is useful when you want to customize the chat agent's behavior in this specific chat.",
"promptPlaceholder": "For example: please use simple sentences as much as possible, and reply no more than 10 sentences at a time.",
"gptSettings": "LLM Settings",
"ttsSettings": "Text to Speech",
"moreSettings": "More Settings",
"added": "Chat member added",
"removed": "Chat member removed",
"notFound": "Chat member not found",
"atLeastOneAgent": "The chat must have at least 1 agent.",
"cannotAddMemberToThisChat": "Cannot add member to this chat",
"onlyGPTAgentCanBeAddedToThisChat": "Only GPT agent can be added to this chat"
},
"chat": {
"notFound": "Chat not found",
"created": "Chat created",
"updated": "Chat updated",
"deleted": "Chat deleted",
"name": "Name",
"language": "Language",
"topic": "Topic",
"members": "Members",
"enableChatAssistant": "Enable Chat Assistant",
"enableChatAssistantDescription": "When enabled, you can use SUGGEST or REFINE to help you chat with the chat agent.",
"enableAutoTts": "Enable Auto TTS",
"enableAutoTtsDescription": "When enabled, all replies will be converted to audio automatically.",
"generateTopic": "Generate Topic",
"sttAiServicePlaceholder": "Please select",
"sttAiServiceDescription": "Choose service to transcribe your speech to text.",
"prompt": "Extra Prompt",
"promptPlaceholder": "For example: the chat is about how to learn English, please do not deviate from the topic.",
"promptDescription": "The prompt will be added to the system prompt of all chat agents in this chat. It is useful when you want to customize the chat agent's behavior in this specific chat.",
"chatSettings": "Chat Settings",
"moreSettings": "More Settings",
"memberSettings": "Member Settings",
"atLeastOneAgent": "The chat must have at least 1 agent.",
"onlyGPTAgentCanBeAddedToThisChat": "Only GPT agent can be added to this chat",
"invalidAgentType": "Invalid agent type",
"invalidMembers": "Invalid members"
},
"document": {
"fileNotFound": "File not found {{file}}",
"fileNotSupported": "File not supported {{file}}",
"failedToCopyFile": "Failed to copy file {{file}}"
}
},
"sidebar": {
"home": "Home",
"chats": "Chats",
"courses": "Courses",
"community": "Community",
"audios": "Audios",
"videos": "Videos",
"stories": "Stories",
"documents": "Documents",
"books": "Books",
"vocabulary": "Vocabulary",
"library": "Library",
"practice": "Practice",
"reading": "Reading",
"aiAssistant": "AI Assistant",
"pronunciationAssessment": "Assessment",
"mine": "Mine",
"preferences": "Preferences",
"profile": "My Profile",
"notes": "Note",
"help": "Help",
"collapse": "Collapse"
},
"form": {
"lengthMustBeAtLeast": "{{field}} must be at least {{length}} characters",
"lengthMustBeLessThan": "{{field}} must be less than {{length}} characters"
},
"today": "today",
"yesterday": "yesterday",
"play": "play",
"pause": "pause",
"switchPlayMode": "switch play mode",
"playSingleSegment": "play single segment",
"playAllSegments": "play all segments",
"playInLoop": "play in loop",
"playNextSegment": "play next segment",
"playPreviousSegment": "play previous segment",
"playbackSpeed": "playback speed",
"zoomIn": "zoom in",
"zoomOut": "zoom out",
"zoomToFit": "zoom to fit",
"autoCenter": "auto center",
"inlineCaption": "inline caption",
"autoScroll": "auto scroll",
"translate": "translate",
"displayIpa": "display IPA",
"displayNotes": "display Notes",
"downloadSegment": "download segment",
"detail": "detail",
"remove": "remove",
"share": "share",
"forward": "forward",
"loadMore": "Load more",
"databaseError": "Failed to connect to database {{url}}",
"somethingWentWrong": "Something went wrong",
"actions": "actions",
"downloads": "downloads",
"info": "Info",
"success": "Success",
"warning": "Warning",
"error": "Error",
"errors": "Errors",
"cancel": "Cancel",
"cancelled": "Cancelled",
"canceling": "Canceling",
"confirm": "Confirm",
"continue": "continue",
"save": "Save",
"delete": "Delete",
"edit": "Edit",
"retry": "Retry",
"failedToLogin": "Failed to login",
"sendCode": "Send code",
"codeSent": "Code has been sent",
"verificationCode": "Verification code",
"email": "Email",
"phoneNumber": "Phone number",
"mixinId": "Mixin ID",
"inputMixinId": "Input your Mixin ID",
"scanMixinQRCodeDescription": "Scan Mixin QR code in the popup window",
"createMixinAccount": "Create Mixin account",
"scanToLogin": "Scan to login",
"youCanAlsoLoginWith": "You can also login with",
"downloadTranscript": "Download transcript",
"downloadTranscriptFromCloud": "Download transcript from cloud",
"transcribe": "Transcribe",
"stillTranscribing": "AI is still working on the transcription. Please wait for a while.",
"unableToSetLibraryPath": "Unable to set library path to {{path}}",
"nthStep": "{{current}}/{{totalSteps}} Step",
"open": "Open",
"select": "Select",
"libraryPath": "Library Path",
"login": "Login",
"reLogin": "Re-login",
"loginBeforeYouStart": "Login before you start",
"loginSuccess": "Login Success",
"whereYourResourcesAreStored": "Where your resources are stored",
"AIModel": "AI Model",
"chooseAIModelToDownload": "Choose AI Model to download",
"ffmpegCheck": "FFmpeg Check",
"check": "Check",
"ffmpegCommandIsWorking": "FFmpeg command is working",
"ffmpegCommandIsNotWorking": "FFmpeg command is not working",
"scan": "Scan",
"checkIfFfmpegIsInstalled": "Check if FFmpeg is installed",
"ffmpegFoundAt": "FFmpeg found at {{path}}",
"ffmpegNotFound": "FFmpeg not found",
"ffmpegInstallSteps": "FFmpeg Install Steps",
"Install": "Install",
"runTheFollowingCommandInTerminal": "Run the following command in terminal",
"click": "Click",
"willAutomaticallyFindFFmpeg": "Enjoy will automatically find FFmpeg",
"tryingToFindValidFFmepgInTheseDirectories": "Trying to find valid FFmpeg in these directories: {{dirs}}",
"invalidFfmpegPath": "Invalid FFmpeg path",
"usingInstalledFFmpeg": "Using installed FFmpeg",
"usingDownloadedFFmpeg": "Using downloaded FFmpeg",
"downloadFfmpeg": "Download FFmpeg",
"youAreReadyToGo": "You are ready to go",
"welcomeBack": "Welcome back! {{name}}",
"print": "Print",
"download": "Download",
"downloadingFile": "Downloading {{file}}",
"downloading": "Downloading",
"importing": "Importing",
"downloadedSuccessfully": "Downloaded successfully",
"downloadFailed": "Download failed",
"chooseAIModelDependingOnYourHardware": "Choose AI Model depending on your hardware.",
"areYouSureToDownload": "Are you sure to download {{name}}?",
"yourModelsWillBeDownloadedTo": "Your models will be downloaded to {{path}}",
"logout": "Logout",
"logoutConfirmation": "Are you sure you want to logout?",
"reset": "Reset",
"resetAll": "Reset All",
"resetAllConfirmation": "It will remove all of your personal data, are you sure?",
"resetSettings": "Reset Settings",
"resetSettingsConfirmation": "It will reset all of your settings, are you sure? The library will not be affected.",
"settingsReseted": "Settings reseted",
"proxySettings": "Proxy Settings",
"proxyConfigUpdated": "Proxy config updated",
"apiSettings": "API Settings",
"apiUrlUpdated": "API url updated",
"logoutAndRemoveAllPersonalData": "Logout and remove all personal data",
"logoutAndRemoveAllPersonalSettings": "Logout and remove all personal settings",
"hotkeys": "Hotkeys",
"player": "Player",
"quit": "Quit",
"quitApp": "Quit APP",
"quitAppDescription": "Are you sure to quit Enjoy app?",
"openPreferences": "Open preferences",
"openCopilot": "Open copilot",
"playOrPause": "Play or pause",
"playOrPauseRecording": "Play or pause recording",
"startOrStopRecording": "start or stop recording",
"appearance": "Appearance",
"theme": "Theme",
"light": "Light",
"dark": "Dark",
"system": "System",
"about": "About",
"currentVersion": "Current version",
"checkUpdate": "Check update",
"checkingLatestVersion": "Checking latest version",
"updateDownloaded": "A new version has been downloaded. Restart the application to apply the updates.",
"restart": "Restart",
"later": "Later",
"userGuide": "User guide",
"feedback": "Feedback",
"alreadyLatestVersion": "Already latest version",
"initializingApp": "Initializing APP",
"welcomeTo": "Welcome to",
"startToUse": "Start",
"goBack": "Go back",
"nextStep": "Next",
"previousStep": "Previous",
"finish": "Finish",
"notReadyYet": "Not ready yet",
"commingSoon": "Comming soon",
"pageNotFound": "Page not found",
"audio": "audio",
"video": "video",
"text": "text",
"addResource": "add resource",
"addResourceFromUrlOrLocal": "add resource from url or local",
"resourceAdded": "Resource added",
"resourcesAdded": "{{fulfilled}} resources added, {{rejected}} failed to add. {{reasons}}",
"resourcesAddInBatchLimitError": "You can only add {{limit}} resources at a time",
"editResource": "edit resource",
"deleteResource": "delete resource",
"deleteResourceConfirmation": "Are you sure to delete {{name}}?",
"transcribeMediaConfirmation": "It will remove the old transcription. Are you sure to transcribe {{name}}",
"localFile": "local file",
"resourcesYouAddedRecently": "resources you added recently",
"recentlyAdded": "recently added",
"recommended": "recommended",
"resourcesRecommendedByEnjoy": "resources recommended by Enjoy Bot",
"fromCommunity": "from community",
"videoResources": "video resources",
"audioResources": "audio resources",
"seeMore": "see more",
"resourcesFromTheCommunity": "resources from the community",
"noResourcesFound": "no resources found",
"allResources": "all resources",
"playbackRate": "playback rate",
"transcription": "transcription",
"transcript": "transcript",
"regenerate": "regenerate",
"holdAndSpeak": "Hold and speak",
"releaseToStop": "Release to stop",
"deleteRecording": "delete recording",
"deleteRecordingConfirmation": "Are you sure to delete this recording?",
"myRecordings": "recordings",
"noRecordingForThisSegmentYet": "No recordings for this segment yet. Press {{key}} to start recording.",
"lastYear": "last year",
"less": "less",
"more": "more",
"total": "total",
"totalRecordingsIn": "{{total}} recordings in {{duration}}",
"totalRecordings": "{{total}} recordings",
"totalDuration": "duration {{duration}}",
"recordingActivity": "recording activity",
"recordingDetail": "Recording detail",
"noRecordingActivities": "no recording activities",
"basicSettingsShort": "Basic",
"basicSettings": "Basic settings",
"accountSettingsShort": "Account",
"accountSettings": "Account settings",
"advancedSettingsShort": "Advanced",
"advancedSettings": "Advanced settings",
"advanced": "Advanced",
"language": "Language",
"nativeLanguage": "Native Language",
"learningLanguage": "Learning Language",
"editEmail": "Edit email",
"editUserName": "Edit user name",
"userName": "User name",
"profileUpdated": "Profile updated",
"balance": "Balance",
"deposit": "Deposit",
"depositDescription": "Deposit to your account",
"depositDisclaimer": "After deposit, your balance is only used for paid services. It is not refundable.",
"pay": "Pay",
"pleaseCompletePaymentInPopupWindow": "Please complete payment in the popup window",
"processor": "Processor",
"amount": "Amount",
"date": "Date",
"status": "Status",
"recentDeposits": "Recent deposits",
"notAvailableYet": "Not available yet",
"whisperModel": "Whisper Model",
"sttAiService": "STT AI service",
"local": "Local",
"localSpeechToTextDescription": "Use local whisper model to transcribe. It is free.",
"enjoyAzure": "Azure AI (by Enjoy)",
"enjoyAzureSpeechToTextDescription": "Use Azure AI Speech to transcribe. It is a paid service from Enjoy.",
"enjoyCloudflare": "Cloudflare AI (by Enjoy)",
"enjoyCloudflareSpeechToTextDescription": "Use Cloudflare AI Worker to transcribe. It is in beta and free for now.",
"openaiSpeechToTextDescription": "Use openAI to transcribe using your own key.",
"uploadSpeechToTextDescription": "Upload transcript file or input transcript text to align.",
"checkingWhisper": "Checking whisper status",
"pleaseDownloadWhisperModelFirst": "Please download whisper model first",
"whisperIsWorkingGood": "Whisper is working good",
"whisperIsNotWorking": "Whisper is not working",
"whisperTranscribeFailed": "Whisper transcribe failed. Maybe your machine is not compatbile with it. Please use other STT service. {{error}}",
"openaiTranscribeFailed": "OpenAI transcribe failed. {{error}}",
"cloudflareTranscribeFailed": "Cloudflare transcribe failed. {{error}}",
"azureTranscribeFailed": "Azure transcribe failed. {{error}}",
"transcribeFailed": "Transcribe failed.",
"checkingWhisperModel": "Checking whisper model",
"whisperModelIsWorkingGood": "Whisper model is working good",
"whisperModelIsNotWorking": "Whisper model is not working",
"relaunchIsNeededAfterChanged": "Relaunch is needed after changed",
"reloadIsNeededAfterChanged": "Reload is needed after changed",
"defaultAiEngine": "Default AI engine",
"aiEngine": "AI engine",
"aiEngineNotSupported": "AI engine not supported",
"defaultAiModel": "Default AI model",
"lookupAiModel": "AI Lookup",
"translateAiModel": "AI Translate",
"analyzeAiModel": "AI Analyze",
"extractStoryAiModel": "AI extract vocabulary",
"openAiEngineTips": "Use OpenAI with your own key as default AI engine.",
"enjoyAiEngineTips": "Use EnjoyAI as default AI engine. It is a paid service.",
"openaiKeySaved": "OpenAI key saved",
"openaiConfigSaved": "OpenAI config saved",
"openaiKeyRequired": "OpenAI key required, please set it in settings",
"baseUrl": "baseURL",
"customModels": "Custom models",
"customModelsDescription": "Customize your LLM models. Split by comma.",
"model": "model",
"key": "key",
"leaveEmptyToUseDefault": "Leave empty to use default",
"openaiBaseUrlDescription": "Any endpoint that supports OpenAI style API.",
"newConversation": "New conversation",
"selectAiRole": "Select AI role",
"chooseFromPresetGpts": "Choose from preset GPTs",
"custom": "Custom",
"startConversation": "Start conversation",
"editConversation": "Edit conversation",
"deleteConversation": "Delete conversation",
"deleteConversationConfirmation": "Are you sure to delete this conversation inclcuding all messages?",
"noConversationsYet": "No conversations yet",
"conversationMigrated": "Conversation has been migrated to Chat",
"conversationDeleted": "Conversation deleted",
"translation": "Translation",
"pressEnterToSend": "Press enter to send",
"send": "Send",
"sending": "Sending",
"sent": "Sent",
"copy": "Copy",
"cut": "cut",
"paste": "paste",
"selectAll": "Select all",
"copyText": "Copy text",
"resend": "Resend",
"anotherRequestIsPending": "Another request is pending",
"selectScenario": "Select scenario",
"selectAiEngine": "Select AI engine",
"selectAiModel": "Select AI model",
"selectTtsEngine": "Select TTS engine",
"selectTtsModel": "Select TTS model",
"selectTtsVoice": "Select TTS voice",
"selectTtsLanguage": "Select TTS Language",
"pleaseSelectTtsVoice": "Please select TTS voice",
"youNeedToSetupApiKeyBeforeUsingOpenAI": "You need to setup API key before using OpenAI",
"ensureYouHaveOllamaRunningLocallyAndHasAtLeastOneModel": "Ensure you have Ollama running locally and has at least one model",
"creatingSpeech": "Speech is creating",
"textToSpeech": "Convert text to speech",
"shadowing": "Shadowing",
"shadowingAudio": "Shadowing audio",
"shadowingVideo": "Shadowing video",
"shadowingExercise": "Shadowing exercise",
"addingResource": "Adding resource",
"pronunciationAssessment": "Pronunciation assessment",
"score": "score",
"inputUrlToStartReading": "Input url to start reading",
"read": "read",
"addStory": "add story",
"context": "context",
"keyVocabulary": "key vocabulary",
"addedStories": "added stories",
"addedAudios": "added audios",
"addedVideos": "added videos",
"addedDocuments": "added documents",
"document": "document",
"frontSide": "front side",
"backSide": "back side",
"aiExtractVocabulary": "AI extract vocabulary",
"toggleReadable": "Toggle readable",
"extracting": "Extracting",
"extractionFailed": "Extraction failed",
"extractedSuccessfully": "Extracted successfully",
"lookup": "Lookup",
"reLookup": "Re-Lookup",
"lookupAll": "Look up all",
"lookingUp": "Looking up",
"pending": "Pending",
"thereAreLookupsProcessing": "There are {{count}} lookups processing",
"thereAreLookupsPending": "There are {{count}} lookups waiting",
"lookupFailed": "Lookup failed",
"lookedUpSuccessfully": "Looked up successfully",
"noRecordsFound": "No records found",
"pleaseTryLater": "Please try later",
"author": "author",
"narrator": "narrator",
"downloadSample": "Download sample",
"buy": "Buy",
"from": "from",
"presenter": "presenter",
"downloadAudio": "Download audio",
"downloadVideo": "Download video",
"recordTooShort": "Record too short",
"rankings": "Rankings",
"dayRankings": "Day rankings",
"weekRankings": "Week rankings",
"monthRankings": "Month rankings",
"allRankings": "All time rankings",
"noOneHasRecordedYet": "No one has recorded yet",
"activities": "Activities",
"square": "Square",
"noOneSharedYet": "No one shared yet",
"sharedSuccessfully": "Shared successfully",
"shareFailed": "Share failed",
"shareAudio": "Share audio",
"sharedAudio": "Shared an audio resource",
"areYouSureToShareThisAudioToCommunity": "Are you sure to share this audio to the Square of community?",
"shareVideo": "Share video",
"sharedVideo": "Shared a video resource",
"cannotShareLocalVideo": "Cannot share local video",
"areYouSureToShareThisVideoToCommunity": "Are you sure to share this video to the Square of community?",
"sharePrompt": "Share prompt",
"sharedPrompt": "Shared a prompt",
"areYouSureToShareThisPromptToCommunity": "Are you sure to share this prompt to the Square of community?",
"shareRecording": "Share recording",
"sharedRecording": "Shared a recording",
"areYouSureToShareThisRecordingToCommunity": "Are you sure to share this recording to the Square of community?",
"shareStory": "Share story",
"sharedStory": "Shared a story",
"areYouSureToShareThisStoryToCommunity": "Are you sure to share this story to the Square of community?",
"shareGpt": "Share GPT",
"sharedGpt": "Shared a GPT",
"areYouSureToShareThisGptToCommunity": "Are you sure to share this GPT to the Square of community?",
"shareNote": "Share note",
"sharedNote": "Shared a note",
"areYouSureToShareThisNoteToCommunity": "Are you sure to share this note to the Square of community?",
"saveAiAssistant": "Save this AI assistant",
"addToLibary": "Add to library",
"areYouSureToAddThisVideoToYourLibrary": "Are you sure to add this video to library?",
"areYouSureToAddThisAudioToYourLibrary": "Are you sure to add this audio to library?",
"audioAlreadyAddedToLibrary": "Audio already added to library",
"videoAlreadyAddedToLibrary": "Video already added to library",
"audioSuccessfullyAddedToLibrary": "Audio successfully added to library",
"videoSuccessfullyAddedToLibrary": "Video successfully added to library",
"sendToAIAssistant": "Send to AI assistant",
"removeSharing": "Remove sharing",
"areYouSureToRemoveThisSharing": "Are you sure to remove this sharing?",
"removeSharingSuccessfully": "Remove sharing successfully",
"removeSharingFailed": "Remove sharing failed",
"generatingIpa": "Generating IPA",
"generatedIpaSuccessfully": "Generated IPA successfully",
"generatingIpaFailed": "Generating IPA failed: {{error}}",
"translating": "Translating",
"translatedSuccessfully": "Translated successfully",
"translationFailed": "Translation failed: {{error}}",
"allRecordingsSynced": "All recordings synced",
"syncingRecordings": "Syncing {{count}} recordings",
"failedToSyncRecordings": "Syncing recordings failed",
"downloadUrlNotResolved": "Download URL not resolved",
"resolvingDownloadUrl": "Resolving download URL",
"waveformIsDecoded": "Waveform is decoded",
"decodingWaveform": "Decoding waveform",
"failedToDecodeWaveform": "Failed to decode waveform",
"transcribedSuccessfully": "Transcribed successfully",
"transcribing": "Transcribing",
"notTranscribedYet": "Not transcribed yet",
"preparingAudio": "Preparing audio",
"preparingVideo": "Preparing video",
"itMayTakeAWhileToPrepareForTheFirstLoad": "It may take a while to prepare for the first load. Please be patient.",
"loadingTranscription": "Loading transcription",
"cannotFindMicrophone": "Cannot find microphone",
"savingRecording": "Saving recording",
"recordingSaved": "Recording saved",
"failedToSaveRecording": "Failed to save recording",
"speechNotCreatedYet": "Speech not created yet",
"goToConversation": "Go to conversation",
"mediaInfo": "Media Info",
"editRegion": "edit region",
"dragRegionBorderToEdit": "Drag region border to edit",
"startRecording": "start recording",
"stopRecording": "stop recording",
"playRecording": "play recording",
"clickAnyWordToSelect": "Click any words to select. Press shift to select multiple words.",
"currentRegionIsBeingEdited": "Current region is being edited",
"compare": "compare",
"selectRegion": "select region",
"autoGroup": "auto group",
"captionTabs": {
"selected": "Selected",
"translation": "Translation",
"analysis": "Analysis",
"note": "Note"
},
"translateSentence": "translate sentenece",
"reTranslate": "re-translate",
"analyzeSentence": "analyze sentenece",
"useAIAssistantToAnalyze": "Use AI assistant to analyze",
"reAnalyze": "re-analyze",
"aiDictionary": "AI dictionary",
"aiLookup": "AI lookup",
"aiTranslate": "AI translate",
"cambridgeDictionary": "Cambridge dictionary",
"customizeShortcuts": "Customize shortcuts",
"customizeShortcutsTip": "Click to change",
"customizeShortcutsRecordingTip": "Recording new shortcut",
"customizeShortcutsInvalidToast": "Your shortcut should have two modifier (Ctrl, Alt, Shift, or Meta) at most and one regular key, like 'Ctrl+C'.",
"customizeShortcutsConflictToast": "{{input}} conflicts with the existing {{otherHotkeyName}} shortcut.",
"customizeShortcutsUpdated": "Changes saved",
"following": "following",
"followers": "followers",
"allUsers": "all users",
"allTypes": "all types",
"recordingType": "Recording",
"mediumType": "Audio/Video",
"storyType": "Story",
"promptType": "Prompt",
"gptType": "GPT",
"noteType": "Note",
"follow": "follow",
"unfollow": "unfollow",
"noFollowersYet": "No followers yet",
"notFollowingAnyoneYet": "Not following anyone yet",
"startToNote": "Start to note",
"newNote": "New note",
"writeNoteHere": "Write your note here",
"deleteNote": "Delete note",
"areYouSureToDeleteThisNote": "Are you sure to delete this note?",
"notesCount": "{{count}} notes",
"source": "source",
"noNotesYet": "No notes yet",
"editTranscription": "Edit transcription",
"saveTranscription": "Save transcription",
"areYouSureToSaveTranscription": "It will perform a force-alignment between the audio and your edited transcription. Are you sure to continue?",
"summarize": "Summarize",
"noResultsFound": "No results found",
"readThrough": "Read through",
"selectCrypto": "Select crypto",
"newAssessment": "New Assessment",
"record": "Record",
"upload": "Upload",
"noFileOrRecording": "No file uploaded or recording",
"referenceText": "Reference text",
"inputReferenceTextOrLeaveItBlank": "Input the reference text or leave it blank",
"assessing": "Assessing",
"assessedSuccessfully": "Assessed successfully",
"optinal": "Optional",
"uploadTranscriptFile": "Upload transcript file",
"uploadTranscriptFileDescription": "Support formats: txt/srt/vtt.",
"pleaseUploadTranscriptFile": "Please upload transcript file",
"onlyTextFileIsSupported": "Only text file is supported",
"isolateVoice": "Isolate voice(Experimental)",
"isolateVoiceDescription": "Isolates voice from any music or background ambience. More accurate but slower",
"sortBy": "Sort by",
"createdAtDesc": "Created at desc",
"createdAtAsc": "Created at asc",
"updatedAtDesc": "Updated at desc",
"updatedAtAsc": "Updated at asc",
"scoreDesc": "Score desc",
"scoreAsc": "Score asc",
"recordingsDurationDesc": "Recordings duration",
"recordingsCountDesc": "Recordings count",
"all": "All",
"allLanguages": "All languages",
"search": "Search",
"noData": "No data",
"selectedFiles": "Selected files",
"moreOptions": "More options",
"lessOptions": "Less options",
"previousChapter": "Previous",
"nextChapter": "Next",
"examples": "Examples",
"howToFinishChapter": "Please shadow the examples and record your voice to finish the chapter.",
"continueLearning": "Continue learning",
"enrollNow": "Enroll now",
"enrollments": "Enrollments",
"noLikesYet": "No likes yet",
"apiConnectTime": "API Connect Time ({{apiUrl}})",
"storageConnectTime": "Storage Connect Time",
"ipInfo": "IP Information",
"platformInfo": "Platform Information",
"networkState": "Network State",
"connectError": "Connect Error",
"refresh": "refresh",
"deleteChat": "Delete chat",
"deleteChatConfirmation": "Are you sure to delete this chat?",
"deleteChatAgent": "Delete agent",
"deleteChatAgentConfirmation": "Are you sure to delete this chat agent?",
"deleteMessage": "Delete message",
"deleteMessageConfirmation": "Are you sure to delete this message?",
"refine": "Refine",
"suggestion": "Suggestion",
"editChat": "Edit chat",
"newChat": "New chat",
"addChat": "Add chat",
"recents": "Recents",
"agentsManagement": "Agents management",
"newAgent": "New agent",
"editAgent": "Edit agent",
"addToChat": "Add to chat",
"introduction": "Introduction",
"introduceYourself": "Introduce yourself",
"prompt": "Prompt",
"extraPromptForChat": "Extra prompt for this chat",
"promptPreview": "Prompt preview",
"noChatSelected": "No chat selected",
"reRecord": "Re-record",
"quickStart": "Quick start",
"itsYourTurn": "It's your turn. Please start speaking.",
"displayContent": "Display content",
"hideContent": "Hide content",
"audioInput": "Audio input",
"textInput": "Text input",
"increasePlaybackRate": "Increase playback rate",
"descreasePlaybackRate": "Descrease playback rate",
"usage": "Usage",
"cannotFindSourceFile": "Cannot find source file",
"cleanUp": "Clean up",
"cleanUpConfirmation": "Are you sure to remove resources without source file?",
"cleanedUpSuccessfully": "Cleaned up successfully",
"libraryDescriptions": {
"library": "Contains all files created by Enjoy while you are using the app.",
"database": "Records all your activities and settings.",
"settings": "Save all your settings.",
"audios": "Contains all audio files you added.",
"videos": "Contains all video files you added.",
"segments": "Contains all segments you make recording or note.",
"speeches": "Contains all speeches created by AI TTS.",
"recordings": "Contains all recordings you made.",
"whisper": "Contains all whisper models you downloaded.",
"waveforms": "Contains all waveforms decoded from audio/videos. They're for caching. It's save to delete them.",
"logs": "Contains some logs helpful for debugging.",
"cache": "Contains cached files. They will be cleaned up automatically."
},
"recordingIsTooLongToAssess": "Recording is too long to assess. The maximum duration is 60 seconds.",
"recorderConfig": "Recorder config",
"recorderConfigSaved": "Recorder config saved",
"recorderConfigDescription": "Advanced settings for recorder",
"lookupOnMouseOver": "Lookup On Click",
"selectDictFile": "Select Dict Files (extension with .mdx and .mdd files)",
"dictFiles": "Dict Files",
"dictFileRequired": "Dict file (the extension is mdx) not found.",
"dictFileExist": "{{name}} has already been imported",
"dictFileAddSuccess": "Add {{name}} successfully",
"dictFileRemoveSuccess": "Remove {{name}} successfully",
"dictFileSetDefaultSuccess": "Successfully set as default dictionary",
"dictFileRemoveDefaultSuccess": "Operation successful",
"dictionaries": "Dictionaries",
"import": "Import",
"default": "Default",
"setDefault": "Set Default",
"dictSettings": "Dictionaries Settings",
"dictSettingsShort": "Dictionaries",
"importDict": "Import Dictionary",
"failedToImportDict": "Failed to import dictionary: {{error}}",
"dictRemoved": "Dictionary removed successfully",
"interrupted": "Interrupted",
"paused": "Paused",
"completedAndChecking": "Completed (Checking)",
"decompressing": "Decompressing",
"resume": "Resume",
"dictEmpty": "No dictionaries imported",
"removing": "Removing",
"removeDictTitle": "Are you sure you want to delete this dictionary? ",
"removeDictDescription": "It will delete the dictionary file from your local computer and you will have to download it again next time.",
"downloadingDict": "Downloading",
"removeDefault": "Cancel default",
"selectAdaptionDictTitle": "Select adapted dictionary",
"selectMdictFileOrDirTitle": "Select dict files (.mdx and optional .mdd) or folder",
"dictImportSlowTip": "Checking...(It may take longer if the dictionary file is large.)",
"importAdaptionDict": "Import the adapted dictionary",
"adaptionDictTip": "The adapted dictionaries have better usability.",
"howToDownload": "How to download?",
"selectDir": "Select Folder",
"selectFile": "Select File",
"importMdictFile": "Import the original dictionary file",
"mdictFileTip": "Directly import .mdx .mdd format files (.mdx files are required, .mdd files are optional and can have multiple).",
"authorizationExpired": "Your authorization has expired. Please login again.",
"selectUser": "Select user",
"export": "Export",
"exportRecordings": "Export recording",
"exportRecordingsConfirmation": "Select the highest score of the recordings of each segment to export as a single file.",
"exportRecordingsSuccess": "Export recordings successfully",
"upgrade": "Upgrade",
"upgradeNotice": "Enjoy App v{{version}} is available. Please upgrade to the latest version.",
"downloadedTranscriptionFromCloud": "Downloaded transcription from cloud",
"gpt": {
"engine": "AI engine",
"model": "AI model",
"temperature": "Temperature",
"temperatureDescription": "The higher the value, the more creative the generated text, otherwise it is more stable",
"maxCompletionTokens": "Max Tokens",
"maxCompletionTokensDescription": "The maximum number of tokens consumed per interaction, -1 means no limit",
"presencePenalty": "Presence Penalty",
"presencePenaltyDescription": "-2.0 ~ 2.0, the higher the value, the more likely to expand to new topics",
"frequencyPenalty": "Frequency Penalty",
"frequencyPenaltyDescription": "-2.0 ~ 2.0, the higher the value, the more likely to reduce repetition",
"historyBufferSize": "History Buffer Size",
"historyBufferSizeDescription": "The more context, the more coherent the generated text, the more resources consumed",
"numberOfChoices": "Number of Choices",
"numberOfChoicesDescription": "When greater than 1, it will generate multiple versions of text each time"
},
"tts": {
"engine": "TTS 引擎",
"model": "TTS Model",
"voice": "TTS Voice",
"language": "TTS Language"
},
"chatMemberUpdated": "Chat member updated successfully",
"chatMemberRemoved": "Chat member removed successfully",
"chatMemberAdded": "Chat member added successfully",
"confirmBeforeSending": "You can re-record, modify the text content, and click send after confirming there are no errors.",
"chatNoContentYet": "Chat has no content yet.",
"removeChatMember": "Remove member",
"removeChatMemberConfirmation": "Are you sure to remove this member from the chat?",
"addMember": "Add member",
"added": "Added",
"migrateToChat": "Migrate to chat",
"memberJoined": "{{name}} has joined the chat.",
"memberLeft": "{{name}} has left the chat.",
"templates": "templates",
"askAgentToReply": "Ask @{{name}} to reply",
"inviteAgentInChatAndReply": "Invite @{{name}} into the chat and reply",
"chatInputPlaceholder": "Enter to send, Shift+Enter to new line, @ to mention agents",
"replyOnlyWhenMentioned": "Reply only when mentioned",
"replyOnlyWhenMentionedDescription": "Will only reply when you mention this agent using @",
"bulkDelete": "Bulk delete",
"deleteRecordingsWithoutAssessment": "Delete recordings without assessment",
"deleteRecordingsWithScoreLessThan90": "Delete recordings with score less than 90",
"deleteRecordingsWithScoreLessThan80": "Delete recordings with score less than 80",
"deleteAllRecordings": "Delete all recordings",
"noRecordingsToDelete": "No recordings to delete",
"recordingsDeletedSuccessfully": "Recordings deleted successfully",
"deleting": "Deleting",
"bulkDeleteRecordingsConfirmation": "This operation cannot be undone. Your recordings stats will be unchaged, but the recording files will be deleted permanently.",
"diskUsage": "Disk Usage",
"diskUsageDescription": "The disk usage of Enjoy App.",
"releaseDiskSpace": "Release",
"bulkDeleteRecordings": "Delete Recordings",
"bulkDeleteAborted": "Bulk delete aborted",
"notFound": "Not found",
"saved": "Saved",
"deleteDocumentConfirm": "Are you sure to delete this document?",
"documentDeletedSuccessfully": "Document deleted successfully",
"autoTranslate": "Auto translate",
"autoNextSpeech": "Auto speech",
"failedToLoadLink": "Failed to load link",
"refreshSpeech": "Refresh speech",
"locateParagraph": "Locate paragraph",
"close": "Close",
"config": "Config",
"temperature": "Temperature",
"encoderProvider": "Encoder Provider",
"decoderProvider": "Decoder Provider",
"enableGPU": "Enable GPU",
"openPackagesDir": "Open models dir",
"whisperModelDescription": "Model will be downloaded when first used.",
"whisperEngineDescription": "OpenAI Whisper with inference done via the ONNX runtime.",
"whisperCppEngineDescription": "C++ port of the Whisper architecture.",
"ttsService": "Text to Speech Service",
"openaiTtsServiceDescription": "Use OpenAI TTS service from your own key.",
"enjoyTtsServiceDescription": "Use TTS service provided by Enjoy. OpenAI or Azure is supported.",
"compressMediaBeforeAdding": "Compress media before adding",
"keepOriginalMedia": "Keep original media",
"myPronunciation": "My pronunciation",
"originalPronunciation": "Original pronunciation",
"reloadApp": "reload app",
"exit": "Exit",
"layout": "Layout",
"horizontal": "Horizontal",
"vertical": "Vertical",
"copied": "Copied",
"copyFullText": "Copy full text",
"checkingForUpdate": "Checking for update",
"updateAvailable": "Update available",
"quitAndInstall": "Quit and install",
"pleaseSelect": "Please select"
}