08-21-2048, chapter 4.4-linking-complete
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
1000-hours/public/audios/brown-gate-us-female.mp3
Normal file
BIN
1000-hours/public/audios/brown-gate-us-female.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/brown-gate-us-male.mp3
Normal file
BIN
1000-hours/public/audios/brown-gate-us-male.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/increase-us-female.mp3
Normal file
BIN
1000-hours/public/audios/increase-us-female.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/increase-us-male.mp3
Normal file
BIN
1000-hours/public/audios/increase-us-male.mp3
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
1000-hours/public/audios/let-them-us-female.mp3
Normal file
BIN
1000-hours/public/audios/let-them-us-female.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/let-them-us-male.mp3
Normal file
BIN
1000-hours/public/audios/let-them-us-male.mp3
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
1000-hours/public/audios/studying-us-female.mp3
Normal file
BIN
1000-hours/public/audios/studying-us-female.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/studying-us-male.mp3
Normal file
BIN
1000-hours/public/audios/studying-us-male.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/ten-cups-us-female.mp3
Normal file
BIN
1000-hours/public/audios/ten-cups-us-female.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/ten-cups-us-male.mp3
Normal file
BIN
1000-hours/public/audios/ten-cups-us-male.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/thinking-us-female.mp3
Normal file
BIN
1000-hours/public/audios/thinking-us-female.mp3
Normal file
Binary file not shown.
BIN
1000-hours/public/audios/thinking-us-male.mp3
Normal file
BIN
1000-hours/public/audios/thinking-us-male.mp3
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -29,19 +29,10 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": 22,
|
||||
"id": "71d35cd9",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"pygame 2.6.0 (SDL 2.28.4, Python 3.12.2)\n",
|
||||
"Hello from the pygame community. https://www.pygame.org/contribute.html\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import edge_tts\n",
|
||||
"import os\n",
|
||||
@@ -73,7 +64,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 20,
|
||||
"id": "4146f92e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -82,22 +73,9 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"['en-US-GuyNeural', 'en-US-AriaNeural']\n",
|
||||
"apple\n",
|
||||
"../audios/apple-us-male.mp3 exists, skipping...\n",
|
||||
"../audios/apple-us-female.mp3 exists, skipping...\n",
|
||||
"\n",
|
||||
"impossible\n",
|
||||
"../audios/impossible-us-male.mp3 exists, skipping...\n",
|
||||
"../audios/impossible-us-female.mp3 exists, skipping...\n",
|
||||
"\n",
|
||||
"possible\n",
|
||||
"../audios/possible-us-male.mp3 created\n",
|
||||
"../audios/possible-us-female.mp3 created\n",
|
||||
"\n",
|
||||
"ichthyosaur\n",
|
||||
"../audios/ichthyosaur-us-male.mp3 created\n",
|
||||
"../audios/ichthyosaur-us-female.mp3 created\n",
|
||||
"\n"
|
||||
"network\n",
|
||||
"../audios/network-us-male.mp3 created\n",
|
||||
"../audios/network-us-female.mp3 created\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -114,11 +92,7 @@
|
||||
" print(voices)\n",
|
||||
"\n",
|
||||
"words = \"\"\"\n",
|
||||
"apple,\n",
|
||||
"impossible,\n",
|
||||
"possible,\n",
|
||||
"ichthyosaur,\n",
|
||||
"\n",
|
||||
"network\n",
|
||||
"\"\"\"\n",
|
||||
"\n",
|
||||
"for word in words.strip().split(','):\n",
|
||||
@@ -132,7 +106,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"execution_count": 21,
|
||||
"id": "2d46cde4",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -140,7 +114,7 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"a-woman--without-her--man-is-nothing_openai.mp3\n"
|
||||
"she-will-cherish-those-memories-and-ever-hold-them-close-to-her-heart_openai.mp3\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -160,7 +134,7 @@
|
||||
" ) as response:\n",
|
||||
" response.stream_to_file(path)\n",
|
||||
" \n",
|
||||
"sentence = \"A woman..., without her..., man is nothing.\"\n",
|
||||
"sentence = \"She will cherish those memories and ever hold them close to her heart.\"\n",
|
||||
"\n",
|
||||
"# remove all punctuation at the end of sentence,\n",
|
||||
"# replace all spaces and punctuations in the sentence with dash\n",
|
||||
@@ -286,6 +260,52 @@
|
||||
"* voice = \"en-CA-ClaraNeural\" (Female)\n",
|
||||
"* voice = \"en-CA-LiamNeural\" (Male)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 38,
|
||||
"id": "7350bdce",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"../audios/ten-cups-us-alloy.mp3\n",
|
||||
"../audios/ten-cups-us-female.mp3\n",
|
||||
"../audios/increase-us-alloy.mp3\n",
|
||||
"../audios/increase-us-female.mp3\n",
|
||||
"../audios/brown-gate-us-alloy.mp3\n",
|
||||
"../audios/brown-gate-us-female.mp3\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# generate sentences using edge-tts\n",
|
||||
"sentences = \"\"\"\n",
|
||||
"ten cups\n",
|
||||
"increase\n",
|
||||
"brown gate\n",
|
||||
"\"\"\"\n",
|
||||
"# split the sentences into lines\n",
|
||||
"sentences = [s for s in sentences.strip().split(\"\\n\") if s]\n",
|
||||
"for sentence in sentences:\n",
|
||||
" # get the first three worrds and replace the first with 'sentence', join them with '-'ArithmeticError\n",
|
||||
" # filename = f'../audios/sentence-{sentence.split(\" \")[1]}-{sentence.split(\" \")[2]}.mp3'\n",
|
||||
" # for voice in [\"en-US-GuyNeural\", \"en-US-AriaNeural\"]:\n",
|
||||
" for voice in [\"alloy\", \"nova\"]:\n",
|
||||
"\n",
|
||||
" filename = f'../audios/{sentence.rstrip(\",.!?\").replace(\"'\", \"\").replace(\" \", \"-\")}-us-{voice}.mp3'.replace(\"alloy\", \"male\").replace(\"nova\", \"female\")\n",
|
||||
" # filename = f'../audios/{sentence.rstrip(\",.!?\").replace(\"'\", \"\").replace(\" \", \"-\")}-us-{voice}.mp3'.replace(\"en-US-GuyNeural\", \"male\").replace(\"en-US-AriaNeural\", \"female\")\n",
|
||||
" print(filename)\n",
|
||||
" # await generate_edge_tts_audio(sentence, filename, voice=voice, verbose=True, overwrite=True, play=True)\n",
|
||||
" get_openai_tts_audio(sentence, filename, performer=voice)\n",
|
||||
" \n",
|
||||
" \n",
|
||||
"\n",
|
||||
" # get_openai_tts_audio(sentence, f'../audios/{sentence.replace(\" \", \"-\")}-alloy.mp3', performer='alloy')\n",
|
||||
" # get_openai_tts_audio(sentence, f'../audios/{sentence.replace(\" \", \"-\")}-nova.mp3', performer='nova')\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
@@ -58,9 +58,13 @@
|
||||
|
||||
## 4.4.2.2. 叠音(geminates)
|
||||
|
||||
上一个音节末尾的辅音和下一个音节开头的辅音相同的时候,这一对相同的辅音被称作**叠音**(*geminates*)。在连贯的自然语音中,这两个辅音就只发声一次 —— 但听起来的时候,有可能感受到前一个辅音存在造成细微停顿。它从机制上来看,其实和**省音**([4.4.2.1](2.4.3-cc#_2-4-3-1-省音-elision))一样。其实哪怕相邻的两个辅音相似的时候,也会发生同样的现象。
|
||||
上一个音节末尾的辅音和下一个音节开头的辅音相同的时候,这一对相同的辅音被称作**叠音**(*geminates*)。在连贯的自然语音中,这两个辅音就只发声一次 —— 但听起来的时候,有可能感受到前一个辅音存在造成细微停顿。它从机制上来看,其实和**省音**一样。其实哪怕相邻的两个辅音相似的时候,也会发生同样的现象。
|
||||
|
||||
比如,*that time*, 不是 <span class="pho">ðæt taɪm/</span>,而是 <span class="pho alt">ðæ·t̬aɪm</span><span class="speak-word-inline" data-audio-us-male="/audios/at-that-time-us-male.mp3" data-audio-us-female="/audios/at-that-time-us-female.mp3"></span> —— 第一个 <span class="pho">t</span> 由于后面跟着一个辅音,于是产生了**省音**,听不到了,但,该有的停顿却依然在,在这里我们用 <span class="pho">·</span> 代表那个停顿 ;而后,第二个 <span class="pho">t</span> 与第三个 <span class="pho">t</span> 是**叠音**,这两个 <span class="pho">t</span> 只发声一次。又比如,*bad day*, 不是 <span class="pho alt">bæd deɪ</span>,而是 <span class="pho alt">bæ·deɪ</span><span class="speak-word-inline" data-audio-us-male="/audios/a-bad-day-us-male.mp3" data-audio-us-female="/audios/a-bad-day-us-female.mp3"></span>。 再比如,*with this*, 不是 <span class="pho alt">wɪθ ðɪs</span>,而是 <span class="pho alt">wɪ·ðɪs</span><span class="speak-word-inline" data-audio-us-male="/audios/with-this-us-male.mp3" data-audio-us-female="/audios/with-this-us-female.mp3"></span>。
|
||||
比如,*at that time*, 不是 <span class="pho alt">æt ðæt taɪm</span>,而是 <span class="pho alt">æ·ðæ·t̬aɪm</span><span class="speak-word-inline" data-audio-us-male="/audios/at-that-time-us-male.mp3" data-audio-us-female="/audios/at-that-time-us-female.mp3"></span> —— 第一个 <span class="pho">t</span> 由于后面跟着一个辅音,于是产生了**省音**,听不到了,但,该有的停顿却依然在,在这里我们用 <span class="pho">·</span> 代表那个停顿 ;而后,第二个 <span class="pho">t</span> 与第三个 <span class="pho">t</span> 是**叠音**,这两个 <span class="pho">t</span> 只发声一次。
|
||||
|
||||
上下居中的圆点 <span class="pho">·</span> 是我们用来标记这种因为停顿(stop)的符号。(注意,不是英文句号 <span class="pho">.</span> —— 那是用来标记音节边界的符号。)
|
||||
|
||||
又比如,*a bad day*, 不是 <span class="pho alt">ə bæd deɪ</span>,而是 <span class="pho alt">ə bæ·deɪ</span><span class="speak-word-inline" data-audio-us-male="/audios/a-bad-day-us-male.mp3" data-audio-us-female="/audios/a-bad-day-us-female.mp3"></span>。 再比如,*with this*, 不是 <span class="pho alt">wɪθ ðɪs</span>,而是 <span class="pho alt">wɪ·ðɪs</span><span class="speak-word-inline" data-audio-us-male="/audios/with-this-us-male.mp3" data-audio-us-female="/audios/with-this-us-female.mp3"></span>。
|
||||
|
||||
## 4.4.2.3. 同化(assimilation)
|
||||
|
||||
@@ -69,18 +73,24 @@
|
||||
> * <span class="pho">t</span> + <span class="pho">j</span> = <span class="pho">tʃ</span>
|
||||
> * <span class="pho">d</span> + <span class="pho">j</span> = <span class="pho">dʒ</span>
|
||||
|
||||
最常见的比如,*Don't you?* <span class="pho alt">doʊn tʃju?</span><span class="speak-word-inline" data-audio-us-male="/audios/Dont-you-us-male.mp3" data-audio-us-female="/audios/Dont-you-us-female.mp3"></span>;以及,*Would you?* <span class="pho alt">wʊ dʒju?</span><span class="speak-word-inline" data-audio-us-male="/audios/Would-you-us-male.mp3" data-audio-us-female="/audios/Would-you-us-female.mp3"></span> 这里的关键在于,<span class="pho">t, d</span> 发声时起始的舌尖位置如果放对了([2.2.3](2.2.3-td)),它与后面的 <span class="pho alt">ju</span> 连起来的发声就只能如此。
|
||||
最常见的比如,*Don't you?* <span class="pho alt">doʊn tʃju?</span><span class="speak-word-inline" data-audio-us-male="/audios/Dont-you-us-male.mp3"></span> *Would you?* <span class="pho alt">wʊ dʒju?</span><span class="speak-word-inline" data-audio-us-female="/audios/Would-you-us-female.mp3"></span> 这里的关键在于,<span class="pho">t, d</span> 发声时起始的舌尖位置如果放对了([2.2.3](2.2.3-td)),它与后面的 <span class="pho alt">ju</span> 连起来的发声就只能如此。
|
||||
|
||||
同化主要发生在 <span class="pho">j</span> 这个音上。除了已经讲过的 <span class="pho">j</span> 前面遇到 <span class="pho">t</span> 和 <span class="pho">d</span> 时会产生同化之外,
|
||||
|
||||
> * <span class="pho">s</span> + <span class="pho">j</span> = <span class="pho">ʃ</span>
|
||||
> * <span class="pho">z</span> + <span class="pho">j</span> = <span class="pho">ʒ</span>
|
||||
|
||||
比如,<span class="pho">s+j</span> 可能会被读成 <span class="pho">ʃ</span>,<span class="pho">z+j</span> 可能会被读成 <span class="pho">ʒ</span>。再比如,*Miss you so much.* <span class="pho alt">mɪ ʃu səʊ mʌʧ.</span><span class="speak-word-inline" data-audio-us-male="/audios/Miss-you-so-much-us-male.mp3" data-audio-us-female="/audios/Miss-you-so-much-us-female.mp3"></span>;*It was your job.* <span class="pho alt">ɪt wɒ ʒʊr ʤɒb.</span><span class="speak-word-inline" data-audio-us-male="/audios/It-was-your-job-us-male.mp3" data-audio-us-female="/audios/It-was-your-job-us-female.mp3"></span>
|
||||
比如,<span class="pho">s+j</span> 可能会被读成 <span class="pho">ʃ</span>,<span class="pho">z+j</span> 可能会被读成 <span class="pho">ʒ</span>。再比如,*Miss you so much.* <span class="pho alt">mɪ ʃu səʊ mʌʧ.</span><span class="speak-word-inline" data-audio-us-male="/audios/Miss-you-so-much-us-male.mp3" data-audio-us-female="/audios/Miss-you-so-much-us-female.mp3"></span>*It was your job.* <span class="pho alt">ɪt wɒ ʒʊr ʤɒb.</span><span class="speak-word-inline" data-audio-us-male="/audios/It-was-your-job-us-male.mp3" data-audio-us-female="/audios/It-was-your-job-us-female.mp3"></span>
|
||||
|
||||
请注意,这两组是**可能**,并非一定,并非所有英文母语使用者都如此发音。
|
||||
另外一个细节是,<span class="pho">k/g</span> 之前的 <span class="pho">n</span>,**可能**会被同化为 <span class="pho">ŋ</span>:
|
||||
|
||||
另外一个细节是,<span class="pho">k/g</span> 之前的 <span class="pho">n</span>,可能会被同化为 <span class="pho">ŋ</span>:
|
||||
> * *ten cups*, <span class="pho alt">ten kʌps</span> → <span class="pho alt">teŋ kʌps</span><span class="speak-word-inline" data-audio-us-male="/audios/ten-cups-us-male.mp3" data-audio-us-female="/audios/ten-cups-us-female.mp3"></span>
|
||||
> * *increase*, <span class="pho alt">ˌɪnˈkris</span> → <span class="pho alt">ˌɪŋˈkris</span><span class="speak-word-inline" data-audio-us-male="/audios/increase-us-male.mp3" data-audio-us-female="/audios/increase-us-female.mp3"></span>
|
||||
> * *brown gate*, <span class="pho alt">braʊn geɪt</span> → <span class="pho alt">braʊŋ geɪt</span><span class="speak-word-inline" data-audio-us-male="/audios/brown-gate-us-male.mp3" data-audio-us-female="/audios/brown-gate-us-female.mp3"></span>
|
||||
|
||||
> [!Note]
|
||||
>
|
||||
> 请注意,**同化**都是**可能**,并非一定,并非所有英文母语使用者都如此发音。并非所有人都会使用这种**同化**的发音。比如,*Don't you?* <span class="pho alt">doʊn tʃju?</span><span class="speak-word-inline" data-audio-us-female="/audios/Dont-you-us-female.mp3"></span> *Would you?* <span class="pho alt">wʊ dʒju?</span><span class="speak-word-inline" data-audio-us-male="/audios/Would-you-us-male.mp3"></span>
|
||||
|
||||
## 4.4.2.4. 击穿(dropping)
|
||||
|
||||
@@ -90,7 +100,7 @@
|
||||
|
||||
很多美国人在 <span class="pho">t</span> 这个音上还有另外一个特殊的习惯,<span class="pho">t</span> 跟在 <span class="pho">n</span> 之后的时候,美国人说话的方式会让我们听不到那个 <span class="pho">t</span>,也就是说,<span class="pho">t</span> 也可能被击穿。比如,他们说 *interview* 的时候你听到的可能是 <span class="pho alt">ˈɪnəˌvju</span><span class="speak-word-inline" data-audio-us-male="/audios/interview-us-male.mp3" data-audio-us-female="/audios/interview-us-female.mp3"></span>,没有 <span class="pho">t</span>。
|
||||
|
||||
另外,<span class="pho">ð</span> 也可能被击穿,基本只发生在 *them* 这个常用词上。比如,*let them* <span class="pho alt">let ðəm</span>, 变成了 <span class="pho alt">let-əm</span>,又由于 <span class="pho">ð</span> 被击穿了之后,<span class="pho">t</span> 等于被夹在了两个元音之间,于是会变成浊化的弹舌音 <span class="pho">t̬</span>,于是,说出来的或者听到的是 <span class="pho alt">let̬əm</span>…… 所以,在快速的自然语流中 *let him* 和 *let them* 实际上几乎没有区别,需要通过上下文确定究竟是 *him* 还是 *them*。
|
||||
另外,<span class="pho">ð</span> 也可能被击穿,基本只发生在 *them* 这个常用词上。比如,*let them* <span class="pho alt">let ðəm</span>, 变成了 <span class="pho alt">let-əm</span>,又由于 <span class="pho">ð</span> 被击穿了之后,<span class="pho">t</span> 等于被夹在了两个元音之间,于是会变成浊化的弹舌音 <span class="pho">t̬</span>,于是,说出来的或者听到的是 <span class="pho alt">let̬əm</span><span class="speak-word-inline" data-audio-us-male="/audios/let-them-us-male.mp3" data-audio-us-female="/audios/let-them-us-female.mp3"></span>…… 所以,在快速的自然语流中 *let him* 和 *let them* 实际上几乎没有区别,需要通过上下文确定究竟是 *him* 还是 *them*。
|
||||
|
||||
## 4.4.2.5 其它(others)
|
||||
|
||||
@@ -107,7 +117,7 @@
|
||||
> - *She is* - <span class="pho alt">ˈʃiː ˈɪz</span> ⭢ <span class="pho alt">ˈʃiːʲɪz</span><span class="speak-word-inline" data-audio-us-male="/audios/She-is-us-male.mp3" data-audio-us-female="/audios/She-is-us-female.mp3"></span>
|
||||
> - *They are* - <span class="pho alt">ˈðeɪ ˈɑːr</span> ⭢ <span class="pho alt">ˈðeɪʲɑːr</span><span class="speak-word-inline" data-audio-us-male="/audios/They-are-us-male.mp3" data-audio-us-female="/audios/They-are-us-female.mp3"></span>
|
||||
|
||||
注意:一些以 <span class="pho">i</span> 结尾的动词,使用进行时态的时候,末尾会加上 *ing*,即,<span class="pho alt">ɪŋ</span>。比如,*study* <span class="pho alt">ˈstʌdi</span> 的现在分词形式是 *studying* <span class="pho alt">ˈstʌdi.ɪŋ</span> —— 这里会出现加音 <span class="pho">ʲ</span>,即最后一个音节变成 <span class="pho alt">jɪŋ</span>…… 可是,在自然读音中,它更接近 <span class="pho alt">jəŋ</span>,所以,*studying* 的读音,词典里标注的当然还是 <span class="pho alt">ˈstʌdiɪŋ</span>,但,读出来的更接近 <span class="pho alt">ˈstʌdiʲəŋ</span>。
|
||||
注意:一些以 <span class="pho">i</span> 结尾的动词,使用进行时态的时候,末尾会加上 *ing*,即,<span class="pho alt">ɪŋ</span>。比如,*study* <span class="pho alt">ˈstʌdi</span> 的现在分词形式是 *studying* <span class="pho alt">ˈstʌdi.ɪŋ</span><span class="speak-word-inline" data-audio-us-male="/audios/studying-us-male.mp3" data-audio-us-female="/audios/studying-us-female.mp3"></span> —— 这里会出现加音 <span class="pho">ʲ</span>,即最后一个音节变成 <span class="pho alt">jɪŋ</span> —— 虽然,*studying* 在词典里标注的只能是 <span class="pho alt">ˈstʌdiɪŋ</span>。
|
||||
|
||||
再比如:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user