启动任务
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.DS_Store
|
||||
.jupyter
|
||||
.ipynb_checkpoints
|
||||
61
new-edition-drafts/2024-01-07-启动任务.md
Normal file
61
new-edition-drafts/2024-01-07-启动任务.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# 启动任务
|
||||
|
||||
第一步,不是 “教学”,不说 “方法”,没有 “技巧”,而是 “**直接干活**”。
|
||||
|
||||
## 任务要点
|
||||
|
||||
* 说自己想说的话
|
||||
* 每天至少三小时
|
||||
* 每天都要交作业
|
||||
|
||||
### 说自己想说的话
|
||||
|
||||
* 先用母语写下差不多 100~150 字,记录 “自己想说的话”;随着任务的推进,逐步增加篇幅。
|
||||
* 使用 AI 辅助工具将其转换成英文表达
|
||||
* 使用 AI 辅助工具将英文文字转换成语言文件
|
||||
* 跟读、朗读、自制完整背诵。
|
||||
|
||||
### 每天至少三小时
|
||||
|
||||
如果做不到每天三小时,那就算了吧 —— 当然,其实谁都可以做到的。
|
||||
|
||||
只有大声开口练习的时间才算数 —— 注意,一定是 “大声”;虽然开口了,但只不过是小声嘟囔,那不算数。
|
||||
|
||||
* 折腾文本的时间不算;
|
||||
* 反复听录音却不开口或只是跟着嘟囔的时间不算;
|
||||
* 若是还有精力,其他时间里还可以阅读英文书籍文章、看英文视频电影剧集,但,只要没有大声开口都不算……
|
||||
* 随着时间的推移,复习之前的任务,朗读、重新录音的时间可以计入。
|
||||
|
||||
虽然最好是 “一口气三小时”,但,“累计三小时” 也可以。
|
||||
|
||||
### 每天都要交作业
|
||||
|
||||
作业不是要 “交给老师”,而是自己存档备份。
|
||||
|
||||
作业内容包括:
|
||||
|
||||
1. 最终生成的文字和语音
|
||||
2. 自己的第一遍朗读录音
|
||||
3. 自己的最后一遍朗读录音
|
||||
|
||||
这些记录,是将来 “在社群里当老师”,“在家里当老师”,或者起码 “给自己当老师”、“给自家孩子当老师” 必须的资格证明。
|
||||
|
||||
### 简要的补充说明
|
||||
|
||||
AI 辅助工具,付费方案最好的是 OpenAI,无论是文字生成、还是语音生成。免费方案,文字生成,可以用 LM Studio;语音生成,可以用 MS Edge TTS。另外,网上也有很多方案,可以自己想办法。
|
||||
|
||||
虽然最初的时候,你可能要自己折腾 AI 辅助工具,但,我们在开发 “辅助工具”,也将会持续完善,很快就会分发到社群成员手里,任何小白都可以直接上手使用。
|
||||
|
||||
三小时之外,如果你有时间精力,依然应该花时间输入英文,无论是阅读、还是听或者看。
|
||||
|
||||
这个任务最关键的一点是,“没有老师”、“没有他人教学或者纠正”、“没有他人监督和促进” —— 只靠自己。
|
||||
|
||||
最初的三个月,没有任何技巧而言,就是 “干练”、“硬练”……
|
||||
|
||||
事实上,最初三个月最重要的 “核心任务”,不是发音技巧什么的,而是 “极大提高英文记忆力” —— 所以,每天结束的时候,都得以 “熟练背诵” 作为结束。
|
||||
|
||||
在 “写自己想说的话” 的时候,大多数人会遇到 “说不清楚的障碍”,有空的话,可以先去补补《李笑来的写作课》。
|
||||
|
||||
关于这个任务的 “教学讲解”,此后会详细深入。现在最重要的是,“直接开始干活”。
|
||||
|
||||
另外,我 2010 年写的,2015 年网络发布,2019 年上传到 github 上的《人人都能用英语》,也许你应该去大致扫一遍。2024 年,我要做的事情之一,就是写《人人都能用英语》的新版,或许更名为《多语的真相》。
|
||||
166
new-edition-drafts/jupyter-notebooks/daily-speech-practice.ipynb
Normal file
166
new-edition-drafts/jupyter-notebooks/daily-speech-practice.ipynb
Normal file
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f330d08f-fa3c-4cf4-bf53-136be20393e9",
|
||||
"metadata": {
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Install or update openai modules \n",
|
||||
"%pip install openai\n",
|
||||
"# %pip install --upgrade openai"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "71ad2e48-3b33-42d3-8e4c-9f89c61110de",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Load Modules\n",
|
||||
"from openai import OpenAI\n",
|
||||
"import IPython\n",
|
||||
"from datetime import datetime"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "7a492b90-fa90-4d8b-934a-05d0cc2ff2c1",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"client = OpenAI(\n",
|
||||
" # replace openai api key below (which is invalid) with your own\n",
|
||||
" api_key=\"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\" \n",
|
||||
")\n",
|
||||
"\n",
|
||||
"role_definition = \"\"\"\n",
|
||||
"你是我的英语教练。\n",
|
||||
"请将我的话改写成英文。\n",
|
||||
"不需要逐字翻译。\n",
|
||||
"请分析清楚我的内容,而后用英文重新逻辑清晰地组织它。\n",
|
||||
"请使用地道的美式英语,纽约腔调。\n",
|
||||
"请尽量使用日常词汇,尽量优先使用短语动词或者习惯用语。\n",
|
||||
"每个句子最长不应该超过 20 个单词。\n",
|
||||
"\"\"\"\n",
|
||||
"\n",
|
||||
"user_prompt = \"\"\"\n",
|
||||
"人们对高管、首席执行官或庞大业务部门的领导者有不一样的憧憬。\n",
|
||||
"他们认为,在那个级别的每个人都有足够的经验和智慧,至少看起来知道自己在做什么。\n",
|
||||
"他们假定那里有深思熟虑、战略和长远思考,以及握手言和的合理交易。\n",
|
||||
"但有些时候,它是高中;甚至有些时候,它是幼儿园。\n",
|
||||
"\"\"\"\n",
|
||||
"\n",
|
||||
"# how many versions needed.\n",
|
||||
"number_of_choices = 3\n",
|
||||
"\n",
|
||||
"rspd_translation = client.chat.completions.create(\n",
|
||||
" model=\"gpt-4\",\n",
|
||||
" messages=[\n",
|
||||
" {\n",
|
||||
" \"role\": \"system\", \n",
|
||||
" \"content\": role_definition\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"role\": \"user\", \n",
|
||||
" \"content\": user_prompt\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" n = number_of_choices \n",
|
||||
")\n",
|
||||
"\n",
|
||||
"for rspd in rspd_translation.choices:\n",
|
||||
" print(f\"{rspd.index+1}.\\n{rspd.message.content}\\n\\n\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "4a92f81f-fe8d-4cc8-a770-13ea1e12259f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Create audios for each versions (three was set as default previously.)\n",
|
||||
"\n",
|
||||
"voice_performer = \"alloy\"\n",
|
||||
"# alloy, echo, fable, onyx, nova, and shimmer, the last two of which are femail voices.\n",
|
||||
"\n",
|
||||
"for i in range(number_of_choices):\n",
|
||||
" speech_file_path = f'{datetime.now().strftime(\"%Y%m%d_%H%M%S\")}_speech.mp3'\n",
|
||||
" \n",
|
||||
" rspd_audio = client.audio.speech.create(\n",
|
||||
" model=\"tts-1\",\n",
|
||||
" voice=voice_performer,\n",
|
||||
" input=rspd_translation.choices[i].message.content\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
" rspd_audio.stream_to_file(speech_file_path)\n",
|
||||
" \n",
|
||||
" IPython.display.Audio(speech_file_path)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "d28f1714-bdbe-4f29-b52c-56a07af6d60e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Or else, you could rewrite your own version for open ai tts\n",
|
||||
"your_version = \"\"\"\n",
|
||||
"\n",
|
||||
"\"\"\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "4696c0dc-8983-475b-b376-ec0f059cffa8",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Create the audio of your version\n",
|
||||
"speech_file_path = f'{datetime.now().strftime(\"%Y%m%d_%H%M%S\")}_speech.mp3'\n",
|
||||
"\n",
|
||||
"voice_performer = \"alloy\"\n",
|
||||
"# alloy, echo, fable, onyx, nova, and shimmer, the last two of which are femail voices.\n",
|
||||
"\n",
|
||||
"rspd_audio = client.audio.speech.create(\n",
|
||||
" model=\"tts-1\",\n",
|
||||
" voice=voice_performer,\n",
|
||||
" input=your_version\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"rspd_audio.stream_to_file(speech_file_path)\n",
|
||||
"\n",
|
||||
"IPython.display.Audio(speech_file_path)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.18"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in New Issue
Block a user