From 1d8fd1f392f2c349a94f49a49d4d796fc77d8d0d Mon Sep 17 00:00:00 2001 From: xiaolai Date: Sun, 14 Apr 2024 10:32:19 +0800 Subject: [PATCH] keep updated --- 1000-hours/public/audios/us/cat-us-female.mp3 | Bin 9072 -> 9600 bytes 1000-hours/public/audios/us/cat-us-male.mp3 | Bin 8928 -> 10560 bytes .../jupyter-notebooks/cat-us-female.mp3 | Bin 0 -> 9600 bytes .../public/jupyter-notebooks/cat-us-male.mp3 | Bin 0 -> 10560 bytes .../edge-tts-valcab-pronounciation.ipynb | 6 +- .../jupyter-notebooks/sentence-openai.ipynb | 92 +++++++++++++++++- .../sounds-of-american-english/2.2.3-td.md | 16 ++- 7 files changed, 101 insertions(+), 13 deletions(-) create mode 100644 1000-hours/public/jupyter-notebooks/cat-us-female.mp3 create mode 100644 1000-hours/public/jupyter-notebooks/cat-us-male.mp3 diff --git a/1000-hours/public/audios/us/cat-us-female.mp3 b/1000-hours/public/audios/us/cat-us-female.mp3 index 57a1b3c792279dd6fa854b49d00178ae88ec8884..48706a5ce21de93db406d8e520cfe382c0237337 100644 GIT binary patch literal 9600 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 literal 9072 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 diff --git a/1000-hours/public/audios/us/cat-us-male.mp3 b/1000-hours/public/audios/us/cat-us-male.mp3 index 462e48d8cff37f4c0378ece80058d284b9abb0fd..5682a097a45475725ea4b5a50177abbf71037cb9 100644 GIT binary patch literal 10560 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 C{zHiX literal 8928 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 socWw0Ik7nNIl*yiIP*D0a$<4jbAsd4aOQK0A znjk7o1&zxQg6`?O=gJ$<*gJR+Z6Xw)~ciy$j{Ds?l*nz&S(CTwCP92`^1^c zOmFjSA8h&Y?R_vS_NbQ`)`KKx0FtYueetBT^>#1^?NnAr&{{a%Lcn#K zu4H$ahUuBMqg^v5sxe_gxve)P9;bE&AK7uLj9kA zeR)UkIbcB-R)O(Gl($jPZOXp)pZ?enh+5p$bU^_N{V}rHB1fo>!qC@XGV6QnbffW4 z;xQR;2F-@!P+E#)q@v-{)|7L&0w)Fk)`dS`ibooJt}h*lL@(VEO7$)@Xo|?{qL?dg z5Cq^fJUgQSfe`YST$~Qu?fX;_)L~xI^*ZRg(z~CNP5gKSwcD`XpKG|YC%*e_chd24 zw50+L!Bc{8A;>ZroRCk3h$NsK?B_$a*TWhb?l%>7pZjy)>5!e=hlPJgN05aCUe8o!|%Pg~rUk-|y?q2`!b=%$)HR`m=@~g?qiYaNb z<9}EM8T)s6fd*uU^iV5gl()LfM++=MidAcQHPTJnsE~3&2u;{Z5gs$Rc#yz`DjYDg zH?I5mMo~7py(`z!H_nvWY+f6Q#u(%{eYY>8rOH2ci)iiAt-lv#UQwm4TeBN1Va^NL=Wl9Eb2=YEMS3nlGWEDB>9>BsBT^^%it=cTcwHECG` z7nKyiJ(A=JbYlWs)omwYuCQjZdV@v}lgvGf&G)-T{OVA6)hjC4ync&nxd#g3R|F!h zEzkq_J-$JXo0f^g^d)(zmg8SyFL1toEW*PdXVM3ugLxPx`@|^T61;B)rK!dNJIij+ z*mATE98d>32BDY}XL3Yl_a&}-=fF9oYsu#h?@c!S4=3i`FO0Ql#)ex^0m#3Mw|6Li zw2ZO(HZ`CP(b?485qL1I?6D*3&pwKJ@Sd&Kg*!F1@CC1yoNn$jwe@NI&1jRg@>Jf{ za!V`j$?Qo>0lDg*fuL)ZYfi}*n^DW`?e`>fJ!M9j$A(4YSGIxpV+sd!H+*n|Wzb^h zsK!|3yE5of{?JQ*8-p>nCLQ7?YB-*&awTlVebB->SBC6M|D&?ONpj2!_r)#>5TFkr z!oK->9j#R0!Dnk#0vuxp&QO0XIthLa|m2}i#!)88%R zRT3jfqjURgE(?d$&>Ze>-GfwvA{Z&zw25BhOHqmTl;U|GNs+FTBSB3+v{&cnZeaw< z#}{li_qrTNo$+m?k*l4NJJHAP^K`dQU(36mU~xan|M z=lt9F2o?WbpWLnoESSvxGAV5B+m!VZ(Zug)=s0F|Fhl6dpxv`^f|xAW#`?$M9CG_K z7&ciSzWMG+UvOYi-+!Fv4lbJbt>>!72`JTIHnFEi+!ss1X}J?Iv=k;3=gk)!`-m4y zbDg2t$g?P(2xl85915yRDs~mKY#t@v1)H{njZ1-!cHnuUrOZxNi0pr>y2F@T^oqu)%ZsvB%y?%$&kh?A)Jy5dRzYpMyg! z?}r9fO1!XE*PE3%)?Qy*SwoVBb^DhFr#odL5uSI^|9Fd@_vr?Bzu>yfZu_!l+CS`7SM&Ej0{La-y5T|)mFUl;SjIH7!0HsOcl1g0=3z5LsMo~bc zE4d~|&U@2%= zklmwBKD`g*$xJnh{IvTN0Ip6L8T)Q)=7+16jdYN?$T{n5p}cw^N5%@7=y3%(ohcL} z&}ZY3gC?;FZ{Z9@hPX`-PBRmtg$FRpL z{Px{1mXvAr?b$HSxIxJ~H2rhO-QcScy)6@ZS7*XI3QcWnP7b{vUEeEzl2@}@9jS|t zWOcL^9DNqCliY#JzC6+d-`X8`591lz!x=i&c) zy_7*HM!A*{qdmIzX@Ph^!-5D>1Nr)~pN((+sev6A;G$tP#5Q{Lab|@5&V6C5{&p?g zI1w$2cG1*I)O^%k*t1LaK}{VQ<-9HGqNVZocbK-(OSQ9o-%t4KLi-5$#@l9@TgRhx zhkEsNZ1QYpJ0jM;`Nke9b+7~8|B9xMES**{a{D5=whc})@=gY`{V|=EofT*^U*&9Q7cbc6!_jy8xAb($ey zjRK0isGGkUJ+vo%J(Cz+5!YPwg!6hXHQ1udJ^Gy0+p;4E7(ZyvRT=9vHve(I^D|vz z`i%B};xYrv-YWc;{2s6U`FvyByVZ_9f=$Kj?cA>M<+o{noOF#hqgXoEf0iGvO|yRG zyxs5Br<=nD+d+G5uF?oDr`#6rewgb<<~@CT>`UK=I4$;FA%;@^Q=TDu>^s;6-QZL+ z^PARbBZ2Q()4Ynut*j=e(hKo-UNK|l-W$Cj?dsWV>0@-}Ak+yiCaro33= z@mo7l1tywm2Y4QFXM?e4ZHR?7CpBY3$IVkw!&2GOIhl2Y?5pE=6keupg|6$AtB5 zAw#d@X#Ca@F`+~Q_mz((^nwdRTH+}xkm}JOni3ZkyNZZ3gAzy{rcQ;O19`L*pc-=F&E#}AzLi4ll9a8bH2iHo> z560}w840MiCk>tzGR-w+8tQB`MP;c`KK3rr0lo2oB+GZ|JdU>u)0$4BHUGa&d1rSK zOGS(d+j;J%1%{M1WTeCB_5rUmQr->rEiv?EyfVgO2z1q!tr{~z>%5+bDG~mN8lSXj z?;Lm!@n8;xOKgn^tpNwvS=WDANsF$Ac4^sE>N-Z2BBYmN`Z#A@TiFyft=#~`rMM9$vRJmllje0Jlc$mq<`1jHZvW7}{0 z!={6N=Op;t<5$t?6_8~BIqB|=bmFeyr8e| z;$}`CZJ9o_dn^r`xPCjN{Z={SKMl3Bxte2!Wns3*N3YIQwK0Evo-Au3VyxYb}w z|ABonTuwkwK+5=mKD$Az8LAUFFnYxdwXZj1dXb3Qr`b8UD_Dkk7&1Ovipt9C8bJl2 zl3h~<7GhA_oLl;--s3-TME$Es)b4?WzB;#Y4kD*_6+3P)5YR)l=b4E+duSM$Pk%~( z9gU|8sW%(H**Y3Ak??ueSW_x{IpJN6n>_1%Bxfr$-VLrL6~0*^TofK6t4GFVOHQDo z5KcJ~$*{JPX!*_e}E>vEz8@2;biYa!<0svPa|5ITM?D$zN%*Oiog-qFZnV69Rk`Xlf zPVra1fxf5YouTP&E9C9)Fzrhg46_S6ufDrB7sdA~7%DV7rDqPIHDCxqH>Gm{t*1O$ zJ3X|wT?*PCJ@I<}%ip@gD}K|Me!W6Tn2EXP+dVa9n;+JRFSeZ37z;b-QzQ(z#G^TR zbD!qF>TO-Z2bTMnzt}ZJZ7Dn8wP7CkzxbYX0ix7lQOu?i16~K<^@%suXDDGB4SX^~ zLF~cB{D1*2rIJBMl`)CsYL>1jki<=AWlMo;z?LEXiz1M6M6LC)+`V7$`o(YV4|A!H zJ|3IYIxw*~Jjy0MUJf4+j1L!uJdB#{EhhF~{@n9%vTy1{-%|KPtbCv-WeB`DR74!1 zhZ}5F>_b*&FmVL9LJxwQ&`@Yo6(%4Y%?wA@!CAv_dMJgpmV&E=Gl6Qu-0h2Uh#{08 zvB+^_9Vs+h3k;-82e(<|H2n9LH_KC#OK8`Zpv;L%Vzu6f7)#DqksMM{-^WZ8G+_) zK;StyLNKQ5d!Og!tL(I(XFD*GKx0986B5eOl|Q$CX!SWh_2|lLpP#pL4|tJnV(Aw{ zK9=8mxBTqSj%SmP?={{SYr0~#e6sv$RkiHVOu%UH{`5`kGIhV>GOOfP46CfY@KMml zftJ&zoz2YW=p6xaI^2s%fHA`t7U$ZFZal$j*;`v>;dW}~6j`1@?@x7vWo&yBY zBU2yO0p6+XEV!z6IJ^Udw$p{oU`R1EAIg#@k%~j;Ac$@>F4##;^qh7S?}SS6!~!Xc zELyT!Ex5IjmHC`*H|nUXlp5zYFYpWheD`SDnN?|6D=UV`TlbP>OcTp*aQ%< zFcpyja=EV|QVKM{Y_tf1f@VRvfDefcF>fLo;T&^|L@JmRK%)RSu&CZmoFfCE8IWo# z8*|EqjlNCczNi|L%MuOiZ&;P9x|aMJ{csunpd`njx~ZpByQbJWY4eJ$+j^+kgYWV= z{_|rsXXaMc-tv5=?^>ILsfi!EdfDDxJo=)dXXE5Qz2yVV1`ctq2TbXdI{#x^<&S&uA!-VNxuVOi zQUJlj@d`VAoH|$oG^iz&;6-Dr)5`fVKj)sBltKBsu`&YIMyl$A^cchX$Y3je11itDDZ;~`x^Os@3}~(F&~Dga_|5lK=4%Hmj7oI9J1ymrF{oJ@dkd4c%e4 zQ;i>uH?@C{_PX*U!Ssg4ozY+v5*M4y^CT_~z4xs5r{AR=`TgrN>GO(#`k-!VLm4|{ zY`^&(8~I^$?L0QF{Odjr}fs9VWzxj@wklB9*U7Q4@ z1yB#pQm$Y?hJ;#Z(aF3jfBx#zF;)mKqSglbH4v(__AM~fXNQ1=IpsO7O`rU{jgT?k z6ab_R9RAotvW-OJM=XCd;VeyfoX}uOyB=GH`T7u{B1YsXnf5R8vB{H&u!f;jz>C zw4tn8ka+s38FSCk{GfZ$Pyz&jHAomrIv9f-?yo!Vt{ctJBWb5U>7?;7eG${r+Q~NM zamxxO3a;i%OwrxWq1hqJz|O;u!K}s}GoCQpB7IPIdny{@j`H}>?iinA(AFTIeu7hP zz7_p%8Se}Pbg^wT=M!`3CfW~1>opQZ=y8vefoS|;dbW7!ypu?W8rzg36wOBxLj;Nd zn)W%UD_l(G%2ss531ndkLMRUtxZ4VFMzQ^{GcAZxg8}xHhDpIVIyW?n#A_)k z;%4PQWT8ylkswVT&N12-U+jAJxPofx(V^|Z=$`~f=T^GLA_T}3`;;6|F(bJ;pF|@9 zCV-0!^luV6EC)(ZFaeB-77Msq^lKRU{K$h3pF)KYC@lzTd1k;Ir_7#TQ6n>+jkU0#@>|c}eYu!B7-b zVQ|V=E{76B!Sr}MtW9m|C%QoSz+56| zGtVk*z*Ba3+zEm9UFN4y`bB*j+2gz@=1$_&TFKTk#!Pg#@h}{AdqoRZx$sA{+#m>- z6B0LEIeFDJ$;;~Ksnk!^Em4z&I00d>XGtBBEr#oS^F4Ed_wV~#y$H}D2x4?kR(^dQ z-S?-3_8n=$4yP3Z0^YqV8b~cwgQEaNwNd1h{Uu%aZSSi2SHiZe<}+l50C%PL?C@P+16HlA&`J{i+vwbWtk#l_Kl!MQ7jYcFwIpUr%e7eAZ)`GJ*3-F*ydXL7W5~^Lm!@OBYbvr)+6ac2kCfRj!7g& zF6eB=)8w??m|EK$+1cH61OQ+t=vz7<7#jri_-4Cuxi8tn2zikgR)AtdO*Fv`Iu3>U z2qH|}ppkm^g;P@=SgJxH!b#3lSHYTV;_ky!-+T{bIy(?Z3-iEbx(SQ68J%zC_gnOy zJ7L#dt>7dULA`cR3pnRKA8m-?d ztzpZv^wuA+YX-@znApMO@K_35;1k*VvPVR$gU|$&Da8f6bSlj&bFS*`VOou^vQHBc zxV{c(h;eJ2Y*8c1UBp9W=9B=C?FmKXs#oSkx>e!?E~nxuzQ!F*9O^T^su&o8x~!Z? z=J6$PBOJphy1#*+8RtwUIKb^`#eIf4eCWE%jP@4VV&_RZxP!Khh@`WRC}l6j4SJ4I z#D^z;2WRVMDcE0SAThvWyV!1vJ*kFZqn!EuToA_t1%hjXz5IRwb5Oka!9k#Ja+_kT zy|0}4SO+-s~>W&AxdildIMgwJQGz$m&B-yZ#YTnWw z{L1P(@wQy?A@Zf)<{bVWG^Nct{PKWxEz?au=GR214io&G19Y%XJk$)XVJij7N!YW1 zo)p&z0G}eo7g)rVWR>6~X4>|*Y$KegDqmiAnay*w`Ub~b>QU;B2(UR8)+1&k&BE_B zdT07-^5sP z=7Q$pHGxjHT%-7A%$7+hu}&r;4rj*j@h(5nq_@BM*2Fm4j{|cl^N+sp-*{hWh%w@j z&k%sFw@$}(zhH=@9c!Z(sPWxiyzx)`S%a<4kJqQqzizU!Fu0`)JFW3ohaxG(+ArI9 zwEU-Y#* z^8B-{vYN3hlF!?)Wa`%w&COTMn)A#OGbowy7I(itQ26++t)6OOLCsJXuc#OnzL^7y zBlJ33n@;4+8kpco>h%~bSJ2iU|8E$`4WeAW+FPPA?80b)g<;vO8jiY5wCsn@-KwLx zZ~OA}MCEjE9Rnv-ee-<~U23<8nqU&_7&U4>cAO~`D!?h5ib#(n>R$k90OQYV8&O_w zD8Ga@Tn&pACr3(lnw+n@bfKZN|I(Y7-ULf%vxTx|9oNYF_4sz(&f2%6y-%X%|8|Zi zubIF1jHt-}AR=}3|E>Gy@AXrPM3DGm`RmS#g3%}{si;#@{sR9gFj;Hw@F#m}lc=d+ z7b*Xw1Z0ZH@pbz*B$@$}&^jj$YH<07q?Q le!Cl7XfZ696!?Lzn1@CxuaTh=g1}w(|K|5!$p1f={{gy$$iM&q literal 0 HcmV?d00001 diff --git a/1000-hours/public/jupyter-notebooks/cat-us-male.mp3 b/1000-hours/public/jupyter-notebooks/cat-us-male.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5682a097a45475725ea4b5a50177abbf71037cb9 GIT binary patch literal 10560 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 C{zHiX literal 0 HcmV?d00001 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 97e2e8b1..fe54502c 100644 --- a/1000-hours/public/jupyter-notebooks/edge-tts-valcab-pronounciation.ipynb +++ b/1000-hours/public/jupyter-notebooks/edge-tts-valcab-pronounciation.ipynb @@ -197,7 +197,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "cecefa85-b37d-457e-9e99-e582dabdfb9f", "metadata": {}, "outputs": [ @@ -205,8 +205,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "pygame 2.5.2 (SDL 2.28.3, Python 3.12.1)\n", - "Hello from the pygame community. https://www.pygame.org/contribute.html\n", "Files created!\n" ] } @@ -218,7 +216,7 @@ "import edge_tts\n", "import pygame\n", "\n", - "TEXT = \"door,short,poor,your\"\n", + "TEXT = \"cat,foot\"\n", "Wordlist = TEXT.split(\",\")\n", "\n", "for w in Wordlist:\n", diff --git a/1000-hours/public/jupyter-notebooks/sentence-openai.ipynb b/1000-hours/public/jupyter-notebooks/sentence-openai.ipynb index 6297e9ff..e4f24e98 100644 --- a/1000-hours/public/jupyter-notebooks/sentence-openai.ipynb +++ b/1000-hours/public/jupyter-notebooks/sentence-openai.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 21, + "execution_count": 4, "id": "e6525deb-267c-475f-a73a-7939c5bdca86", "metadata": {}, "outputs": [ @@ -10,7 +10,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/k_/t1vf2gd95jbc1j3k49xxdfy80000gn/T/ipykernel_17239/3460699688.py:29: DeprecationWarning: Due to a bug, this method doesn't actually stream the response content, `.with_streaming_response.method()` should be used instead\n", + "/var/folders/k_/t1vf2gd95jbc1j3k49xxdfy80000gn/T/ipykernel_4125/3127614044.py:29: DeprecationWarning: Due to a bug, this method doesn't actually stream the response content, `.with_streaming_response.method()` should be used instead\n", " rspd_audio.stream_to_file(speech_file_path)\n" ] } @@ -29,7 +29,7 @@ "\n", "\n", "text = \"\"\"\n", - "Some people do not believe in destiny.\n", + "kitten\n", "\"\"\"\n", "# Create audios for each versions (three was set as default previously.)\n", "\n", @@ -51,9 +51,93 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "603fb48b-2fd5-482c-9c96-38a65fc43824", "metadata": {}, + "outputs": [ + { + "ename": "APIConnectionError", + "evalue": "Connection error.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_transports/default.py:69\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 69\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_transports/default.py:233\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 233\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:216\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 216\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 218\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 219\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py:196\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 195\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 196\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 197\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 198\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 199\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 200\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 201\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 202\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 203\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpcore/_sync/http_proxy.py:317\u001b[0m, in \u001b[0;36mTunnelHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 316\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstart_tls\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 317\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[43mstream\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart_tls\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 318\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpcore/_sync/http11.py:383\u001b[0m, in \u001b[0;36mHTTP11UpgradeStream.start_tls\u001b[0;34m(self, ssl_context, server_hostname, timeout)\u001b[0m\n\u001b[1;32m 377\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mstart_tls\u001b[39m(\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 379\u001b[0m ssl_context: ssl\u001b[38;5;241m.\u001b[39mSSLContext,\n\u001b[1;32m 380\u001b[0m server_hostname: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 381\u001b[0m timeout: Optional[\u001b[38;5;28mfloat\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 382\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m NetworkStream:\n\u001b[0;32m--> 383\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_stream\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart_tls\u001b[49m\u001b[43m(\u001b[49m\u001b[43mssl_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mserver_hostname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpcore/_backends/sync.py:152\u001b[0m, in \u001b[0;36mSyncStream.start_tls\u001b[0;34m(self, ssl_context, server_hostname, timeout)\u001b[0m\n\u001b[1;32m 148\u001b[0m exc_map: ExceptionMapping \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 149\u001b[0m socket\u001b[38;5;241m.\u001b[39mtimeout: ConnectTimeout,\n\u001b[1;32m 150\u001b[0m \u001b[38;5;167;01mOSError\u001b[39;00m: ConnectError,\n\u001b[1;32m 151\u001b[0m }\n\u001b[0;32m--> 152\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mwith\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mmap_exceptions\u001b[49m\u001b[43m(\u001b[49m\u001b[43mexc_map\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mtry\u001b[39;49;00m\u001b[43m:\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/contextlib.py:158\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 157\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 158\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 160\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 161\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:951\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 950\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 951\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 952\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 953\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_should_stream_response_body\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 954\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 955\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 956\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m httpx\u001b[38;5;241m.\u001b[39mTimeoutException \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_client.py:914\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 912\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 914\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 915\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_client.py:942\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 941\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 942\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_client.py:979\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m hook(request)\n\u001b[0;32m--> 979\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_client.py:1015\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1014\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1015\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1017\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_transports/default.py:232\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 220\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 221\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 222\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 230\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 231\u001b[0m )\n\u001b[0;32m--> 232\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mwith\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mmap_httpcore_exceptions\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[43m \u001b[49m\u001b[43mresp\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/contextlib.py:158\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 157\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 158\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 160\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 161\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/httpx/_transports/default.py:86\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 85\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 86\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mexc\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mAPIConnectionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[15], line 24\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m v \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124malloy\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnova\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 20\u001b[0m \u001b[38;5;66;03m# alloy, echo, fable, onyx, nova, and shimmer, the last two of which are femail voices.\u001b[39;00m\n\u001b[1;32m 22\u001b[0m speech_file_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mw\u001b[38;5;241m.\u001b[39mstrip()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-us-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmale\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mif\u001b[39;00m\u001b[38;5;250m \u001b[39mv\u001b[38;5;250m \u001b[39m\u001b[38;5;241m==\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124malloy\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01melse\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfemale\u001b[39m\u001b[38;5;124m\"\u001b[39m\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---> 24\u001b[0m rspd_audio \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maudio\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mspeech\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtts-1\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 26\u001b[0m \u001b[43m \u001b[49m\u001b[43mvoice\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtext\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 30\u001b[0m rspd_audio\u001b[38;5;241m.\u001b[39mstream_to_file(speech_file_path)\n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# IPython.display.Audio(speech_file_path)\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/resources/audio/speech.py:86\u001b[0m, in \u001b[0;36mSpeech.create\u001b[0;34m(self, input, model, voice, response_format, speed, extra_headers, extra_query, extra_body, timeout)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;124;03mGenerates audio from the input text.\u001b[39;00m\n\u001b[1;32m 58\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[38;5;124;03m timeout: Override the client-level default timeout for this request, in seconds\u001b[39;00m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 85\u001b[0m extra_headers \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAccept\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mapplication/octet-stream\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m(extra_headers \u001b[38;5;129;01mor\u001b[39;00m {})}\n\u001b[0;32m---> 86\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_post\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 87\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/audio/speech\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 88\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaybe_transform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 89\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[1;32m 90\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minput\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 91\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvoice\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mvoice\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 93\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mresponse_format\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse_format\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mspeed\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mspeed\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[43m \u001b[49m\u001b[43mspeech_create_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mSpeechCreateParams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 97\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 98\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmake_request_options\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 99\u001b[0m \u001b[43m \u001b[49m\u001b[43mextra_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_headers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_query\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_query\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_body\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\n\u001b[1;32m 100\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 101\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_legacy_response\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mHttpxBinaryResponseContent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 102\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:1233\u001b[0m, in \u001b[0;36mSyncAPIClient.post\u001b[0;34m(self, path, cast_to, body, options, files, stream, stream_cls)\u001b[0m\n\u001b[1;32m 1219\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(\n\u001b[1;32m 1220\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1221\u001b[0m path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1228\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1229\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[1;32m 1230\u001b[0m opts \u001b[38;5;241m=\u001b[39m FinalRequestOptions\u001b[38;5;241m.\u001b[39mconstruct(\n\u001b[1;32m 1231\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url\u001b[38;5;241m=\u001b[39mpath, json_data\u001b[38;5;241m=\u001b[39mbody, files\u001b[38;5;241m=\u001b[39mto_httpx_files(files), \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39moptions\n\u001b[1;32m 1232\u001b[0m )\n\u001b[0;32m-> 1233\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m cast(ResponseT, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:922\u001b[0m, in \u001b[0;36mSyncAPIClient.request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 913\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\n\u001b[1;32m 914\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 915\u001b[0m cast_to: Type[ResponseT],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 920\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 921\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[0;32m--> 922\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 923\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 924\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 925\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 926\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 927\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 928\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:960\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 957\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEncountered httpx.TimeoutException\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 959\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m retries \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 960\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_retry_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 961\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 962\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 963\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 964\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 965\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 966\u001b[0m \u001b[43m \u001b[49m\u001b[43mresponse_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 967\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 969\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRaising timeout error\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 970\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m APITimeoutError(request\u001b[38;5;241m=\u001b[39mrequest) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:1046\u001b[0m, in \u001b[0;36mSyncAPIClient._retry_request\u001b[0;34m(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)\u001b[0m\n\u001b[1;32m 1042\u001b[0m \u001b[38;5;66;03m# In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a\u001b[39;00m\n\u001b[1;32m 1043\u001b[0m \u001b[38;5;66;03m# different thread if necessary.\u001b[39;00m\n\u001b[1;32m 1044\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(timeout)\n\u001b[0;32m-> 1046\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1047\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1048\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1049\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1050\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1051\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1052\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:975\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 972\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEncountered Exception\u001b[39m\u001b[38;5;124m\"\u001b[39m, exc_info\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 974\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m retries \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 975\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_retry_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 976\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 977\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 978\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 979\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 980\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[43m \u001b[49m\u001b[43mresponse_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 982\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 984\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRaising connection error\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 985\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m APIConnectionError(request\u001b[38;5;241m=\u001b[39mrequest) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:1046\u001b[0m, in \u001b[0;36mSyncAPIClient._retry_request\u001b[0;34m(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)\u001b[0m\n\u001b[1;32m 1042\u001b[0m \u001b[38;5;66;03m# In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a\u001b[39;00m\n\u001b[1;32m 1043\u001b[0m \u001b[38;5;66;03m# different thread if necessary.\u001b[39;00m\n\u001b[1;32m 1044\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(timeout)\n\u001b[0;32m-> 1046\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1047\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1048\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1049\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1050\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1051\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1052\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/homebrew/Caskroom/miniconda/base/lib/python3.12/site-packages/openai/_base_client.py:985\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[1;32m 975\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_retry_request(\n\u001b[1;32m 976\u001b[0m options,\n\u001b[1;32m 977\u001b[0m cast_to,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 981\u001b[0m response_headers\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 982\u001b[0m )\n\u001b[1;32m 984\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRaising connection error\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 985\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m APIConnectionError(request\u001b[38;5;241m=\u001b[39mrequest) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[1;32m 987\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\n\u001b[1;32m 988\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mHTTP Request: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m%i\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m, request\u001b[38;5;241m.\u001b[39mmethod, request\u001b[38;5;241m.\u001b[39murl, response\u001b[38;5;241m.\u001b[39mstatus_code, response\u001b[38;5;241m.\u001b[39mreason_phrase\n\u001b[1;32m 989\u001b[0m )\n\u001b[1;32m 991\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "\u001b[0;31mAPIConnectionError\u001b[0m: Connection error." + ] + } + ], + "source": [ + "from openai import OpenAI\n", + "import IPython\n", + "from datetime import datetime\n", + "import sys\n", + "from dotenv import load_dotenv\n", + "import os\n", + "\n", + "load_dotenv()\n", + "client = OpenAI(\n", + ")\n", + "\n", + "\n", + "text = \"\"\"\n", + "foot\n", + "\"\"\"\n", + "# Create audios for each versions (three was set as default previously.)\n", + "\n", + "for w in text.split(\",\"):\n", + " for v in [\"alloy\", \"nova\"]:\n", + " # alloy, echo, fable, onyx, nova, and shimmer, the last two of which are femail voices.\n", + " \n", + " speech_file_path = f\"{w.strip()}-us-{\"male\" if v == \"alloy\" else \"female\"}.mp3\"\n", + " \n", + " rspd_audio = client.audio.speech.create(\n", + " model=\"tts-1\",\n", + " voice=v,\n", + " input=text\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": "a3c6184a-430f-491e-ad78-2f6e4fd36a54", + "metadata": {}, "outputs": [], "source": [] } diff --git a/1000-hours/sounds-of-american-english/2.2.3-td.md b/1000-hours/sounds-of-american-english/2.2.3-td.md index 1d01ccf0..cb46df39 100644 --- a/1000-hours/sounds-of-american-english/2.2.3-td.md +++ b/1000-hours/sounds-of-american-english/2.2.3-td.md @@ -22,15 +22,21 @@ Additionally, just as the p and bi following t/d is similar to i in English phonetic notation. Meanwhile, i after z/c/s is pronounced as ɤ. So, according to the habits of their native language, Chinese speakers tend to pronounce t(ɤ) as , and d(ɤ) as . This calls for establishing a new habit. -t 这个音素,也许是美式英语的辅音里最复杂的一个 —— 当然也是最常用的一个。美式英语中,t 的变体(allophone)至少有四个: +t 这个音素,也许是美式英语的辅音里最复杂的一个 —— 当然也是最常用的一个。美式英语中,t 的变体(allophone)至少有以下几种: -The t sound may be the most complex in American English consonant pronunciations — and certainly one of the most frequently used. In American English, at least four variations, or *allophones*, of t exist: +The t sound may be the most complex in American English consonant pronunciations — and certainly one of the most frequently used. In American English, several variations, or *allophones*, of t exist: -> * 正常音 t - 通常是 t 处于重音音节开头的时候才会被正常读出,比如,*take* teɪk; +> * 正常音 t - 通常是 t 处于重音音节开头的时候才会被正常读出,比如,*take* teɪk。 > * Standard t - This is the typical pronunciation, when t begins a stressed syllable, as in *take* teɪk. -> * 弹舌音 - 夹在两个元音中间的 t 会变成接近 d 的弹舌音 ,比如,*water* ˈwɑːt̬ɚ; +> * 阻塞音 t - 处于音节末尾的 t,有时只是舌尖动作完整,却没有发出声音。即,舌尖顶到龈脊之后并没有送出气流。比如,*cat* kæt。IPA 里有一个专门的标记符号(◌̚)用来标注发声器官动作完整却没有发声因而产生停顿(*stop*)的辅音(包括 t/d/p/b/k/g)。比如,*cat* kæt 会被标注成 kæt̚。 +> * Stop t - This refers to when the t is at the end of a syllable, often the tongue completes the movement but no sound is actually made. In other words, the tongue touches the ridge of the alveolar ridge but doesn't release a flow of air. An example of this can be found in the word *cat* kæt. And in IPA, there's a specific notation symbol, represented as ◌̚, used to mark consonants like t/d/p/b/k/g that are fully articulated but not voiced, resulting in a *stop*. For instance, the word *cat*, pronounced as kæt, would be notated as kæt̚. +> * 弹舌音 - 夹在两个元音中间的 t 会变成接近 d 的弹舌音 ,比如,*water* ˈwɑːt̬ɚ。 > * Flaping : When t is situated between two vowels, it tends to be flaping , sounding like d, as in water ˈwɑːt̬ɚ. > * 喉塞音 ʔ - m/n/l 之前的 t 有可能变成喉塞音 ʔ,比如,*utmost* ˈʌʔˌmoʊst, *fitness* ˈfɪʔnəs, *witness* ˈwɪʔnəs, 或 *fruitless* ˈfruːtləs。如果你不知道喉塞音是什么样的,听听 *Uh-Oh!* —— ʌʔoʊ…… > * Glottal Stop ʔ - The t before m/n/l might transform into a glottal stop, as in *utmost* ˈʌʔˌmoʊst, *fitness* ˈfɪʔnəs, *witness* ˈwɪʔnəs, or *fruitless* ˈfruːtləs. If you don't understand what is a *glottal stop*, listen to the phrase, *Uh-Oh!* —— ʌʔoʊ... > * 省略音 - n 之后的 t 可能会被省略掉,比如,*winter* ˈwɪnᵗər —— 当然,若是读成 ˈwɪntər也没错…… -> * Optional - The t following n might be omitted, as in *winter* ˈwɪnᵗər - of course, ˈwɪntəris also correct. \ No newline at end of file +> * Optional - The t following n might be omitted, as in *winter* ˈwɪnᵗər - of course, ˈwɪntəris also correct. + +美式发音中,相对最特殊也需要最多注意和练习的辅音是 t,元音是 ɚ/ɝː([2.1.5](2.1.5-ə))。 + +In American English pronunciation, the consonant t and the vowel sound ɚ/ɝː ([2.1.5](2.1.5-ə)) deserve special attention and practice due to their unique characteristics.