diff --git a/1000-hours/.vitepress/config.mts b/1000-hours/.vitepress/config.mts index c080796c..b17e8a0c 100644 --- a/1000-hours/.vitepress/config.mts +++ b/1000-hours/.vitepress/config.mts @@ -117,12 +117,12 @@ export default withMermaid( link: "/sounds-of-american-english/3.1.1-ə", }, { - text: "2.1.2. 舌位", - link: "/sounds-of-american-english/2.1.2-tongue", + text: "3.1.2. ʌ/ɑː/ɑːr", + link: "/sounds-of-american-english/3.1.2-ɑ", }, { - text: "2.1.3. ʌ/ɑː/ɑːr", - link: "/sounds-of-american-english/2.1.3-ʌ", + text: "3.1.3. ɪ/i/iː", + link: "/sounds-of-american-english/3.1.3-i", }, { text: "2.1.4. e/æ", diff --git a/1000-hours/public/audios/almond-us-female.mp3 b/1000-hours/public/audios/almond-us-female.mp3 new file mode 100644 index 00000000..e33b6eb6 Binary files /dev/null and b/1000-hours/public/audios/almond-us-female.mp3 differ diff --git a/1000-hours/public/audios/almond-us-male.mp3 b/1000-hours/public/audios/almond-us-male.mp3 new file mode 100644 index 00000000..2ef73366 Binary files /dev/null and b/1000-hours/public/audios/almond-us-male.mp3 differ diff --git a/1000-hours/public/audios/ask-uk-female.mp3 b/1000-hours/public/audios/ask-uk-female.mp3 new file mode 100644 index 00000000..30ec7d6d Binary files /dev/null and b/1000-hours/public/audios/ask-uk-female.mp3 differ diff --git a/1000-hours/public/audios/ask-uk-male.mp3 b/1000-hours/public/audios/ask-uk-male.mp3 new file mode 100644 index 00000000..a4d360aa Binary files /dev/null and b/1000-hours/public/audios/ask-uk-male.mp3 differ diff --git a/1000-hours/public/audios/ask-us-female.mp3 b/1000-hours/public/audios/ask-us-female.mp3 new file mode 100644 index 00000000..d2eac10c Binary files /dev/null and b/1000-hours/public/audios/ask-us-female.mp3 differ diff --git a/1000-hours/public/audios/ask-us-male.mp3 b/1000-hours/public/audios/ask-us-male.mp3 new file mode 100644 index 00000000..62ff49cd Binary files /dev/null and b/1000-hours/public/audios/ask-us-male.mp3 differ diff --git a/1000-hours/public/audios/awning-us-female.mp3 b/1000-hours/public/audios/awning-us-female.mp3 new file mode 100644 index 00000000..10e51465 Binary files /dev/null and b/1000-hours/public/audios/awning-us-female.mp3 differ diff --git a/1000-hours/public/audios/awning-us-male.mp3 b/1000-hours/public/audios/awning-us-male.mp3 new file mode 100644 index 00000000..184f083b Binary files /dev/null and b/1000-hours/public/audios/awning-us-male.mp3 differ diff --git a/1000-hours/public/audios/balm-us-female.mp3 b/1000-hours/public/audios/balm-us-female.mp3 new file mode 100644 index 00000000..94d9d025 Binary files /dev/null and b/1000-hours/public/audios/balm-us-female.mp3 differ diff --git a/1000-hours/public/audios/balm-us-male.mp3 b/1000-hours/public/audios/balm-us-male.mp3 new file mode 100644 index 00000000..c35a11bf Binary files /dev/null and b/1000-hours/public/audios/balm-us-male.mp3 differ diff --git a/1000-hours/public/audios/beach-us-female.mp3 b/1000-hours/public/audios/beach-us-female.mp3 new file mode 100644 index 00000000..674296f4 Binary files /dev/null and b/1000-hours/public/audios/beach-us-female.mp3 differ diff --git a/1000-hours/public/audios/beach-us-male.mp3 b/1000-hours/public/audios/beach-us-male.mp3 new file mode 100644 index 00000000..e8ba527a Binary files /dev/null and b/1000-hours/public/audios/beach-us-male.mp3 differ diff --git a/1000-hours/public/audios/beat-us-female.mp3 b/1000-hours/public/audios/beat-us-female.mp3 new file mode 100644 index 00000000..7924934a Binary files /dev/null and b/1000-hours/public/audios/beat-us-female.mp3 differ diff --git a/1000-hours/public/audios/beat-us-male.mp3 b/1000-hours/public/audios/beat-us-male.mp3 new file mode 100644 index 00000000..c8df5365 Binary files /dev/null and b/1000-hours/public/audios/beat-us-male.mp3 differ diff --git a/1000-hours/public/audios/because-us-female.mp3 b/1000-hours/public/audios/because-us-female.mp3 new file mode 100644 index 00000000..edd3f876 Binary files /dev/null and b/1000-hours/public/audios/because-us-female.mp3 differ diff --git a/1000-hours/public/audios/because-us-male.mp3 b/1000-hours/public/audios/because-us-male.mp3 new file mode 100644 index 00000000..741d5559 Binary files /dev/null and b/1000-hours/public/audios/because-us-male.mp3 differ diff --git a/1000-hours/public/audios/bee-us-female.mp3 b/1000-hours/public/audios/bee-us-female.mp3 new file mode 100644 index 00000000..a43258ed Binary files /dev/null and b/1000-hours/public/audios/bee-us-female.mp3 differ diff --git a/1000-hours/public/audios/bee-us-male.mp3 b/1000-hours/public/audios/bee-us-male.mp3 new file mode 100644 index 00000000..9f2de340 Binary files /dev/null and b/1000-hours/public/audios/bee-us-male.mp3 differ diff --git a/1000-hours/public/audios/believe-us-female.mp3 b/1000-hours/public/audios/believe-us-female.mp3 new file mode 100644 index 00000000..7f37b4d0 Binary files /dev/null and b/1000-hours/public/audios/believe-us-female.mp3 differ diff --git a/1000-hours/public/audios/believe-us-male.mp3 b/1000-hours/public/audios/believe-us-male.mp3 new file mode 100644 index 00000000..b426da56 Binary files /dev/null and b/1000-hours/public/audios/believe-us-male.mp3 differ diff --git a/1000-hours/public/audios/bit-us-female.mp3 b/1000-hours/public/audios/bit-us-female.mp3 new file mode 100644 index 00000000..2ea93abd Binary files /dev/null and b/1000-hours/public/audios/bit-us-female.mp3 differ diff --git a/1000-hours/public/audios/bit-us-male.mp3 b/1000-hours/public/audios/bit-us-male.mp3 new file mode 100644 index 00000000..c0c4c52e Binary files /dev/null and b/1000-hours/public/audios/bit-us-male.mp3 differ diff --git a/1000-hours/public/audios/blood-us-female.mp3 b/1000-hours/public/audios/blood-us-female.mp3 new file mode 100644 index 00000000..6649dd19 Binary files /dev/null and b/1000-hours/public/audios/blood-us-female.mp3 differ diff --git a/1000-hours/public/audios/blood-us-male.mp3 b/1000-hours/public/audios/blood-us-male.mp3 new file mode 100644 index 00000000..ee9b6b68 Binary files /dev/null and b/1000-hours/public/audios/blood-us-male.mp3 differ diff --git a/1000-hours/public/audios/bought-us-female.mp3 b/1000-hours/public/audios/bought-us-female.mp3 new file mode 100644 index 00000000..aaed4b86 Binary files /dev/null and b/1000-hours/public/audios/bought-us-female.mp3 differ diff --git a/1000-hours/public/audios/bought-us-male.mp3 b/1000-hours/public/audios/bought-us-male.mp3 new file mode 100644 index 00000000..8d64452e Binary files /dev/null and b/1000-hours/public/audios/bought-us-male.mp3 differ diff --git a/1000-hours/public/audios/build-us-female.mp3 b/1000-hours/public/audios/build-us-female.mp3 new file mode 100644 index 00000000..fd4d370c Binary files /dev/null and b/1000-hours/public/audios/build-us-female.mp3 differ diff --git a/1000-hours/public/audios/build-us-male.mp3 b/1000-hours/public/audios/build-us-male.mp3 new file mode 100644 index 00000000..503919e8 Binary files /dev/null and b/1000-hours/public/audios/build-us-male.mp3 differ diff --git a/1000-hours/public/audios/but-us-female.mp3 b/1000-hours/public/audios/but-us-female.mp3 new file mode 100644 index 00000000..c18da3ea Binary files /dev/null and b/1000-hours/public/audios/but-us-female.mp3 differ diff --git a/1000-hours/public/audios/but-us-male.mp3 b/1000-hours/public/audios/but-us-male.mp3 new file mode 100644 index 00000000..ee78f866 Binary files /dev/null and b/1000-hours/public/audios/but-us-male.mp3 differ diff --git a/1000-hours/public/audios/car-us-female.mp3 b/1000-hours/public/audios/car-us-female.mp3 new file mode 100644 index 00000000..613345e4 Binary files /dev/null and b/1000-hours/public/audios/car-us-female.mp3 differ diff --git a/1000-hours/public/audios/car-us-male.mp3 b/1000-hours/public/audios/car-us-male.mp3 new file mode 100644 index 00000000..b2185786 Binary files /dev/null and b/1000-hours/public/audios/car-us-male.mp3 differ diff --git a/1000-hours/public/audios/card_us_female.mp3 b/1000-hours/public/audios/card_us_female.mp3 new file mode 100644 index 00000000..e3e5d6e5 Binary files /dev/null and b/1000-hours/public/audios/card_us_female.mp3 differ diff --git a/1000-hours/public/audios/card_us_male.mp3 b/1000-hours/public/audios/card_us_male.mp3 new file mode 100644 index 00000000..1d1dc553 Binary files /dev/null and b/1000-hours/public/audios/card_us_male.mp3 differ diff --git a/1000-hours/public/audios/certainly-us-female.mp3 b/1000-hours/public/audios/certainly-us-female.mp3 new file mode 100644 index 00000000..a8e63fad Binary files /dev/null and b/1000-hours/public/audios/certainly-us-female.mp3 differ diff --git a/1000-hours/public/audios/certainly-us-male.mp3 b/1000-hours/public/audios/certainly-us-male.mp3 new file mode 100644 index 00000000..8a249b74 Binary files /dev/null and b/1000-hours/public/audios/certainly-us-male.mp3 differ diff --git a/1000-hours/public/audios/chief-us-female.mp3 b/1000-hours/public/audios/chief-us-female.mp3 new file mode 100644 index 00000000..9dea3c22 Binary files /dev/null and b/1000-hours/public/audios/chief-us-female.mp3 differ diff --git a/1000-hours/public/audios/chief-us-male.mp3 b/1000-hours/public/audios/chief-us-male.mp3 new file mode 100644 index 00000000..f5c8c609 Binary files /dev/null and b/1000-hours/public/audios/chief-us-male.mp3 differ diff --git a/1000-hours/public/audios/clause-us-female.mp3 b/1000-hours/public/audios/clause-us-female.mp3 new file mode 100644 index 00000000..850fd7b0 Binary files /dev/null and b/1000-hours/public/audios/clause-us-female.mp3 differ diff --git a/1000-hours/public/audios/clause-us-male.mp3 b/1000-hours/public/audios/clause-us-male.mp3 new file mode 100644 index 00000000..e9928a2d Binary files /dev/null and b/1000-hours/public/audios/clause-us-male.mp3 differ diff --git a/1000-hours/public/audios/comfort-us-female.mp3 b/1000-hours/public/audios/comfort-us-female.mp3 new file mode 100644 index 00000000..9379b290 Binary files /dev/null and b/1000-hours/public/audios/comfort-us-female.mp3 differ diff --git a/1000-hours/public/audios/comfort-us-male.mp3 b/1000-hours/public/audios/comfort-us-male.mp3 new file mode 100644 index 00000000..96ee6609 Binary files /dev/null and b/1000-hours/public/audios/comfort-us-male.mp3 differ diff --git a/1000-hours/public/audios/country-us-female.mp3 b/1000-hours/public/audios/country-us-female.mp3 new file mode 100644 index 00000000..6b5f0361 Binary files /dev/null and b/1000-hours/public/audios/country-us-female.mp3 differ diff --git a/1000-hours/public/audios/country-us-male.mp3 b/1000-hours/public/audios/country-us-male.mp3 new file mode 100644 index 00000000..c34bf443 Binary files /dev/null and b/1000-hours/public/audios/country-us-male.mp3 differ diff --git a/1000-hours/public/audios/cup-us-female.mp3 b/1000-hours/public/audios/cup-us-female.mp3 new file mode 100644 index 00000000..1144a279 Binary files /dev/null and b/1000-hours/public/audios/cup-us-female.mp3 differ diff --git a/1000-hours/public/audios/cup-us-male.mp3 b/1000-hours/public/audios/cup-us-male.mp3 new file mode 100644 index 00000000..f6bb57ef Binary files /dev/null and b/1000-hours/public/audios/cup-us-male.mp3 differ diff --git a/1000-hours/public/audios/dog-us-female.mp3 b/1000-hours/public/audios/dog-us-female.mp3 new file mode 100644 index 00000000..d239d355 Binary files /dev/null and b/1000-hours/public/audios/dog-us-female.mp3 differ diff --git a/1000-hours/public/audios/dog-us-male.mp3 b/1000-hours/public/audios/dog-us-male.mp3 new file mode 100644 index 00000000..5efcd541 Binary files /dev/null and b/1000-hours/public/audios/dog-us-male.mp3 differ diff --git a/1000-hours/public/audios/double-us-female.mp3 b/1000-hours/public/audios/double-us-female.mp3 new file mode 100644 index 00000000..fcf465ad Binary files /dev/null and b/1000-hours/public/audios/double-us-female.mp3 differ diff --git a/1000-hours/public/audios/double-us-male.mp3 b/1000-hours/public/audios/double-us-male.mp3 new file mode 100644 index 00000000..6aef71a4 Binary files /dev/null and b/1000-hours/public/audios/double-us-male.mp3 differ diff --git a/1000-hours/public/audios/drawn-us-female.mp3 b/1000-hours/public/audios/drawn-us-female.mp3 new file mode 100644 index 00000000..08f86707 Binary files /dev/null and b/1000-hours/public/audios/drawn-us-female.mp3 differ diff --git a/1000-hours/public/audios/drawn-us-male.mp3 b/1000-hours/public/audios/drawn-us-male.mp3 new file mode 100644 index 00000000..37345be4 Binary files /dev/null and b/1000-hours/public/audios/drawn-us-male.mp3 differ diff --git a/1000-hours/public/audios/eat-us-female.mp3 b/1000-hours/public/audios/eat-us-female.mp3 new file mode 100644 index 00000000..10aa20f8 Binary files /dev/null and b/1000-hours/public/audios/eat-us-female.mp3 differ diff --git a/1000-hours/public/audios/eat-us-male.mp3 b/1000-hours/public/audios/eat-us-male.mp3 new file mode 100644 index 00000000..3e3baf32 Binary files /dev/null and b/1000-hours/public/audios/eat-us-male.mp3 differ diff --git a/1000-hours/public/audios/english-us-female.mp3 b/1000-hours/public/audios/english-us-female.mp3 new file mode 100644 index 00000000..1edf12c8 Binary files /dev/null and b/1000-hours/public/audios/english-us-female.mp3 differ diff --git a/1000-hours/public/audios/english-us-male.mp3 b/1000-hours/public/audios/english-us-male.mp3 new file mode 100644 index 00000000..16d3ad1c Binary files /dev/null and b/1000-hours/public/audios/english-us-male.mp3 differ diff --git a/1000-hours/public/audios/far-us-female.mp3 b/1000-hours/public/audios/far-us-female.mp3 new file mode 100644 index 00000000..5f3770e6 Binary files /dev/null and b/1000-hours/public/audios/far-us-female.mp3 differ diff --git a/1000-hours/public/audios/far-us-male.mp3 b/1000-hours/public/audios/far-us-male.mp3 new file mode 100644 index 00000000..557e92a1 Binary files /dev/null and b/1000-hours/public/audios/far-us-male.mp3 differ diff --git a/1000-hours/public/audios/father-us-female.mp3 b/1000-hours/public/audios/father-us-female.mp3 new file mode 100644 index 00000000..f29bb9d8 Binary files /dev/null and b/1000-hours/public/audios/father-us-female.mp3 differ diff --git a/1000-hours/public/audios/father-us-male.mp3 b/1000-hours/public/audios/father-us-male.mp3 new file mode 100644 index 00000000..4c0043dc Binary files /dev/null and b/1000-hours/public/audios/father-us-male.mp3 differ diff --git a/1000-hours/public/audios/field-us-female.mp3 b/1000-hours/public/audios/field-us-female.mp3 new file mode 100644 index 00000000..086497b3 Binary files /dev/null and b/1000-hours/public/audios/field-us-female.mp3 differ diff --git a/1000-hours/public/audios/field-us-male.mp3 b/1000-hours/public/audios/field-us-male.mp3 new file mode 100644 index 00000000..d9da2907 Binary files /dev/null and b/1000-hours/public/audios/field-us-male.mp3 differ diff --git a/1000-hours/public/audios/flood-us-female.mp3 b/1000-hours/public/audios/flood-us-female.mp3 new file mode 100644 index 00000000..bb8365e1 Binary files /dev/null and b/1000-hours/public/audios/flood-us-female.mp3 differ diff --git a/1000-hours/public/audios/flood-us-male.mp3 b/1000-hours/public/audios/flood-us-male.mp3 new file mode 100644 index 00000000..ff432d1b Binary files /dev/null and b/1000-hours/public/audios/flood-us-male.mp3 differ diff --git a/1000-hours/public/audios/fought-us-female.mp3 b/1000-hours/public/audios/fought-us-female.mp3 new file mode 100644 index 00000000..eada1d03 Binary files /dev/null and b/1000-hours/public/audios/fought-us-female.mp3 differ diff --git a/1000-hours/public/audios/fought-us-male.mp3 b/1000-hours/public/audios/fought-us-male.mp3 new file mode 100644 index 00000000..e3b73987 Binary files /dev/null and b/1000-hours/public/audios/fought-us-male.mp3 differ diff --git a/1000-hours/public/audios/guilty-us-female.mp3 b/1000-hours/public/audios/guilty-us-female.mp3 new file mode 100644 index 00000000..3be00dc7 Binary files /dev/null and b/1000-hours/public/audios/guilty-us-female.mp3 differ diff --git a/1000-hours/public/audios/guilty-us-male.mp3 b/1000-hours/public/audios/guilty-us-male.mp3 new file mode 100644 index 00000000..8045ce77 Binary files /dev/null and b/1000-hours/public/audios/guilty-us-male.mp3 differ diff --git a/1000-hours/public/audios/guitar-us-female.mp3 b/1000-hours/public/audios/guitar-us-female.mp3 new file mode 100644 index 00000000..65889af1 Binary files /dev/null and b/1000-hours/public/audios/guitar-us-female.mp3 differ diff --git a/1000-hours/public/audios/guitar-us-male.mp3 b/1000-hours/public/audios/guitar-us-male.mp3 new file mode 100644 index 00000000..062a8334 Binary files /dev/null and b/1000-hours/public/audios/guitar-us-male.mp3 differ diff --git a/1000-hours/public/audios/gym-us-female.mp3 b/1000-hours/public/audios/gym-us-female.mp3 new file mode 100644 index 00000000..a47b8daf Binary files /dev/null and b/1000-hours/public/audios/gym-us-female.mp3 differ diff --git a/1000-hours/public/audios/gym-us-male.mp3 b/1000-hours/public/audios/gym-us-male.mp3 new file mode 100644 index 00000000..4db225f7 Binary files /dev/null and b/1000-hours/public/audios/gym-us-male.mp3 differ diff --git a/1000-hours/public/audios/happy-us-female.mp3 b/1000-hours/public/audios/happy-us-female.mp3 new file mode 100644 index 00000000..bab48097 Binary files /dev/null and b/1000-hours/public/audios/happy-us-female.mp3 differ diff --git a/1000-hours/public/audios/happy-us-male.mp3 b/1000-hours/public/audios/happy-us-male.mp3 new file mode 100644 index 00000000..b06857b9 Binary files /dev/null and b/1000-hours/public/audios/happy-us-male.mp3 differ diff --git a/1000-hours/public/audios/he-us-female.mp3 b/1000-hours/public/audios/he-us-female.mp3 new file mode 100644 index 00000000..fe095936 Binary files /dev/null and b/1000-hours/public/audios/he-us-female.mp3 differ diff --git a/1000-hours/public/audios/he-us-male.mp3 b/1000-hours/public/audios/he-us-male.mp3 new file mode 100644 index 00000000..373937a8 Binary files /dev/null and b/1000-hours/public/audios/he-us-male.mp3 differ diff --git a/1000-hours/public/audios/heal-us-female.mp3 b/1000-hours/public/audios/heal-us-female.mp3 new file mode 100644 index 00000000..ca765b00 Binary files /dev/null and b/1000-hours/public/audios/heal-us-female.mp3 differ diff --git a/1000-hours/public/audios/heal-us-male.mp3 b/1000-hours/public/audios/heal-us-male.mp3 new file mode 100644 index 00000000..3ba2ff77 Binary files /dev/null and b/1000-hours/public/audios/heal-us-male.mp3 differ diff --git a/1000-hours/public/audios/hello_us_female.mp3 b/1000-hours/public/audios/hello_us_female.mp3 deleted file mode 100644 index e69de29b..00000000 diff --git a/1000-hours/public/audios/hill-us-female.mp3 b/1000-hours/public/audios/hill-us-female.mp3 new file mode 100644 index 00000000..9f1f0d8d Binary files /dev/null and b/1000-hours/public/audios/hill-us-female.mp3 differ diff --git a/1000-hours/public/audios/hill-us-male.mp3 b/1000-hours/public/audios/hill-us-male.mp3 new file mode 100644 index 00000000..a51d66e5 Binary files /dev/null and b/1000-hours/public/audios/hill-us-male.mp3 differ diff --git a/1000-hours/public/audios/hot-us-female.mp3 b/1000-hours/public/audios/hot-us-female.mp3 new file mode 100644 index 00000000..c297a442 Binary files /dev/null and b/1000-hours/public/audios/hot-us-female.mp3 differ diff --git a/1000-hours/public/audios/hot-us-male.mp3 b/1000-hours/public/audios/hot-us-male.mp3 new file mode 100644 index 00000000..20ec5db4 Binary files /dev/null and b/1000-hours/public/audios/hot-us-male.mp3 differ diff --git a/1000-hours/public/audios/law-us-female.mp3 b/1000-hours/public/audios/law-us-female.mp3 new file mode 100644 index 00000000..02fa0ee9 Binary files /dev/null and b/1000-hours/public/audios/law-us-female.mp3 differ diff --git a/1000-hours/public/audios/law-us-male.mp3 b/1000-hours/public/audios/law-us-male.mp3 new file mode 100644 index 00000000..43fadef4 Binary files /dev/null and b/1000-hours/public/audios/law-us-male.mp3 differ diff --git a/1000-hours/public/audios/leave-us-female.mp3 b/1000-hours/public/audios/leave-us-female.mp3 new file mode 100644 index 00000000..fd587757 Binary files /dev/null and b/1000-hours/public/audios/leave-us-female.mp3 differ diff --git a/1000-hours/public/audios/leave-us-male.mp3 b/1000-hours/public/audios/leave-us-male.mp3 new file mode 100644 index 00000000..6046ca1c Binary files /dev/null and b/1000-hours/public/audios/leave-us-male.mp3 differ diff --git a/1000-hours/public/audios/log-us-female.mp3 b/1000-hours/public/audios/log-us-female.mp3 new file mode 100644 index 00000000..bb9784ed Binary files /dev/null and b/1000-hours/public/audios/log-us-female.mp3 differ diff --git a/1000-hours/public/audios/log-us-male.mp3 b/1000-hours/public/audios/log-us-male.mp3 new file mode 100644 index 00000000..298a4d38 Binary files /dev/null and b/1000-hours/public/audios/log-us-male.mp3 differ diff --git a/1000-hours/public/audios/me-us-female.mp3 b/1000-hours/public/audios/me-us-female.mp3 new file mode 100644 index 00000000..226f9b0c Binary files /dev/null and b/1000-hours/public/audios/me-us-female.mp3 differ diff --git a/1000-hours/public/audios/me-us-male.mp3 b/1000-hours/public/audios/me-us-male.mp3 new file mode 100644 index 00000000..5501087a Binary files /dev/null and b/1000-hours/public/audios/me-us-male.mp3 differ diff --git a/1000-hours/public/audios/money-us-female.mp3 b/1000-hours/public/audios/money-us-female.mp3 new file mode 100644 index 00000000..f11d5df4 Binary files /dev/null and b/1000-hours/public/audios/money-us-female.mp3 differ diff --git a/1000-hours/public/audios/money-us-male.mp3 b/1000-hours/public/audios/money-us-male.mp3 new file mode 100644 index 00000000..8fe47f8a Binary files /dev/null and b/1000-hours/public/audios/money-us-male.mp3 differ diff --git a/1000-hours/public/audios/myth-us-female.mp3 b/1000-hours/public/audios/myth-us-female.mp3 new file mode 100644 index 00000000..14711774 Binary files /dev/null and b/1000-hours/public/audios/myth-us-female.mp3 differ diff --git a/1000-hours/public/audios/myth-us-male.mp3 b/1000-hours/public/audios/myth-us-male.mp3 new file mode 100644 index 00000000..30f93b2e Binary files /dev/null and b/1000-hours/public/audios/myth-us-male.mp3 differ diff --git a/1000-hours/public/audios/palm-us-female.mp3 b/1000-hours/public/audios/palm-us-female.mp3 new file mode 100644 index 00000000..4a28246e Binary files /dev/null and b/1000-hours/public/audios/palm-us-female.mp3 differ diff --git a/1000-hours/public/audios/palm-us-male.mp3 b/1000-hours/public/audios/palm-us-male.mp3 new file mode 100644 index 00000000..c7a24a13 Binary files /dev/null and b/1000-hours/public/audios/palm-us-male.mp3 differ diff --git a/1000-hours/public/audios/paunch-us-female.mp3 b/1000-hours/public/audios/paunch-us-female.mp3 new file mode 100644 index 00000000..9a27d29d Binary files /dev/null and b/1000-hours/public/audios/paunch-us-female.mp3 differ diff --git a/1000-hours/public/audios/paunch-us-male.mp3 b/1000-hours/public/audios/paunch-us-male.mp3 new file mode 100644 index 00000000..bbc7b2fa Binary files /dev/null and b/1000-hours/public/audios/paunch-us-male.mp3 differ diff --git a/1000-hours/public/audios/pretty-us-female.mp3 b/1000-hours/public/audios/pretty-us-female.mp3 new file mode 100644 index 00000000..8a17f81d Binary files /dev/null and b/1000-hours/public/audios/pretty-us-female.mp3 differ diff --git a/1000-hours/public/audios/pretty-us-male.mp3 b/1000-hours/public/audios/pretty-us-male.mp3 new file mode 100644 index 00000000..fbd2c34a Binary files /dev/null and b/1000-hours/public/audios/pretty-us-male.mp3 differ diff --git a/1000-hours/public/audios/responsibility-uk-female.mp3 b/1000-hours/public/audios/responsibility-uk-female.mp3 new file mode 100644 index 00000000..a9673ffd Binary files /dev/null and b/1000-hours/public/audios/responsibility-uk-female.mp3 differ diff --git a/1000-hours/public/audios/responsibility-uk-male.mp3 b/1000-hours/public/audios/responsibility-uk-male.mp3 new file mode 100644 index 00000000..cf415fe3 Binary files /dev/null and b/1000-hours/public/audios/responsibility-uk-male.mp3 differ diff --git a/1000-hours/public/audios/responsibility-us-female.mp3 b/1000-hours/public/audios/responsibility-us-female.mp3 new file mode 100644 index 00000000..4943ba0a Binary files /dev/null and b/1000-hours/public/audios/responsibility-us-female.mp3 differ diff --git a/1000-hours/public/audios/responsibility-us-male.mp3 b/1000-hours/public/audios/responsibility-us-male.mp3 new file mode 100644 index 00000000..0f4aa5dc Binary files /dev/null and b/1000-hours/public/audios/responsibility-us-male.mp3 differ diff --git a/1000-hours/public/audios/seat-us-female.mp3 b/1000-hours/public/audios/seat-us-female.mp3 new file mode 100644 index 00000000..c6a06716 Binary files /dev/null and b/1000-hours/public/audios/seat-us-female.mp3 differ diff --git a/1000-hours/public/audios/seat-us-male.mp3 b/1000-hours/public/audios/seat-us-male.mp3 new file mode 100644 index 00000000..7f82b6c8 Binary files /dev/null and b/1000-hours/public/audios/seat-us-male.mp3 differ diff --git a/1000-hours/public/audios/see-us-female.mp3 b/1000-hours/public/audios/see-us-female.mp3 new file mode 100644 index 00000000..fe27e9b0 Binary files /dev/null and b/1000-hours/public/audios/see-us-female.mp3 differ diff --git a/1000-hours/public/audios/see-us-male.mp3 b/1000-hours/public/audios/see-us-male.mp3 new file mode 100644 index 00000000..24e83ba6 Binary files /dev/null and b/1000-hours/public/audios/see-us-male.mp3 differ diff --git a/1000-hours/public/audios/she-us-female.mp3 b/1000-hours/public/audios/she-us-female.mp3 new file mode 100644 index 00000000..5cd185a9 Binary files /dev/null and b/1000-hours/public/audios/she-us-female.mp3 differ diff --git a/1000-hours/public/audios/she-us-male.mp3 b/1000-hours/public/audios/she-us-male.mp3 new file mode 100644 index 00000000..cf2441cb Binary files /dev/null and b/1000-hours/public/audios/she-us-male.mp3 differ diff --git a/1000-hours/public/audios/sit-us-female.mp3 b/1000-hours/public/audios/sit-us-female.mp3 new file mode 100644 index 00000000..b8c830b3 Binary files /dev/null and b/1000-hours/public/audios/sit-us-female.mp3 differ diff --git a/1000-hours/public/audios/sit-us-male.mp3 b/1000-hours/public/audios/sit-us-male.mp3 new file mode 100644 index 00000000..11c15b53 Binary files /dev/null and b/1000-hours/public/audios/sit-us-male.mp3 differ diff --git a/1000-hours/public/audios/son-us-female.mp3 b/1000-hours/public/audios/son-us-female.mp3 new file mode 100644 index 00000000..efdd4b83 Binary files /dev/null and b/1000-hours/public/audios/son-us-female.mp3 differ diff --git a/1000-hours/public/audios/son-us-male.mp3 b/1000-hours/public/audios/son-us-male.mp3 new file mode 100644 index 00000000..d9080b97 Binary files /dev/null and b/1000-hours/public/audios/son-us-male.mp3 differ diff --git a/1000-hours/public/audios/start-us-female.mp3 b/1000-hours/public/audios/start-us-female.mp3 new file mode 100644 index 00000000..67eda5b6 Binary files /dev/null and b/1000-hours/public/audios/start-us-female.mp3 differ diff --git a/1000-hours/public/audios/start-us-male.mp3 b/1000-hours/public/audios/start-us-male.mp3 new file mode 100644 index 00000000..eb006881 Binary files /dev/null and b/1000-hours/public/audios/start-us-male.mp3 differ diff --git a/1000-hours/public/audios/sun-us-female.mp3 b/1000-hours/public/audios/sun-us-female.mp3 new file mode 100644 index 00000000..efdd4b83 Binary files /dev/null and b/1000-hours/public/audios/sun-us-female.mp3 differ diff --git a/1000-hours/public/audios/sun-us-male.mp3 b/1000-hours/public/audios/sun-us-male.mp3 new file mode 100644 index 00000000..d9080b97 Binary files /dev/null and b/1000-hours/public/audios/sun-us-male.mp3 differ diff --git a/1000-hours/public/audios/symbol-us-female.mp3 b/1000-hours/public/audios/symbol-us-female.mp3 new file mode 100644 index 00000000..648cb51b Binary files /dev/null and b/1000-hours/public/audios/symbol-us-female.mp3 differ diff --git a/1000-hours/public/audios/symbol-us-male.mp3 b/1000-hours/public/audios/symbol-us-male.mp3 new file mode 100644 index 00000000..16e38cca Binary files /dev/null and b/1000-hours/public/audios/symbol-us-male.mp3 differ diff --git a/1000-hours/public/audios/thought-us-female.mp3 b/1000-hours/public/audios/thought-us-female.mp3 new file mode 100644 index 00000000..7c9e490e Binary files /dev/null and b/1000-hours/public/audios/thought-us-female.mp3 differ diff --git a/1000-hours/public/audios/thought-us-male.mp3 b/1000-hours/public/audios/thought-us-male.mp3 new file mode 100644 index 00000000..09d2b81a Binary files /dev/null and b/1000-hours/public/audios/thought-us-male.mp3 differ diff --git a/1000-hours/public/audios/tree-us-female.mp3 b/1000-hours/public/audios/tree-us-female.mp3 new file mode 100644 index 00000000..39be8922 Binary files /dev/null and b/1000-hours/public/audios/tree-us-female.mp3 differ diff --git a/1000-hours/public/audios/tree-us-male.mp3 b/1000-hours/public/audios/tree-us-male.mp3 new file mode 100644 index 00000000..a85e8e74 Binary files /dev/null and b/1000-hours/public/audios/tree-us-male.mp3 differ diff --git a/1000-hours/public/audios/unexpectedly-us-female.mp3 b/1000-hours/public/audios/unexpectedly-us-female.mp3 new file mode 100644 index 00000000..45362bb0 Binary files /dev/null and b/1000-hours/public/audios/unexpectedly-us-female.mp3 differ diff --git a/1000-hours/public/audios/unexpectedly-us-male.mp3 b/1000-hours/public/audios/unexpectedly-us-male.mp3 new file mode 100644 index 00000000..d3052225 Binary files /dev/null and b/1000-hours/public/audios/unexpectedly-us-male.mp3 differ diff --git a/1000-hours/public/audios/us/hello-us-female.mp3 b/1000-hours/public/audios/us/hello-us-female.mp3 deleted file mode 100644 index 2df5093a..00000000 Binary files a/1000-hours/public/audios/us/hello-us-female.mp3 and /dev/null differ diff --git a/1000-hours/public/audios/us/hello-us-male.mp3 b/1000-hours/public/audios/us/hello-us-male.mp3 deleted file mode 100644 index 43141652..00000000 Binary files a/1000-hours/public/audios/us/hello-us-male.mp3 and /dev/null differ diff --git a/1000-hours/public/audios/wasp-us-female.mp3 b/1000-hours/public/audios/wasp-us-female.mp3 new file mode 100644 index 00000000..23f66e2e Binary files /dev/null and b/1000-hours/public/audios/wasp-us-female.mp3 differ diff --git a/1000-hours/public/audios/wasp-us-male.mp3 b/1000-hours/public/audios/wasp-us-male.mp3 new file mode 100644 index 00000000..e965aecc Binary files /dev/null and b/1000-hours/public/audios/wasp-us-male.mp3 differ diff --git a/1000-hours/public/audios/watch-us-female.mp3 b/1000-hours/public/audios/watch-us-female.mp3 new file mode 100644 index 00000000..f6ba9c38 Binary files /dev/null and b/1000-hours/public/audios/watch-us-female.mp3 differ diff --git a/1000-hours/public/audios/watch-us-male.mp3 b/1000-hours/public/audios/watch-us-male.mp3 new file mode 100644 index 00000000..dcc8bac4 Binary files /dev/null and b/1000-hours/public/audios/watch-us-male.mp3 differ diff --git a/1000-hours/public/audios/word-us-female.mp3 b/1000-hours/public/audios/word-us-female.mp3 deleted file mode 100644 index 7f4932ae..00000000 Binary files a/1000-hours/public/audios/word-us-female.mp3 and /dev/null differ diff --git a/1000-hours/public/audios/word-us-male.mp3 b/1000-hours/public/audios/word-us-male.mp3 deleted file mode 100644 index 5d922c91..00000000 Binary files a/1000-hours/public/audios/word-us-male.mp3 and /dev/null differ diff --git a/1000-hours/public/audios/world-us-female.mp3 b/1000-hours/public/audios/world-us-female.mp3 deleted file mode 100644 index 5f08eb29..00000000 Binary files a/1000-hours/public/audios/world-us-female.mp3 and /dev/null differ diff --git a/1000-hours/public/audios/world-us-male.mp3 b/1000-hours/public/audios/world-us-male.mp3 deleted file mode 100644 index 98941cd2..00000000 Binary files a/1000-hours/public/audios/world-us-male.mp3 and /dev/null differ diff --git a/1000-hours/public/audios/young-us-female.mp3 b/1000-hours/public/audios/young-us-female.mp3 new file mode 100644 index 00000000..42b07865 Binary files /dev/null and b/1000-hours/public/audios/young-us-female.mp3 differ diff --git a/1000-hours/public/audios/young-us-male.mp3 b/1000-hours/public/audios/young-us-male.mp3 new file mode 100644 index 00000000..5e0e79d5 Binary files /dev/null and b/1000-hours/public/audios/young-us-male.mp3 differ diff --git a/1000-hours/public/images/vowels-mouth-shape-i.svg b/1000-hours/public/images/vowels-mouth-shape-i.svg new file mode 100644 index 00000000..5bc67cac --- /dev/null +++ b/1000-hours/public/images/vowels-mouth-shape-i.svg @@ -0,0 +1,28 @@ + + + vowels-mouth-shape-i + + + + ɔ + + + ʊ + + + ɪ / e + + + ɑ + + + i / iː + + + + + + + + + \ No newline at end of file diff --git a/1000-hours/public/images/vowels-mouth-shape-ə.svg b/1000-hours/public/images/vowels-mouth-shape-ə.svg new file mode 100644 index 00000000..f72ae262 --- /dev/null +++ b/1000-hours/public/images/vowels-mouth-shape-ə.svg @@ -0,0 +1,28 @@ + + + vowels-mouth-shape-ə + + + + ɔ + + + ʊ + + + e + + + ɑ + + + i/ə + + + + + + + + + \ No newline at end of file diff --git a/1000-hours/public/images/vowels-mouth-shape-ɪ-i.svg b/1000-hours/public/images/vowels-mouth-shape-ɪ-i.svg index 8d1298f4..e75c1bcf 100644 --- a/1000-hours/public/images/vowels-mouth-shape-ɪ-i.svg +++ b/1000-hours/public/images/vowels-mouth-shape-ɪ-i.svg @@ -2,11 +2,11 @@ vowels-mouth-shape-ɪ-i - - e/ɪ + + e / ɪ - - + + i / iː diff --git a/1000-hours/public/images/vowels-mouth-shape-ʌ-ɑ.svg b/1000-hours/public/images/vowels-mouth-shape-ʌ-ɑ.svg new file mode 100644 index 00000000..ab74b85f --- /dev/null +++ b/1000-hours/public/images/vowels-mouth-shape-ʌ-ɑ.svg @@ -0,0 +1,28 @@ + + + vowels-mouth-shape-ʌ-ɑ + + + + ɔ + + + ʊ + + + e + + + ɑ + + + ʌ/ə + + + + + + + + + \ No newline at end of file diff --git a/1000-hours/public/images/vowels-mouth-shape.svg b/1000-hours/public/images/vowels-mouth-shape.svg index 11ca7d51..39387c41 100644 --- a/1000-hours/public/images/vowels-mouth-shape.svg +++ b/1000-hours/public/images/vowels-mouth-shape.svg @@ -3,20 +3,20 @@ vowels-mouth-shape - + ɔ - + ʊ - + e - + ɑ - - i + + i/ə diff --git a/1000-hours/public/jupyter-notebooks/edge-tts-valcab-pronounciation.ipynb b/1000-hours/public/jupyter-notebooks/edge-tts-valcab-pronounciation.ipynb index bb509edd..72e6c105 100644 --- a/1000-hours/public/jupyter-notebooks/edge-tts-valcab-pronounciation.ipynb +++ b/1000-hours/public/jupyter-notebooks/edge-tts-valcab-pronounciation.ipynb @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "id": "71d35cd9", "metadata": {}, "outputs": [ @@ -86,232 +86,44 @@ "name": "stdout", "output_type": "stream", "text": [ - "['en-US-GuyNeural', 'en-US-AriaNeural']\n", - "card\n", - "../audios/card_us_male.mp3 exists, overwriting...\n", - "../audios/card_us_male.mp3 created\n", - "../audios/card_us_female.mp3 exists, overwriting...\n", - "../audios/card_us_female.mp3 created\n", - " mark\n", - "../audios/mark_us_male.mp3 created\n", - "../audios/mark_us_female.mp3 created\n", - " door\n", - "../audios/door_us_male.mp3 created\n", - "../audios/door_us_female.mp3 created\n", - "short\n", - "../audios/short_us_male.mp3 created\n", - "../audios/short_us_female.mp3 created\n", - "poor\n", - "../audios/poor_us_male.mp3 exists, overwriting...\n", - "../audios/poor_us_male.mp3 created\n", - "../audios/poor_us_female.mp3 exists, overwriting...\n", - "../audios/poor_us_female.mp3 created\n", - "your\n", - "../audios/your_us_male.mp3 created\n", - "../audios/your_us_female.mp3 created\n", - "focus\n", - "../audios/focus_us_male.mp3 created\n", - "../audios/focus_us_female.mp3 created\n", - "individual\n", - "../audios/individual_us_male.mp3 created\n", - "../audios/individual_us_female.mp3 created\n", + "sun\n", + "../audios/sun-us-male.mp3 created\n", + "../audios/sun-us-female.mp3 created\n", + "../audios/sun-uk-male.mp3 created\n", + "../audios/sun-uk-female.mp3 created\n", "\n", - "about\n", - "../audios/about_us_male.mp3 exists, overwriting...\n", - "../audios/about_us_male.mp3 created\n", - "../audios/about_us_female.mp3 exists, overwriting...\n", - "../audios/about_us_female.mp3 created\n", + "cup\n", + "../audios/cup-us-male.mp3 created\n", + "../audios/cup-us-female.mp3 created\n", + "../audios/cup-uk-male.mp3 created\n", + "../audios/cup-uk-female.mp3 created\n", "\n", - "banana\n", - "../audios/banana_us_male.mp3 created\n", - "../audios/banana_us_female.mp3 created\n", - "\n", - "sofa\n", - "../audios/sofa_us_male.mp3 created\n", - "../audios/sofa_us_female.mp3 created\n", - "\n", - "open\n", - "../audios/open_us_male.mp3 created\n", - "../audios/open_us_female.mp3 created\n", - "\n", - "problem\n", - "../audios/problem_us_male.mp3 created\n", - "../audios/problem_us_female.mp3 created\n", - "\n", - "synthesis\n", - "../audios/synthesis_us_male.mp3 created\n", - "../audios/synthesis_us_female.mp3 created\n", - "\n", - "animal\n", - "../audios/animal_us_male.mp3 created\n", - "../audios/animal_us_female.mp3 created\n", - "\n", - "president\n", - "../audios/president_us_male.mp3 created\n", - "../audios/president_us_female.mp3 created\n", - "\n", - "pupil\n", - "../audios/pupil_us_male.mp3 created\n", - "../audios/pupil_us_female.mp3 created\n", - "\n", - "bacon\n", - "../audios/bacon_us_male.mp3 created\n", - "../audios/bacon_us_female.mp3 created\n", - "\n", - "lesson\n", - "../audios/lesson_us_male.mp3 created\n", - "../audios/lesson_us_female.mp3 created\n", - "\n", - "pilot\n", - "../audios/pilot_us_male.mp3 created\n", - "../audios/pilot_us_female.mp3 created\n", - "\n", - "circus\n", - "../audios/circus_us_male.mp3 created\n", - "../audios/circus_us_female.mp3 created\n", - "\n", - "medium\n", - "../audios/medium_us_male.mp3 created\n", - "../audios/medium_us_female.mp3 created\n", - "\n", - "support\n", - "../audios/support_us_male.mp3 created\n", - "../audios/support_us_female.mp3 created\n", - "\n", - "courageous\n", - "../audios/courageous_us_male.mp3 created\n", - "../audios/courageous_us_female.mp3 created\n", - "\n", - "famous\n", - "../audios/famous_us_male.mp3 created\n", - "../audios/famous_us_female.mp3 created\n", - "\n", - "humorous\n", - "../audios/humorous_us_male.mp3 created\n", - "../audios/humorous_us_female.mp3 created\n", - "\n", - "better\n", - "../audios/better_us_male.mp3 created\n", - "../audios/better_us_female.mp3 created\n", - "\n", - "butter\n", - "../audios/butter_us_male.mp3 created\n", - "../audios/butter_us_female.mp3 created\n", - "\n", - "teacher\n", - "../audios/teacher_us_male.mp3 created\n", - "../audios/teacher_us_female.mp3 created\n", - "\n", - "actor\n", - "../audios/actor_us_male.mp3 created\n", - "../audios/actor_us_female.mp3 created\n", - "\n", - "doctor\n", - "../audios/doctor_us_male.mp3 created\n", - "../audios/doctor_us_female.mp3 created\n", - "\n", - "editor\n", - "../audios/editor_us_male.mp3 created\n", - "../audios/editor_us_female.mp3 created\n", - "\n", - "beggar\n", - "../audios/beggar_us_male.mp3 created\n", - "../audios/beggar_us_female.mp3 created\n", - "\n", - "burglar\n", - "../audios/burglar_us_male.mp3 created\n", - "../audios/burglar_us_female.mp3 created\n", - "\n", - "collar\n", - "../audios/collar_us_male.mp3 created\n", - "../audios/collar_us_female.mp3 created\n", - "\n", - "culture\n", - "../audios/culture_us_male.mp3 created\n", - "../audios/culture_us_female.mp3 created\n", - "\n", - "figure\n", - "../audios/figure_us_male.mp3 created\n", - "../audios/figure_us_female.mp3 created\n", - "\n", - "pressure\n", - "../audios/pressure_us_male.mp3 created\n", - "../audios/pressure_us_female.mp3 created\n", - "\n", - "her\n", - "../audios/her_us_male.mp3 created\n", - "../audios/her_us_female.mp3 created\n", - "\n", - "term\n", - "../audios/term_us_male.mp3 created\n", - "../audios/term_us_female.mp3 created\n", - "\n", - "clerk\n", - "../audios/clerk_us_male.mp3 created\n", - "../audios/clerk_us_female.mp3 created\n", - "\n", - "earn\n", - "../audios/earn_us_male.mp3 created\n", - "../audios/earn_us_female.mp3 created\n", - "\n", - "earth\n", - "../audios/earth_us_male.mp3 created\n", - "../audios/earth_us_female.mp3 created\n", - "\n", - "heard\n", - "../audios/heard_us_male.mp3 created\n", - "../audios/heard_us_female.mp3 created\n", - "\n", - "bird\n", - "../audios/bird_us_male.mp3 created\n", - "../audios/bird_us_female.mp3 created\n", - "\n", - "first\n", - "../audios/first_us_male.mp3 created\n", - "../audios/first_us_female.mp3 created\n", - "\n", - "stir\n", - "../audios/stir_us_male.mp3 created\n", - "../audios/stir_us_female.mp3 created\n", - "\n", - "burn\n", - "../audios/burn_us_male.mp3 created\n", - "../audios/burn_us_female.mp3 created\n", - "\n", - "nurse\n", - "../audios/nurse_us_male.mp3 created\n", - "../audios/nurse_us_female.mp3 created\n", - "\n", - "turn\n", - "../audios/turn_us_male.mp3 created\n", - "../audios/turn_us_female.mp3 created\n", - "\n", - "word\n", - "../audios/word_us_male.mp3 created\n", - "../audios/word_us_female.mp3 created\n", - "\n", - "world\n", - "../audios/world_us_male.mp3 exists, overwriting...\n", - "../audios/world_us_male.mp3 created\n", - "../audios/world_us_female.mp3 exists, overwriting...\n", - "../audios/world_us_female.mp3 created\n", - "\n", - "worse\n", - "../audios/worse_us_male.mp3 created\n", - "../audios/worse_us_female.mp3 created\n", - "\n" + "but\n", + "../audios/but-us-male.mp3 created\n" ] }, { - "ename": "error", - "evalue": "music_mpg123: corrupt mp3 file (bad tags.)", + "ename": "CancelledError", + "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31merror\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[2], line 92\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, voice \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(voices):\n\u001b[1;32m 91\u001b[0m filename \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m../audios/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mword\u001b[38;5;241m.\u001b[39mstrip()\u001b[38;5;241m.\u001b[39mlower()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mregions[i]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mgenders[i]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.mp3\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m---> 92\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m generate_edge_tts_audio(word\u001b[38;5;241m.\u001b[39mstrip()\u001b[38;5;241m.\u001b[39mlower(), filename, voice\u001b[38;5;241m=\u001b[39mvoice, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, overwrite\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, play\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "Cell \u001b[0;32mIn[2], line 21\u001b[0m, in \u001b[0;36mgenerate_edge_tts_audio\u001b[0;34m(text, file_name, voice, style, verbose, play, overwrite)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m play:\n\u001b[1;32m 20\u001b[0m pygame\u001b[38;5;241m.\u001b[39mmixer\u001b[38;5;241m.\u001b[39minit()\n\u001b[0;32m---> 21\u001b[0m \u001b[43mpygame\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmixer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmusic\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 22\u001b[0m pygame\u001b[38;5;241m.\u001b[39mmixer\u001b[38;5;241m.\u001b[39mmusic\u001b[38;5;241m.\u001b[39mplay()\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m verbose:\n", - "\u001b[0;31merror\u001b[0m: music_mpg123: corrupt mp3 file (bad tags.)" + "\u001b[0;31mCancelledError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 81\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(w) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 80\u001b[0m filename \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m../audios/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mw\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mregions[i]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mgenders[i]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.mp3\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m---> 81\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m generate_edge_tts_audio(w, filename, voice\u001b[38;5;241m=\u001b[39mvoice, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, overwrite\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, play\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "Cell \u001b[0;32mIn[5], line 18\u001b[0m, in \u001b[0;36mgenerate_edge_tts_audio\u001b[0;34m(text, file_name, voice, style, verbose, play, overwrite)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfile_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m exists, skipping...\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 18\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m communicate\u001b[38;5;241m.\u001b[39msave(file_name)\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m play:\n\u001b[1;32m 20\u001b[0m pygame\u001b[38;5;241m.\u001b[39mmixer\u001b[38;5;241m.\u001b[39minit()\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/edge_tts/communicate.py:523\u001b[0m, in \u001b[0;36mCommunicate.save\u001b[0;34m(self, audio_fname, metadata_fname)\u001b[0m\n\u001b[1;32m 517\u001b[0m metadata: Union[TextIOWrapper, ContextManager[\u001b[38;5;28;01mNone\u001b[39;00m]] \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 518\u001b[0m \u001b[38;5;28mopen\u001b[39m(metadata_fname, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m\"\u001b[39m, encoding\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 519\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m metadata_fname \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 520\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m nullcontext()\n\u001b[1;32m 521\u001b[0m )\n\u001b[1;32m 522\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m metadata, \u001b[38;5;28mopen\u001b[39m(audio_fname, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwb\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m audio:\n\u001b[0;32m--> 523\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m message \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstream():\n\u001b[1;32m 524\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m message[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maudio\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 525\u001b[0m audio\u001b[38;5;241m.\u001b[39mwrite(message[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdata\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/edge_tts/communicate.py:506\u001b[0m, in \u001b[0;36mCommunicate.stream\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 504\u001b[0m \u001b[38;5;66;03m# Stream the audio and metadata from the service.\u001b[39;00m\n\u001b[1;32m 505\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpartial_text\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtexts:\n\u001b[0;32m--> 506\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m message \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__stream():\n\u001b[1;32m 507\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m message\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/edge_tts/communicate.py:365\u001b[0m, in \u001b[0;36mCommunicate.__stream\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 363\u001b[0m \u001b[38;5;66;03m# Create a new connection to the service.\u001b[39;00m\n\u001b[1;32m 364\u001b[0m ssl_ctx \u001b[38;5;241m=\u001b[39m ssl\u001b[38;5;241m.\u001b[39mcreate_default_context(cafile\u001b[38;5;241m=\u001b[39mcertifi\u001b[38;5;241m.\u001b[39mwhere())\n\u001b[0;32m--> 365\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mwith\u001b[39;00m aiohttp\u001b[38;5;241m.\u001b[39mClientSession(\n\u001b[1;32m 366\u001b[0m trust_env\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m 367\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msession_timeout,\n\u001b[1;32m 368\u001b[0m ) \u001b[38;5;28;01mas\u001b[39;00m session, session\u001b[38;5;241m.\u001b[39mws_connect(\n\u001b[1;32m 369\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mWSS_URL\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m&ConnectionId=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mconnect_id()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 370\u001b[0m compress\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m15\u001b[39m,\n\u001b[1;32m 371\u001b[0m proxy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mproxy,\n\u001b[1;32m 372\u001b[0m headers\u001b[38;5;241m=\u001b[39m{\n\u001b[1;32m 373\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPragma\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mno-cache\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 374\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCache-Control\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mno-cache\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 375\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mOrigin\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mchrome-extension://jdiccldimpdaibmpdkjnbmckianbfold\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 376\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAccept-Encoding\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgzip, deflate, br\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 377\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAccept-Language\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124men-US,en;q=0.9\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 378\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUser-Agent\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 379\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 380\u001b[0m },\n\u001b[1;32m 381\u001b[0m ssl\u001b[38;5;241m=\u001b[39mssl_ctx,\n\u001b[1;32m 382\u001b[0m ) \u001b[38;5;28;01mas\u001b[39;00m websocket:\n\u001b[1;32m 383\u001b[0m \u001b[38;5;66;03m# Send the request to the service.\u001b[39;00m\n\u001b[1;32m 384\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m send_command_request()\n\u001b[1;32m 386\u001b[0m \u001b[38;5;66;03m# Send the SSML request to the service.\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/client.py:1197\u001b[0m, in \u001b[0;36m_BaseRequestContextManager.__aenter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1196\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__aenter__\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m _RetType:\n\u001b[0;32m-> 1197\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_coro\n\u001b[1;32m 1198\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_resp\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/client.py:835\u001b[0m, in \u001b[0;36mClientSession._ws_connect\u001b[0;34m(self, url, method, protocols, timeout, receive_timeout, autoclose, autoping, heartbeat, auth, origin, params, headers, proxy, proxy_auth, ssl, verify_ssl, fingerprint, ssl_context, proxy_headers, compress, max_msg_size)\u001b[0m\n\u001b[1;32m 832\u001b[0m ssl \u001b[38;5;241m=\u001b[39m _merge_ssl_params(ssl, verify_ssl, ssl_context, fingerprint)\n\u001b[1;32m 834\u001b[0m \u001b[38;5;66;03m# send request\u001b[39;00m\n\u001b[0;32m--> 835\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrequest(\n\u001b[1;32m 836\u001b[0m method,\n\u001b[1;32m 837\u001b[0m url,\n\u001b[1;32m 838\u001b[0m params\u001b[38;5;241m=\u001b[39mparams,\n\u001b[1;32m 839\u001b[0m headers\u001b[38;5;241m=\u001b[39mreal_headers,\n\u001b[1;32m 840\u001b[0m read_until_eof\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 841\u001b[0m auth\u001b[38;5;241m=\u001b[39mauth,\n\u001b[1;32m 842\u001b[0m proxy\u001b[38;5;241m=\u001b[39mproxy,\n\u001b[1;32m 843\u001b[0m proxy_auth\u001b[38;5;241m=\u001b[39mproxy_auth,\n\u001b[1;32m 844\u001b[0m ssl\u001b[38;5;241m=\u001b[39mssl,\n\u001b[1;32m 845\u001b[0m proxy_headers\u001b[38;5;241m=\u001b[39mproxy_headers,\n\u001b[1;32m 846\u001b[0m )\n\u001b[1;32m 848\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 849\u001b[0m \u001b[38;5;66;03m# check handshake\u001b[39;00m\n\u001b[1;32m 850\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m resp\u001b[38;5;241m.\u001b[39mstatus \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m101\u001b[39m:\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/client.py:581\u001b[0m, in \u001b[0;36mClientSession._request\u001b[0;34m(self, method, str_or_url, params, data, json, cookies, headers, skip_auto_headers, auth, allow_redirects, max_redirects, compress, chunked, expect100, raise_for_status, read_until_eof, proxy, proxy_auth, timeout, verify_ssl, fingerprint, ssl_context, ssl, server_hostname, proxy_headers, trace_request_ctx, read_bufsize, auto_decompress, max_line_size, max_field_size)\u001b[0m\n\u001b[1;32m 576\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mwith\u001b[39;00m ceil_timeout(\n\u001b[1;32m 577\u001b[0m real_timeout\u001b[38;5;241m.\u001b[39mconnect,\n\u001b[1;32m 578\u001b[0m ceil_threshold\u001b[38;5;241m=\u001b[39mreal_timeout\u001b[38;5;241m.\u001b[39mceil_threshold,\n\u001b[1;32m 579\u001b[0m ):\n\u001b[1;32m 580\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connector \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 581\u001b[0m conn \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connector\u001b[38;5;241m.\u001b[39mconnect(\n\u001b[1;32m 582\u001b[0m req, traces\u001b[38;5;241m=\u001b[39mtraces, timeout\u001b[38;5;241m=\u001b[39mreal_timeout\n\u001b[1;32m 583\u001b[0m )\n\u001b[1;32m 584\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mTimeoutError \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 585\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ServerTimeoutError(\n\u001b[1;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection timeout \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mto host \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(url)\n\u001b[1;32m 587\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/connector.py:544\u001b[0m, in \u001b[0;36mBaseConnector.connect\u001b[0;34m(self, req, traces, timeout)\u001b[0m\n\u001b[1;32m 541\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m trace\u001b[38;5;241m.\u001b[39msend_connection_create_start()\n\u001b[1;32m 543\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 544\u001b[0m proto \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_create_connection(req, traces, timeout)\n\u001b[1;32m 545\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_closed:\n\u001b[1;32m 546\u001b[0m proto\u001b[38;5;241m.\u001b[39mclose()\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/connector.py:944\u001b[0m, in \u001b[0;36mTCPConnector._create_connection\u001b[0;34m(self, req, traces, timeout)\u001b[0m\n\u001b[1;32m 942\u001b[0m _, proto \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_create_proxy_connection(req, traces, timeout)\n\u001b[1;32m 943\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 944\u001b[0m _, proto \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_create_direct_connection(req, traces, timeout)\n\u001b[1;32m 946\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m proto\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/connector.py:1226\u001b[0m, in \u001b[0;36mTCPConnector._create_direct_connection\u001b[0;34m(self, req, traces, timeout, client_error)\u001b[0m\n\u001b[1;32m 1219\u001b[0m server_hostname \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 1220\u001b[0m (req\u001b[38;5;241m.\u001b[39mserver_hostname \u001b[38;5;129;01mor\u001b[39;00m hinfo[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhostname\u001b[39m\u001b[38;5;124m\"\u001b[39m])\u001b[38;5;241m.\u001b[39mrstrip(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1221\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m sslcontext\n\u001b[1;32m 1222\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1223\u001b[0m )\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1226\u001b[0m transp, proto \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_wrap_create_connection(\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_factory,\n\u001b[1;32m 1228\u001b[0m host,\n\u001b[1;32m 1229\u001b[0m port,\n\u001b[1;32m 1230\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout,\n\u001b[1;32m 1231\u001b[0m ssl\u001b[38;5;241m=\u001b[39msslcontext,\n\u001b[1;32m 1232\u001b[0m family\u001b[38;5;241m=\u001b[39mhinfo[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfamily\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m 1233\u001b[0m proto\u001b[38;5;241m=\u001b[39mhinfo[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproto\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m 1234\u001b[0m flags\u001b[38;5;241m=\u001b[39mhinfo[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mflags\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m 1235\u001b[0m server_hostname\u001b[38;5;241m=\u001b[39mserver_hostname,\n\u001b[1;32m 1236\u001b[0m local_addr\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_local_addr,\n\u001b[1;32m 1237\u001b[0m req\u001b[38;5;241m=\u001b[39mreq,\n\u001b[1;32m 1238\u001b[0m client_error\u001b[38;5;241m=\u001b[39mclient_error,\n\u001b[1;32m 1239\u001b[0m )\n\u001b[1;32m 1240\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClientConnectorError \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 1241\u001b[0m last_exc \u001b[38;5;241m=\u001b[39m exc\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/aiohttp/connector.py:1025\u001b[0m, in \u001b[0;36mTCPConnector._wrap_create_connection\u001b[0;34m(self, req, timeout, client_error, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1021\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1022\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mwith\u001b[39;00m ceil_timeout(\n\u001b[1;32m 1023\u001b[0m timeout\u001b[38;5;241m.\u001b[39msock_connect, ceil_threshold\u001b[38;5;241m=\u001b[39mtimeout\u001b[38;5;241m.\u001b[39mceil_threshold\n\u001b[1;32m 1024\u001b[0m ):\n\u001b[0;32m-> 1025\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_loop\u001b[38;5;241m.\u001b[39mcreate_connection(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 1026\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m cert_errors \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 1027\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ClientConnectorCertificateError(req\u001b[38;5;241m.\u001b[39mconnection_key, exc) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/asyncio/base_events.py:1147\u001b[0m, in \u001b[0;36mBaseEventLoop.create_connection\u001b[0;34m(self, protocol_factory, host, port, ssl, family, proto, flags, sock, local_addr, server_hostname, ssl_handshake_timeout, ssl_shutdown_timeout, happy_eyeballs_delay, interleave, all_errors)\u001b[0m\n\u001b[1;32m 1137\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m sock\u001b[38;5;241m.\u001b[39mtype \u001b[38;5;241m!=\u001b[39m socket\u001b[38;5;241m.\u001b[39mSOCK_STREAM:\n\u001b[1;32m 1138\u001b[0m \u001b[38;5;66;03m# We allow AF_INET, AF_INET6, AF_UNIX as long as they\u001b[39;00m\n\u001b[1;32m 1139\u001b[0m \u001b[38;5;66;03m# are SOCK_STREAM.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1142\u001b[0m \u001b[38;5;66;03m# Disallowing AF_UNIX in this method, breaks backwards\u001b[39;00m\n\u001b[1;32m 1143\u001b[0m \u001b[38;5;66;03m# compatibility.\u001b[39;00m\n\u001b[1;32m 1144\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 1145\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA Stream Socket was expected, got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00msock\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m-> 1147\u001b[0m transport, protocol \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_create_connection_transport(\n\u001b[1;32m 1148\u001b[0m sock, protocol_factory, ssl, server_hostname,\n\u001b[1;32m 1149\u001b[0m ssl_handshake_timeout\u001b[38;5;241m=\u001b[39mssl_handshake_timeout,\n\u001b[1;32m 1150\u001b[0m ssl_shutdown_timeout\u001b[38;5;241m=\u001b[39mssl_shutdown_timeout)\n\u001b[1;32m 1151\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_debug:\n\u001b[1;32m 1152\u001b[0m \u001b[38;5;66;03m# Get the socket from the transport because SSL transport closes\u001b[39;00m\n\u001b[1;32m 1153\u001b[0m \u001b[38;5;66;03m# the old socket and creates a new SSL socket\u001b[39;00m\n\u001b[1;32m 1154\u001b[0m sock \u001b[38;5;241m=\u001b[39m transport\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msocket\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/asyncio/base_events.py:1180\u001b[0m, in \u001b[0;36mBaseEventLoop._create_connection_transport\u001b[0;34m(self, sock, protocol_factory, ssl, server_hostname, server_side, ssl_handshake_timeout, ssl_shutdown_timeout)\u001b[0m\n\u001b[1;32m 1177\u001b[0m transport \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_socket_transport(sock, protocol, waiter)\n\u001b[1;32m 1179\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1180\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m waiter\n\u001b[1;32m 1181\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[1;32m 1182\u001b[0m transport\u001b[38;5;241m.\u001b[39mclose()\n", + "\u001b[0;31mCancelledError\u001b[0m: " ] } ], @@ -349,58 +161,45 @@ "regions = ['us', 'us', 'uk', 'uk']\n", "genders = ['male', 'female', 'male', 'female']\n", "\n", + "# only_us = False\n", "only_us = True\n", "if only_us:\n", " voices = voices[:2]\n", " print(voices)\n", "\n", "words = \"\"\"\n", - "card, mark, door,short,poor,your,focus,individual,\n", - "about,\n", - "banana,\n", - "sofa,\n", - "open,\n", - "problem,\n", - "synthesis,\n", - "animal,\n", - "president,\n", - "pupil,\n", - "bacon,\n", - "lesson,\n", - "pilot,\n", - "circus,\n", - "medium,\n", - "support,\n", - "courageous,\n", - "famous,\n", - "humorous,\n", - "better,\n", - "butter,\n", - "teacher,\n", - "actor,\n", - "doctor,\n", - "editor,\n", - "beggar,\n", - "burglar,\n", - "collar,\n", - "culture,\n", - "figure,\n", - "pressure,\n", - "her,\n", - "term,\n", - "clerk,\n", - "earn,\n", - "earth,\n", - "heard,\n", - "bird,\n", - "first,\n", - "stir,\n", - "burn,\n", - "nurse,\n", - "turn,\n", - "word,\n", - "world,\n", - "worse,\n", + "sun,\n", + "cup,\n", + "but,\n", + "son,\n", + "comfort,\n", + "money,\n", + "young,\n", + "double,\n", + "country,\n", + "blood,\n", + "flood,\n", + "father,\n", + "watch,\n", + "wasp,\n", + "almond,\n", + "balm,\n", + "palm,\n", + "because,\n", + "clause,\n", + "paunch,\n", + "drawn,\n", + "awning,\n", + "law,\n", + "hot,\n", + "dog,\n", + "log,\n", + "bought,\n", + "thought,\n", + "fought,\n", + "car,\n", + "far,\n", + "start,\n", "\"\"\"\n", "\n", "for word in words.strip().split(','):\n", diff --git a/1000-hours/sounds-of-american-english/3.1-vowels.md b/1000-hours/sounds-of-american-english/3.1-vowels.md index 98bad229..81e4a327 100644 --- a/1000-hours/sounds-of-american-english/3.1-vowels.md +++ b/1000-hours/sounds-of-american-english/3.1-vowels.md @@ -1,4 +1,4 @@ -# 3.1 元音(Vowels) +# 3.1. 元音(Vowels) 英文总计 **6** 个基础元音,分别是 ɑɪueɔə、 —— 这 6 个短元音就好像是 “根” 一样。所有元音要么是它们略有变化的长短版本,即,长元音(美式英语有半长元音);要么是它们的组合版本,即,双元音或者三元音。 diff --git a/1000-hours/sounds-of-american-english/3.1.1-ə.md b/1000-hours/sounds-of-american-english/3.1.1-ə.md index cf38ded8..3b245539 100644 --- a/1000-hours/sounds-of-american-english/3.1.1-ə.md +++ b/1000-hours/sounds-of-american-english/3.1.1-ə.md @@ -2,6 +2,10 @@ ə 这个基础元音,在英语中最为普遍。在美式英语中,也相对特殊,因为它的长短两个版本都常常带着儿化音,所以值得第一个详细讲解。 +在 6 个基础元音中,əi 的口型一样且最小。 + +![vowels-mouth-shape-ə](/images/vowels-mouth-shape-ə.svg) + ## 3.1.1.1. 示例 @@ -36,7 +40,7 @@
-## 3.1.1.2 央元音 ə +## 3.1.1.2. 央元音 ə 在美式英语中,ə 有个专门的名称,叫做 “央元音”(*schwa*)。 @@ -44,7 +48,7 @@ 在非重音音节上的 ə 是不可能带有儿化音的 —— 这一点要格外注意。很多人会矫枉过正,任何时候都把 ə 读成 ɚ…… 比如,有些人可能会把 *focus* ˈfoʊkəs 错读成 ˈfoʊkɚs。 -## 3.1.1.3 儿化音 +## 3.1.1.3. 儿化音 短元音 ɚ 和长元音 ɝː 这两个儿化音,有两种发声方式,一种是凭直觉卷起舌尖(无论是前卷还是后卷,都被称作 *Retroflex R*),这也是绝大多数初学者发这个音的唯一选择。 @@ -66,7 +70,7 @@ 另外,辅音 ʃ/ʒtʃ/dʒ 在发音的时候,舌尾也是同样的位置。 -## 3.1.1.4 拼写 +## 3.1.1.4. 拼写 ### ə diff --git a/1000-hours/sounds-of-american-english/3.1.2-ɑ.md b/1000-hours/sounds-of-american-english/3.1.2-ɑ.md new file mode 100644 index 00000000..9ec19558 --- /dev/null +++ b/1000-hours/sounds-of-american-english/3.1.2-ɑ.md @@ -0,0 +1,117 @@ +# 3.1.2. ʌ/ɑː/ɑːr + +在美式英语中,ɑ 有 *3* 个版本,短元音 ʌ、半长元音 ɑː,和长元音的儿化版 ɑːr。其中,ʌ 的口型最小,ɑːɑːr 的口型最大。 + +![vowels-mouth-shape-ʌ-ɑ](/images/vowels-mouth-shape-ʌ-ɑ.svg) + +## 3.1.2.1. 示例 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BritishAmerican
D.J.例词(Example)IPA例词(Example)
ʌbut bʌtʌbut bʌt
ɑːfather ˈfɑː.ðərɑːfather ˈfɑː.ðɚ
ɒdog dɒɡɑːdog dɑːɡ
ɑːrcard
+ +## 3.1.2.2. 短元音 ʌ + +在美式英语中,ʌ 略有 ə 的音色,甚至有些美国词典干脆用 ə 这个符号替代 ʌ —— 比如韦氏词典(Merriam-Webster)中 *but* 这个词的音标被写成 bət。另外,英国人说 ʌ 的时候,口型相对美国人更大一些。 + +## 3.1.1.3. 半长元音 ɑː + +在 CEPD 中,ɑː 虽然带着一个长元音符号,它实际的长度相当于**半长元音**,即,它比短元音长一些,比长元音短一些。 + +另外,CEPD 里的 ɑː 还对应着英式英语中的短元音 ɒ。除了 CEPD 之外,大多词典会把 *hot* 的音标标注为 hɑt —— 即,没有长元音符号。但是CEPD 会标注成 hɑːt。所以,按照 CEPD 的标注,我们可以这么理解:在美式英语中,ʌ 最短,ɑː 更长一些,而 ɑːr 最长。 + +## 3.1.1.4. 儿化长元音 ɑːr + +ɑːr 的儿化音得用**舍尾后缩**的方式发出(*Bunched R*)。如果你肯仔细体会的话,从感觉上来看,ɑːr 更像是 ɑːᵊr,或者写成 ɑːɚ —— 会有个实际上相当明显的 的加音。 + +## 3.1.1.5. ɑːæ + +除了CEPD 里的 ɑː 还对应着英式英语中的短元音 ɒ 之外,另外一个值得注意的是,英音中的 ɑː 在美式英语中读作 æ,最常见的例子是 *ask*,英音是 ɑːsk,美音是 æsk。 + +## 3.1.1.6. 拼写(Spellings) + +### ʌ + +* **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 diff --git a/1000-hours/sounds-of-american-english/3.1.3-i.md b/1000-hours/sounds-of-american-english/3.1.3-i.md new file mode 100644 index 00000000..26bffba0 --- /dev/null +++ b/1000-hours/sounds-of-american-english/3.1.3-i.md @@ -0,0 +1,81 @@ +# 3.1.3. ɪ/i/ + +在美式英语中,i 有 *3* 个版本,短元音 ɪ、半长元音 i,和长元音 。其中,i 的口型最小,ɪ 的口型相对较大。 + +![vowels-mouth-shape-ʌ-ɑ](/images/vowels-mouth-shape-i.svg) + +## 3.1.3.1. 短元音 ɪ + +短元音 ɪ 并不简单地是长元音 的更短版本,它更像是 ei 之间的一个音。听起来很像是更短版本的 ,从唇形上来看ɪ 更接近 e 。 + +![vowels-mouth-shape-ɪ-i](/images/vowels-mouth-shape-ɪ-i.svg) + +仔细听听这几个词汇: + +> * *bit* bɪt +> * *sit* sɪt +> * *hill* hɪl + +## 3.1.3.2. 长元音 + + 并不简单地是短元音 ɪ 的长版本,它没有 的音色,口型相对于 ɪ 更为扁平。 + +再进行一下比较: + +> * *bit* bɪt ⭤ *beat* bi:t +> * *sit* sɪt ⭤ *seat* si:t +> * *hill* hɪl ⭤ *heal* hi:l + +## 3.1.3.3. 半长元音 i + +i 这个音实际上还有个半长元音版本,ɪ 在词汇末尾的时候,更倾向于像是 这个长元音的更短版本,i,长度介于 ɪ 之间 —— 也就是说,i 是个半长元音。 + +比如,*responsibility* rɪˌspɑːn·səˈbɪl·ə·t̬i…… 在这一点上,英音美音都是一样的。 + +值得注意的是,这一点很可能与我们在中国大陆的学校里学到的不一样 —— 主要是因为我们的教材常年不更新的缘故。CEPD 也是到了第 *13* 版才全面把词汇末尾的 ɪ 更改为 i(还专门有个名字,叫作 *happy i*)。另外,绝大多数电子词典配备 “真人发音” 也只不过是近十几年的事情而已。 + +## 拼写(Spellingsi: + +### ɪ + +* **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 + +### + +* **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