From a56855858501bd091431ae28aa5f906e6574c1a8 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 22 Feb 2026 07:59:15 -0800 Subject: [PATCH] feat: replace speech_to_text with GTCRN ML noise reduction + backend STT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace traditional on-device speech_to_text with a modern pipeline: - Record audio via `record` package with hardware noise suppression - Apply GTCRN neural denoising (sherpa-onnx, ICASSP 2024, 48K params) - Trim silence, POST to backend /voice/transcribe (faster-whisper) Changes: - Add /transcribe endpoint to voice-service for audio file upload - Add SpeechEnhancer wrapper for sherpa-onnx GTCRN model (523KB) - Rewrite chat_page.dart voice input: record → denoise → transcribe - Keep NoiseReducer.trimSilence for silence removal only - Upgrade record to v6.2.0, add sherpa_onnx, path_provider Co-Authored-By: Claude Opus 4.6 --- .../plugins/GeneratedPluginRegistrant.java | 20 +- it0_app/assets/gtcrn_simple.onnx | Bin 0 -> 535638 bytes it0_app/lib/core/audio/noise_reducer.dart | 67 +++++ it0_app/lib/core/audio/speech_enhancer.dart | 97 ++++++ it0_app/lib/core/config/api_endpoints.dart | 3 + .../chat/presentation/pages/chat_page.dart | 160 +++++++--- it0_app/pubspec.lock | 284 ++++++++++++------ it0_app/pubspec.yaml | 21 +- .../voice-service/src/api/session_router.py | 18 +- 9 files changed, 498 insertions(+), 172 deletions(-) create mode 100644 it0_app/assets/gtcrn_simple.onnx create mode 100644 it0_app/lib/core/audio/noise_reducer.dart create mode 100644 it0_app/lib/core/audio/speech_enhancer.dart diff --git a/it0_app/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java b/it0_app/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java index 808967e..717c5fe 100644 --- a/it0_app/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java +++ b/it0_app/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java @@ -15,16 +15,6 @@ import io.flutter.embedding.engine.FlutterEngine; public final class GeneratedPluginRegistrant { private static final String TAG = "GeneratedPluginRegistrant"; public static void registerWith(@NonNull FlutterEngine flutterEngine) { - try { - flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin()); - } catch (Exception e) { - Log.e(TAG, "Error registering plugin firebase_core, io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin", e); - } - try { - flutterEngine.getPlugins().add(new io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin()); - } catch (Exception e) { - Log.e(TAG, "Error registering plugin firebase_messaging, io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin", e); - } try { flutterEngine.getPlugins().add(new com.it_nomads.fluttersecurestorage.FlutterSecureStoragePlugin()); } catch (Exception e) { @@ -45,16 +35,16 @@ public final class GeneratedPluginRegistrant { } catch (Exception e) { Log.e(TAG, "Error registering plugin permission_handler_android, com.baseflow.permissionhandler.PermissionHandlerPlugin", e); } + try { + flutterEngine.getPlugins().add(new com.llfbandit.record.RecordPlugin()); + } catch (Exception e) { + Log.e(TAG, "Error registering plugin record_android, com.llfbandit.record.RecordPlugin", e); + } try { flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin()); } catch (Exception e) { Log.e(TAG, "Error registering plugin shared_preferences_android, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e); } - try { - flutterEngine.getPlugins().add(new com.csdcorp.speech_to_text.SpeechToTextPlugin()); - } catch (Exception e) { - Log.e(TAG, "Error registering plugin speech_to_text, com.csdcorp.speech_to_text.SpeechToTextPlugin", e); - } try { flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin()); } catch (Exception e) { diff --git a/it0_app/assets/gtcrn_simple.onnx b/it0_app/assets/gtcrn_simple.onnx new file mode 100644 index 0000000000000000000000000000000000000000..99012f53b64fb78e8734af9ef9b97a6a41e95649 GIT binary patch literal 535638 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 z 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

sxodI0;427T042Esq6XDf~ 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 z zO8;ORzUq$Q{DOSpCNrYj=8vaW$Aq)JiTMzIyA;JgYNAr7EBkjZ3M4O&WRRjsujLG9 zInhtyTo^z0x_yW14}ZooR3xF$X9TzW`hAq_h^5PBXwVq(I!x~{pyG|;Y(1YvR|)OL z^VtG2VW})!GE`^H=HIvug)g{-f3nBv7U8dVUj>t`H;}Z?i&?`VRhXxh0~?n`QkZiZ z-(2K%kvBH8Epp~;@z4ggwl@YsB^R-!zY}n2=K*?Qjyat23S|bRP8i#=6BdbYV_L>W z^wO9t(2VKDRmNxVG2c5_SmsB4E^H-nMsD;`u_+DMyMlXj>@fW_#TLWZc>3vVKBmMg z(*ntLkQ*-z`5RrJMBkb{QCbaV`abMR4x+=$F|`Vv`8b_?<`T6!S&4Nz^i7pxv)>qU zS8I9Ggz8MtG0O!lk-K23o=)CA+sOH3T;&!`Jk0WDW>`mMYOzb&d(fg?o!t!?&AQ%2 zvm*4Gr+elmfUqzN#gidB3_Ff~!3e8a1?~jG&Z{d=|vTP@R zC79595LL6s(dq|l*jFN6JL8rJljJLk`bUGQwQ(Z-_Ph*)3kGW(>+9e`oi?|B(E(2C zVp|Ly^30YqBMqN~77xH+L~z z)EF)7K7rqDZ+fNGmuWLs*mYVA*OYE0UTc5j0*4v3T@q2K-zbOILTzcS-8npZESWCe z|AOmj%%;mVjhXlFcG7dLlov8x&#u$hL#Hu8ap^RL-e z>p+(r@1a3HeV|ol&wVwy!g8AxGMEJnyrzbUYGCV=V|TWBoznq*IgvV z4tlg>of}ov_oAtqs(4{eG*jr~&-oaN+fF^_nq!)9aQ#vvT>EewwtxkJn?AF{w$k_BlEBIjodhuy^SQeijeC}zk~->2i%m`*ZcUJ)`39kQ`6r|QKrXyP-=#^AwE^xXm9{wFn+IC-s+xab6F4kb)Qc=@kB*G?H^$xg4|SJfWrURXDMU99sYbaDRCU%Z!U>0SYg$ zqkTI1%7oEdyLeAWZ7>U#C;^Y|2pV`$mTkM(0S3o;954SFZFtHz#&V_kwN?PFt~Y~4 zlGfB_s}Gwp>o|WpQzy?~?}nZPOV(Hs1Ht2^sQ4Iba_Y}p;@0pElJ^zkwff(vwoRUE z7+B1r)tAGM10!hhU^0g6Nu$N><52ZgKYA&uk*|jmssCL^tlN4Gy0iAd#Hs1zm*;g9 z8RH?af?+jI-j|@Jqza-|#=xAV-=J&MAhsloWEb8{Mx)`!S=Hb)xb0F02_3~);%mg} zV|d!zh;sCQABTC}0_s{dmOk2SL9hLYf`U;in1(?fT#<@k4&D)X_V*rqzC?tHG-#6W z^xN=u$3B+W@I3Bz=K0%KL{yDoho#_)dV&ME0M0%~6 z!lCzAA?1tO12=1|T%)PGw6ZWjQH$BV&*Kb#Y=xc9n$#=70Y+G=!52P`IjKpT`fHb> z?y{+H!BU3$o~^-yt0&;UidHU)+fKr-OR@S1e_-yGLumMSGTfVLhb~<|fs|;_%=}X@ zYUyf-`fEb19K)EI;4AEsO5zp{|x3#oMt+O$DwdYb5<8&Y^?V658%7LPL+JA}if3 zD91)9R2agY*Yxpjc>vR&@PTyC9zb_fecEa91_x?J(%S1U$o#P~!%0{H>n9MUJ}}NE)w^9xDms$FrdNVWQL9}yfxlN&P{uZ zwOQS;b3lVRIlRKjV&PPp`^@dhsO0t)P-c?;4~JPVBa$~G=s86fT%40ng?e>(u{R0Q zHhzSg(T8DHk{qZw*Kpn%1>F0t!?50W3*~`xv?E&hkv`B;A z?Hum*>?AHB`v^B4@se;;QRg<++rpI_TPA(^4=`G z%2K((pVp9`&;}-3y17lI`}p_4^?x`D?$Orad|>LLuv4>-)A~1>-s79-8@3-s5WS4I znr+#9txm8t+(>q?!9{=VH8tLh}E# zP*_^=g%hy@YPT@-Tn?9WpYUi-o~5pRhN+vov!%~!!A6QdzJ&aRjLvBG#x@Z3!w0P6 zwWFwlZ9J71k6>$#4QJX1OUajbe#JB41&p65#-LVTntaAX5U^j_9>j zFa2}bzpb^zY4<_O1q*0@_)S>*=`qP0w@Lw4P8GQ!=7 z?KEhCh3BJbq>3J@dFq4nECC6~l4h$*$|1i)iw<;jVTn{DR)~kw_MMM#PJS00_G%-# za*@n%f(WC)-%Uy#f0qG@$2{j}&C_iD=*@KfLsisJIjX=g2-^Li=V zoZ<`OEBg7r9}#dQyp@*|q4xACME>OSa-%s&Z{&$kvZL|V&@#H*gdcQez9Z5eN^F#W zE7`Y9CYJ3tSY zeg&z`%PD%MaTj$GIP26t%sZk_OLS5p>(5E_S2#f!e}ON*eiK)27Ki7to0z7xGd<~e z9fGG&_EqRbhD|bHQ^*l&GVD0X`go1yR;Dti(TiDCR3v?D{1ek#BgwfY-lY889JHP^ zL%nJ=JS-^%4Q=uN9vxfpJzcSpO)}&^N5@utTT!g7W?RjFjgGDUS80-U4aw))zL%nY z^JA|4*cAorI2juZJ|8bmnhobe1C6%N;-U?@sG2rQ*B%BazjL&{NCvR5;6HAkeWMH8b zte^Xq+crF%lQ}a2BRgsZYN>y@2!k@=`_qTPvS%Dzy_!wzZj8qb$v^Sw$%*Wqp$^Oc zZ4VAte=yJOtyml*!WO*gVIAjwV|ls~f7q}_pZ*8T`l1q5nKY4xMgjXaY6V_s5uw|r zq~rNHjn-nxW>7Di0Ga%SaN1Q{H182(*(DKBdWXY0pLqNtuVsBGP!_h?W`WDCBf>&Q zJ)+zafg3Kb#;=meWQqMvu5*q&R~$CO+Gk1>EHb)5M&_%-{#`~Ss(G29eZp^4eB#30 z9$ZiMUYrguzrV(8-R~H;N*YBpJvs3RU$!r06sd5&MeZfu;;|#ODC77D8TwSTa%(s4oi@8U5e`|^Gd8!+m_@|L8T`Yy&n#H87 z=PG(7o5JBO!|2mxB6MJj6wwqh=IOQCjwFNFNF=UV2RC*M{VksUFnboAa>=$rqGdopUdKzHgedfcm=oExgazP6#6 za_1~*e_H~Hx{?aD$bx`QIMl znqPc|#qJ0v%qz!J>SomE`9ZuOSqg3vUi9UIQ8X4O!i|kKsNhwEk1B-1(BDTuJk|z# zD_h`v^9K6xdkyW*kf6ox>hyeW7@av&g?8;sh8USE{4VbS9C>^gqK60JYfno$cc~0C z&pZOA_T?}!@H?3y{s6iJCZ8~1?Aafh^)r!KorTfrm=Mu7fr3{|jkk9G<^Mlv#-g6-@-*Q8$ z5?q0i67CEef~$O^d}GWxoJl#jjxc;q3z_~a|WxeM?v1sAVEUPOh~`n$eB3zLf~UrR-pWx zdphqpUOc;s_{pYlUI%4BoNXb#WmVj-Kp{yvK9(&m%|pY1L&8>JH3ZvCpi?B%Fe+z0 zOye_9kIc^scmJ?}SMP?i$j+xI8uo;YpRxdMoOEP|zgeRCoDEFzYAHi$9hQ7i2sbNE z2!d_v$cLH}u<5lTjF4VOHm-=rc8wH4f<__^qMBg-ay>Ln$`W2rZ70TjwbOjf2YeAy z59`mDfn>8Z-E{6Lw|<%-c8RWr)<-( zZ*_(YpISnlJ4e%2g)ii)W;k9Xe(*{<8xrHiSpJ?&^vphwI~6FL4V7l&ub+Y2w_ed( zr4h_`dl0p`(gua=O0OKt+RHsWq(Hruk8=4olj%bl5AHm0b&ILUejPf`%%5nvXHXt<2ZH;bAZ^4nx>oKTT0i>L_~Xa1f~8%%w-28QZ#~h#l;&g_gNxkYl^bray&hu;%Y&qe(W3H?1@6#B}qfVbrU7$3Kx6^%9U);AUBPTfm(4yv&5xXbvqRD@;K zAH^kEWo+_=G4!zO1ZMI21#A|q1h>35;KGmdVk7l9i68uYBy$0(CrGjT)-hF*`opfm;3WX32}Ub4FE_B(Ql8`<1H)y8GQRT=^V5*=J(!R9XD0V)%?Z-C@hB_L zJtK^s^a5l`3I$WAbYMJ1lMNcFA$+M9gk2f!jmodIs+H+ zyy?*s`h_cURzV1#va6_k&$stJarJgm?0J$F^@-TSrc35=qXntd&n}LR4eUqiR|-qS zPGgtxQe4hH!=O_RTsS-k*FKA5{^&IB@6xZheDe!J(Sf!n_i*V-7B!oC7tjZ1&a#uc zj^SILIsN&`A(m2OfO%_fK-%r?G;nDU97&nQr(V5LS~U(g-p&)m{uNNJP=URY*5SXq z#jw$PAD!3v0Vd>nz;4mKtnk(yGA*Kw(@~2SOxiSxxehwgEgkW&$h(g7OjBlcwNYqi zw*(IFI7*+MtAX8CXNgJpJi0SV2$}=majsGn{VDKd5&IsY!?UAI*20DkTjoL|I0ev< z9>shOV`-_S9=mc*3lqJ4(7)>}Xw!KZm^6dw?zqoQdh3gVh`sPOXaN3}*}>1HN3cZp z9^UrMWN-dVXJr)^+0EbQ*uCV9T%J@QecSwreg7dOMM^IruVN){fh)&VJimF);sWrS zP=dd{X0oZ}`^Xx}JK&ano}Mo9<%{4I)GTB)-Kwz`W9uTQm-&$z!_cEt@7xIbJNE|= zn^#2U%M9vu)|@TbwTar`X;xis4u7{K(16N#b|<@r=JqbZRkP=^^T#ftK0E0fm4IKK__#@|{@>QbVj zUUu|=hCh?2%@gRa(xp9@6sf9ND&;15L$Sj?Dn8hZWs)bD)7aIt!sh7DXxbXVWQH$AYgZ2zSEoqsK8VF> zaS2r30GVwMFH1hnC-e0Vkv%=i^u#?|wthKJavo?!pU=5iWz3rjcPCp%Wi5wSJ5_1D znHX~$;my7Mv4m|r8pw^;OogJMUAQ2Phdz|dWheAbaI3pI@w~eltE`xe!tO$0`I1}Q z$+I5B^Kl=UwB3{L-lYoFo0g+mSUlEU5~K0%qP!?hp1JC(&_fGrc#OwA2pyQfI!v30 z&P`eJCP1AAw>Y8HOf9NmUWtwAY1D51bBsP4OfByGDT4|=#D&d&VGF?hK(La%{+t2 z+I(H+YxIwQPi^pmuLO5G#SD91Ulopx_)K0GL_)(gYy5Y5G_}mCr7u6`qrS2qEvUZ4 z7cy0uY~4gwyX_37XL>R1o$Z|6>Hz$k-UIg)-gDP?pM=QP6X>RI&pt>ERx=E#Cd57JhC&G6K_52B<_V{)hpz2c|F z))`9Bv=t-S#vD&pxZ9pB>({}IoCkDdQy+|Qm`%UF+CsONjicX=@57TGNX_kH*j!qO zEB$NOs$JGp^5#V{IsF&zE#uR!x|40LuA9#MvyY&|^dG3x|A^bFqya}uCb60o6WOX| z$MMF)IPm$s3Wpo@az-}$@nq~GG?0z~ufcGLtzJmqDd%!&Zym7V&3UqUyA)~qB!ZoD zRN%5}7`B_Iz^a5Byg{_UIw5c;tnFG(oAz#EJLZ2w?HPp5l{m&~ZwcwsIgcq5S7Qrh zvmsc05XMfCq&8z;;^h)Qx-(Ztcq!{OoVHP~b({|L@~QP`zwWW1<#sM!KfZ}o?J!}T z780QQd~c%6L37Gm3h`N zQ%fb9Y%()L_J3(wlOtHDrPq|ETzHzv!!_1an$xTe&&Tu!-(d?iS1ewy%j@?4e(w8y zpXYh+`@7a&?!${OzVkz_|5Hl8{M5_$xb6Ed-uat9_3~M7@sO+E`Qm4P&#(RdZ@Th# ze)$uw-SU!ezIfF2|2N80|HIQSe&LP2@A6MS@{6zkjXW>8c)}lhmurvx$5-yW_m_SC zwdY;`XPm#~%is3uzxly$y?Dmwy#3{uKj$kiKI~Ed?Bb2@^McF&_0EsJ_@5s1xpzM2 z?LX_#^uW`Vzww;MUwz1L zJo)mAp76h4{@Bz1_G6#>wm*O88@=%d-uZX$e~)XQ^4b691;6y1>)-2Jy~DLH|A#+v z@t8Z_;p+E%$LZqFfAe#$-TW8+mlyoNM}66yfA16D;_8dv?$+yn<@hfzf9n0O{|i}v z<9T}@Ax;qRFfn`aQnr^4-7w`H%hCH+;iu_y5S}Ui{_j|A@g`z1{Qge87V~=kosF@TFHj`t(;W zzw&Lb|8ehq|G~wFz1M>-zw_#kUH`W#yyvwy`Sp*u`2G)g{FQ(4pr_vXzk0{dy1epM-+%F(r@!#xxgT)Lwa@*R*Z))E@AK(*e#zJU{flQl?%!Sf zmCyV9%U}DcpS<$9-}_IlJo$ru`Obgzf-ijRV?X1g-u-X?lP|dXN#FG5SAYHfpL+E_ zf6SX-yVrZ(bnVUF_#Rh(@#DVX@@GHpYc4qR0Nvf8b58ecy*Z z?&9I^_#JmXGf=B$JYtMVpgD>CwyMOB9bMO0M7k}x8UV8a@|M4$f{};af%ZuBu|A!U- z-ABLS_5Yyfy{?_!?lbTFQ?Gx&tB-rh^?x;2{n7EGA9npes&LC+f7_3^{@?h#`O4cr z;XYU2{kLnjPhGtANB+XKd%pkmzq{fsKJN0zzv@k| zKH;nW+zYc{`Hx4HUhzxqX2fAHV_(#4Ce|K}v`@sK}p@y*Zvj*FlB_uqEq zjX&_quH5HGe&+fgM7+zjXa4Yiy8IJw^p#hh`m|rY{Leq~d3XNAqyO{ekN&;yzV?N0 z^O9@-*B^YswQv9BKYV%R9$#?rD?fd@_O92zo(KN<>wl^HR-beEjZgco%ddIh-@o|q zo1by@Pu}-_7temndtd#IpMCL_Cw$468z0Y6xk!vsfhzDQ$(y#uC%fI~-fA#X?p7&K( z-sUBL^YZeaKknMkf7)%AAO1lfba}tueE(~||30V7uldctcKL;G`_jw5^`jqp^|{ad zv5OzR=X0;T%iDbB<->pOlP^B{BR~4u&Hw6YmskGd2VFk->bG6I-A}*&)gSuCmtH*J zKDS@I@GpPx<=1`S=Ux5stKWC=lCS^z>;Hb(*T4L+KlUH){HFK&i&uW(pS<)1AOEEL zUi+s%{fLXV{*yOfzSH&JZolaFeZ%D&{nLMN`JsRJ!B>CaU)*-_q4)l&%OCx&ufF)m z`+nfXpZ)H8{D1tx@WZbEUB{pC@H-!K`!_u6p0~cot>1g|EB=2U9)114I`XV%-SeiK zo^|#3kKLY!^AmWTdjcibH+MIm!1)~9%?EX!c0)gb^EtSozuxoB-OVR(J_mR6L7k`F&`;oe z4sPhL_k44A^9h{K!QFgN=V>?e6F8rP8~W=#-`w4N0>Awn{LSaxe)VrY?|Bz@bLn~7 z`3c-GPv9xv`aQSbwfFBj1LuDZ?S}bU&o}aFJb~Z-Yr^&A=l`GbtMLraOJ4h*z;8bX z=ieK>_J5z}J9zb;!1?z^uikSzue$M`z;FLG;riX3e{Xc-eZ}WHx*Jd6x1WRa?~U%p z13OQ-A)mnh-spT5Zpg3sd{cMh3G7+8zU2J-qr36k&Qor@Cvg7#(T(?=p6}>){{+sz zCj9Q7*?Gl{`2^0tCfu0c>-nyJcTZq{O*sEG^Y8BYooC-TPvCqOZk+G(d?&Bj6F8rR z*X;S7SKl~K;CvQtobU2{C$HHPIG=^r?D?Hn-#Aa;d=_q;@A7;nuh|ngpM}@#`JGqa zI8R{D!c8~5$6bH##r6Mv*7=|3ym7wf^PSv{Cvg4W3w-;r@2~IwyUxM0uK#n*=YO{O zZalj4lpF8~?5_>yvv31`$>&?TTTfum!uj_}ck8j8C*6Qg;Qaff8}Lg#-_oo71kS%U zyxNcMyzmBl00Zm=);d^>mh3B0oNaQ^G)yZ!ji6K}95aQ?m04fcheZ|Bv1 z00UhT(uUie!61kUH-wfqY_U;cm9CvZLw|5YF7`ORL-pTH|S4=;M*2VVWU zuYJp_FM8n%FRuUJ=f7v^wfs9iU;f>H0&n`DC*6M6p1*7Fzx)h*;LHA=rSo4y-2G>G zo_S+Efmilx#Q8kjSl{vaZtngQcxC6|{ClRm|NPD~Z>%S9{yo!;^?jc2<~4r;=U*dU z^JjQ|ha2Y!)UOfe-#6Vj-|_iQes@ox&cykzt$%mV@jUy+c>?F(H{Cej<@rut^CwWh zMx1}&^qN20^ELoZ|FVDI#`RCWKECX~sebwk~a z3+L}~y8ZsQ-TQI3ee%W{kP)|-zBx4-#q zH$UzTU%vi5KlWpv_^?Mk>W*8k{{{U!-TpSW-hBP7fA7ob!=L&IPkzc1ANJ_$?|e@y zU+IK*yW`gPG~pF5?coo3^c}a}gFpV(Td#k@@!=oxq>p{#!yoaGJKp2aR~TIJE5Pvr ze`Oc`$cJD5+}ArM-u|##?|J=m-{j?Y_F+%?w2yz%r#$6}4}I5%J>-tJ*f;;r$N${^ z7S|us8~vBZ^w38<^4;#ZizZTEi6y>7nww%Z=?xLY3fkVilAw_dvE z^%r0E(xYy_?bcha&${L2n;&r3D-V6hL;lMvcg=a|!yonV+kfv}*Y%itzHG|%%X!%C z-}x4|-t*RH-}N>8&TshP4}Z5izUH^C)s1_uzMxxckMTao z_y))LhR66u$M}1X@wQ`p<70f2V|>$NyzepI?-<|g7~lLD-N0KOKmWdC{QbxHR>%0( z$9Vr^e4ArD9peLz@qx$qw#WEC9OEB2#rIL3E8#_RvivzPtPJ00UYALF|m zTJV|?f_KI|ADevI#WjE^|RM;_z59pj^p@zKZlm}7kRV|?r}UO7g;2fY4k z;miK#J&y4`kMVKG_+H2O-pBYp$N0X-_S(SkMWLU{D5Qpz+?QNWBlM_{6ok1 zA;sr>M~?B29^*$H;}eeYqmS{A9pfKA#wQ-*#~kC6 zj`2?%;KCi#QE3%mp_N|um3N94mZlL|IYt&j`M!| z-+jI7f7$SWSNN-jcYWBq-tjfBcTBqJb^Uh@uj}{!fMX+^f7N*TgSh?Ccl{OmA|};XQ7>`PSQRy~nK&c-fo0>G6jqPkz!fp7E5YfAD)h z@sSUG_#MysLXX-JyxXG>tOc*?js1?G*8818x!*yQ|5j9D!oA~lFW>6_h|!-=1mEOO zF3SChM!7%fDEB8I<^E)(+@F|~`;(M%f5KAkPhQIXiA=dasVVm-IOYCir`(_Tl>3vQ za(_Zp?oW=&{fSb!KWQrWCs5`7WUAbsSe2gwUe&qh#(f*FS08xwfma`R^?_F(c=dr- zA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R z^?_F(c=dsAAH2Tj-OuZ<>gVml&fh+)Zy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I z>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW_vh`y`u1Uc z`>?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BV zKCEva*0&Gq+lTe-!}|7NefzM!eOTWZ?9l?)!Sl>RZ zZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq zCkOW!`JQ{z)_2}|^}#yx>;0<_)>j{R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr- zA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(_{qUM#yyY2H?4ag^VYWy z>)VI*SM~GuVdrlj*0&Gq+lTe-!}|7NefzM!eOTW?)! zSl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>n8{M82O%i)7E$1diBA&>I3(F z_4(BY>#GmE`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz^f0u`oK>P-ZAcZ8@_4X`HDSl>RZ zZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq z+lTe-!}|7NefzM!eONy^*vH8C+?%$(^VX{m)>R*P^@01my1wdz_0)yw__3gv@_F;Ydu)cj*e^ozkA9nusVSW3szI|BVKCEva*0&Gq+lTe- z!}|7NefzM!eOTW?)!Sl>RZZy(mT59`~9_3gv@$-zEG zzUSVw^_{m~eXy?jz^f0u`oLXJU4Qk#`sxF(KJe-TuRieV1Ft^t>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@RNgcjC)>&Z(8?0=B;lZ*0&Gq z+lTe-!}|7N{Z;+Eec1WihxP5l`u1Uc`>?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj* z-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva)=v)hG4eh4rmgS1_3DFl)dyaE;ME6S zec-OQ?yve_ef5D?A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr- zA9(eFS08xwfma`R^?{!pjAPvMFnrUx_c3pM`>?)!Sl>RZZy(mT59`~9^;h-t_F?C5 zAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW=j;u#b`Nxi@Wn=dD*CtgAlo>I1Jn@ahAvK5+L__g{UmzWTtc54`%o zs}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f1ZWaA&> z?)TxF*1eB;>)VI*?Zf)^VSW3szI|BVKCEva)?d}n+lQUMeOTW?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*lY@PXe9ygU z>pO3~`e0r4fma`R^?_F(c=dr-AGrIi=Tm*KzWTtc54`%os}H>Tz^f0u`oOCXy!yba z54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz)v>zG46gIeuaOZqW3Xx*KZ%zw-4*v zhxP5l`u1Uc`>?)!Sl>RZzp9_N4?BPRu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BV zKCEva*0&Gq+lTe-!}|7NefzM!eOTWVtLF2VQ;P)dyaE z;ME6Sec;sx?s?Snt3Fs?ec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE z;ME6Sec;sxUVY%z2Y#|~k8$_w@J;L9$Gr9J!}|7NefzM!eOTW^x359`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva z*0&Gq+lTe-!}`g=K1ROh-n8|dw_bg)uKK{M54`%os}H>Tz^f0u`oOCX-1DmETYa#; z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yaTHs&$z zejL7O-TRogzI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW?)!Sl>RZ zZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|9fIoQX@_uQMd zzVp_r57t#5c=dr-A9(eFS08xwfma`R^?_F(xaV2VzxrT(^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(_{qjQ#@%njH?4ag^VYWy>)VI*?Zf)^ zVSW3szI|BVKCEva*0&Gq+lTe-!}_cGdHb;Qw-4*vhxP5l`u1Uc`>?)!Sl>RZZy(mT z59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>n8{M82O%i)7E$1diBA&>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1JnaL>EGpX!74)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sx zUVY%z2VQ;P)dzmEv5s-~)9_8}-p9Q4?Zf)^VSW3szI|BVKCEva*0&Gq+lTe-!}|7N zefzM!eOP~0KW`s){`O&g`>?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I z>)VI*?Zf)X!9GU5=iapSowr_nu&(;Rs}H>Tz^f0u`oOCXy!yba54`%os}H>TzI1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TKiN3Pxcg=J zrgiUQ-um`oefzM!eOTW?)!Sl>RZZy(lQ)z909oxgop z-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq+lTe-!}|7N{p4UDBj0mx+WO90 zuRd5;ec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2k!f-@3;D3ef5D?A9(eFS08xw zfma`R^?_F(c=dr-A9(eFS08xwfma`R^?{#`jdA<8eCaK>-hAtAx88E=18%+LwtGMB zO+Wc*PkZKL9`oT(e$q3Z@sy{3@OwY;(GPjZ9nbpGJ+C)y0BkfP_kmtFa--LcUf+KSXZ%EcRBl>2w4axe3WPL-jz9CuPkgRV=);A>U8)e{gs}I~cw$8|nUN?HZ z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%o zs}H>Tz^f0u`oOCXy!yba5B%gn&RFNtG+uq+)d%i6yswcPy>9e+^?_F(c=dr-A9(eF zS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F( zc=dsw9Jm?l+?mF!54`%os}J0D`dlM7dfn*t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn z@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@RI{|jLv(V>vcbS z8$VlbEZ;ut`t8HI`>6NdKJ5DK!}|7NefzM!eOTW?)! zSl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)X!8%61=hn1!KbKb@ zyuY#5S0AjaKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@ahAvKJe-TuRidTgL#b3`<_eF*8N;weenLSqt=^OUVX5x`oOCX zy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>T zz^f0u`oOCX{N&&rqw~J!&a`zumscOWfAxX8&U%0I%Bv67RUdfufma`R^?_F(c=dr- zA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS0DJv!8%6g z**N@Le_sUOK6rgc@3XIOAJ(@I>+Yl8fBUfOw-4*vhxP5l`u1Uc`>?)!Sl>RZZy(mT z59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&GqCkN{o z`JP+T)~gTJn_uhAE3ZCSSAF2s2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6S zec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;PCkOKwo##E5rma^WtT(^byN+`2 zQ(k?ruKK{M54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%o zs}H>Tz^f0u`oOCXy!yba5B%id9i#KS=gzeC>Vx&>*ZS&%^{%tln^#_au&(;Rs}H>T zz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba z54`%oPY%{GI^Y`59`~9_3gv@_F;Ydu)cj* z-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW$8>(vMAs}J1!)%&~7a_>`K zeXy?jz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz)ud=F*=WXu1#CtKCJKitZyII{al~#KFYTb-p_SyAJ(@I>)VI* z?Zf)^VSW3szI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW?)!Sl>RZZy(lA4%RX9J-4Qx`rv)554`%os}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%oPY&KO zI*-QTo4jtUKJe-TcO5>*>pPZLAFQuF@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ah9UIe5qD^*wi{tydqcuRieV z1NV9L`R0{ZAFQiB@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn z@ahAvKJe-TuRieV1Ft^t>I1Jn@RNgej9%Y!ZQAeAl&o zSl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva z*0&Gq+lTe-!}|7NefzM!eONy^SjWis+?uvteX!m+to7!VS0Ai%J+;32V14z0S08xw zfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr- zA9(eFpB$`Xbl&z{nzmkju)g}hT}QpYdF8IBy!zmMs}H>Tz^f0u`oOCXy!yba54`%o zs}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}KC-U>&3LW*olB z>&EH>uRieV19zRS!|OYiS0AjeKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t z>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJb%+b&Sr_o@>+Aw-4+4KI_|u_3gvD z`>5+PzkK^(zU$sTtZyIIw-4*vhxP5l`u1Uc`>?)!Sl>RZZy(mT59`~9_3gv@_F;Yd zu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|9fIXK72_uQJcUVX6MIji;Nl~*6Et3Gho zTkl_eu)g}hs}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>T zz^f0u`oOCXy!yba5B%id9HaBJ=hC$G>Vx&w2ktuR{mm<{K3L~^Ykl>>`sxF(KJe-T zuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn z@RNgcjLy@ZJJZ&y57t*7c=dt1&iZ`w%3W`H^}+jAA9(eFS08xwfma`R^?_F(c=dr- zA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dsw9GqixUiMs@w!VE> z-}hPHKCEva*4;;4-}YhG`?=O{AIx`O+lTe-!}|7NefzM!eOTW?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ$I}#xe3ex2COEAFOwd zYQ1^o)d%aU54`%o-A{df^}+h;1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TKRFo3=)CN?G;O{5V14z0yN-H)^UA9a)>R+4 z`>FS@K3HFU;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6S zec;sxUVY%z2VQ;PCkNvgotHg#rma^Wtgk-s>H~M3_4($NS0Ai%KefL4V14z0S08xw zfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dsw z9E@Xh9`;-}hPHKCEva*4;;4-}YhGZy(nET<^bqFyDP|AJ(@I>)VI*?Zf)^ zVSW3szI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW=kp z@sE-3xixLQ`e40tQtQntuRd5;ec;sxUVY&1x2~`HV14z0S08xwfma`R^?_F(c=dr- zA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(_{qjUM(1JArD^Nc2kWa3 z+;!CZn^#_au&(;Rs}J1$*5_9rtgk-s>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TKiT-l=sfJXGi|;4V14z0S0A|Rtj{;Ey!v2W z^?|$JdjIN!_0+`n{ z=6f#NhxP5l`u1Uc`>?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI* z?Zf)^VSW3szI|9f+1SU(_uQJcUVX6MIjHsKl~*6Et3L4R1Ft^t>I3&Y>iVk>)>j{R z^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-ANa|} zK1Ta}&!uVW)d%aV58QRs`HaaZy(m(M_u3c zVb^aT*0&Gq+lO^O*Y#~5%=g^359`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^ zVSW3szI|BVKCEva*0&Gq+lTe-!}|7N{bb`FBj0mt+IscDdi%WAn^#_au&(;Rs}H>T zz^f0u`oKM}y1(j!_0I1Jn@ahAvK5);guD|+V zef5D?A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS0DJv z#yv*+dC#3`>(vMAs}H>Tz+Gp3zIo-<2kWX2y!yba58U&r>#IIkUwz=!2VQ;P)dyaE z;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dzmEagWh{-E(c)`u1Uc z-)DXMu)cj*cOP|q+lO7heOTW)VI*?Zf)^VSW3s zzI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTWI1Jn@ahAvK5);o?!WqAef5D?A9(eFS08xwfma`R^?_F(c=dr- zA9(eFS08xwfma`R^?_F(c=dr-A9(eFpKQ!yv|smJnzmkju)g}hT}QpYdF9my>#7gD z`oOCXy!yba58U&t`>Q@!Uwz=!2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6S zec;sxUVY%z2VQ;PCmZt^?bkhbrma^Wtgk-s>H~M3_4($NS0AjaKJe-TuRieV1NS`Z z`l}DtS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma{+ z$;LcJ`*F{;Y3tjE^?jf9?Zf)^VcmVy^=%(^{q|vf`>?)!Sl>RZZy(nET=%zqFyC|E zKCEva*0&Gq+lTe-!}|7NefzM!eOTW?)!Sl>RZZy(lA zHr_GvJ-4Q&Sz^f0u`oOCXy!yba58U&v=Tm*KzWTtc54`%o zs}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba5By}~9i#oY=hC$G>Vx&w z2ktuR{mm<{K3G?M;ME6Sec;sxUVY%z2kv>-{Z}8XuRieV1Ft^t>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV13%e#$7nz9xif9O`e1$afma{6>#WZ=ue|zT zUG;%iA9(eFS08xwfqUL{f7J);s}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz)v>bG1_l?u1#CtKCJKitZyIIw-4*?qpolJu)VI*?Zf)^ zVSW3szI|BtbKU>;!F=D#_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva z*0&Gq+lTe-!}|7N{bXYuBj0mt+IscDdi$`}n^#_au&(;Rs}H>Tz^f0u`oOCXy!yba z58U@r&#(Gmef5D?A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dsw zY^-Cn-}YRZwqAX(zWTsjN4>v!<<$r4st>&Sz^f0u`oOCXy!yba58U@r&!_reef5D? zA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dswY^-Cn-}c;@wqAX( zzWTtc58QRu=bKkveXy?jz^f0u`oOCXy!yba58U@r_g{UmzWTtc54`%os}H>Tz^f0u z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yaTHr6rPPkXLSTi-sc@B6H8AJ(@I>+Ykj zZ~L(8w-4*vhxP5l`u1Uc`>?)!Sl>RZ`?;Ra_Q8DL+xB67`>?)!Sl>RZZy(mT59`~9 z_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)X#yLj5=hn3K>Vx(6S*iJe5tgk-s>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn z@ahAvKJe-TuRieV13%d~$7nz8xioFP`e1$afxC`+fAh+#57t#5c=dr-A9(eFS08xw zfma`R^@01o>iJb4tgk-s>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV z13%d~$7nz8xif9O`e1$afma{6>#WZ=ue|zTUG;%iA9(eFS08xwfma`R^@01o>iJY3 ztgk-s>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV13%d~$7sLoxi)Qm z`>?+6v%Y;;-#)CnkGj6?!>->xtZyIIw-4*vhxP5l`u1Uc`>?)!Sod>1zwLwhzSr%; z`u1Uc`>?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>n9uI82O%C)7GmG z*4sz5-n{bagLTyhUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%c&wBpV2kWa3y!yba54`%o zs}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f1ZWMdqo{j%rMwDszP_0Tz^f0u`oOCX zy!yba54`%os}H>Tz^f1ZWMdqo{j%rIwDszP_0VtLF2VQ;P)dyaE z;ME6Sec;sxUVY%c&w75<2kWa3y!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>T zz^f1ZbZm^kGtKYZZ%NkOvDb~R&**id*S93=TaxuH$@(ii z*kgjv-;(V5Ey?wC0XB+tZzxywI1Jn@ahAvK5);;eH*#a>qf6vA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R z^?_F(c=dr-A9(eFS08xwfma`R^?{#k=oxEYo5rgTy!yba54`%os}H>Tz^f0u`oKL$ z&&9}%UN?HZ`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba54`%oPd4m~wQo)1)dyaE;ME6Sec;sxUVY%z2VQ;P)d%i5du~Q<^t#dO)dyaE z;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec&e>a>m-1 zrt#_nuRieV1Ft^t>I1Jn@ahAvKJe-TuRd_!gXe1GMz0&aUVY%z2VQ;P)dyaE;ME6S zec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;PCmU|Y+IOb$>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@ahBiJ$dd%ZuGj*>(vKdec;sxUVY%z2VQ;P)dyaE;ME6Sec;sx zUVY%z2VQ;P)dyaE;ME6Sec&e>YR1}Ert#_nuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV z1Ft@C-=puv$cTz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba z54`%oPd3bqwQo%0)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sx?tAvV8M)Ex zMz2>Nc=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?{#kh+}l#>s+n- z+1vQp`t8H|_F;Ydu)cj*cO7+o+lO7heOTW?)!Sl>RZZy(mT59`~9_3gv@_F;Ydu)cj*-#)BwAJ$Jc#xe3eH>R!o zxxD(|{i_eW`oOCXy!yb6b^X-`>#7gD`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba z54`%os}H>Tz^f0u`oOCXy!yba54`%os}KC-U>u|KzURWUbw8I^AH09{fma`R^?_F( zxaUyUZ(e!z!Mf@LuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@RN;yjL!S+d(+naTwZTz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yaT zHuf<(@4K%}TlaH$^}+jBA9(eFS08xwfma`R^?`eib^qp-S0AjaKJe-TuRieV1Ft^t z>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV13%fg$LPH8zBO&#&*jwz z?_Yi3)dyaE;ME6Sec;sxUVY%6b3GsP%Bv67RUdfufma`R^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-A9(eFS08xwfma{+$;LcJ=Y993Y3qJ2uReJH>I1Jn@ahAvKJe-T zuRieV1Ft@C-$Ok=^UA9a)>R*P^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eF zS08xwfma`R^?{#kykm6Uci)+|?&tFAgZHmK@ahAvKJe-TuRieV1Ft^t>I1JnaNkos zU-QbV57t#5c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(_{qjP zM(2I^m1*mKF0Vd#|LOy;KJe-TuRieV1Ft^t>I1Jn@ahAvK5*Y-J%97cs}I&yA9(eF zS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dswY@B0s-gn=aw(jTh>Vx;M zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRd_!bA3PNl~*6Et3L4R1Ft^t>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJb%`ag5IMo-5PVw-4)nuJzjo^L_sIVSW3s?tSX> zw-391`>?)!Sl>RZZy(mT59`~9_3gvDeNfM5`>^Y`59`~9_3gv@_F;Ydu)cj*-#)Bw zAJ(@I>)VI*?Zf)^VSW3szI|BVKCGW?jAP_`ZcJORK3H#lt*<^I3&2>iWzpuRd5;ec;sxUVY%z z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dzmE@sH7Y z-hFS{diBA2^J{(e!TRb0uRieV1Ft@C&#A88yz=UUb=3!6ec;sxUVY%z2VQ;P)dyaE z;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2Y#}#kI{MFeQnx$^}%}cYkl>> z`sxF(KJe-TuRieV1NR*3{>&?{K3G?M;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sx zUVY%z2VQ;P)dyaE;ME6Sec;sxezI|o(Rto|YubAC!Fuy+ef7cm>I1Jn@ahAvKJe-T zuRd_kx$fV*^6GI1Jn@ahAvKJe-T_dV3}F|WM( zU|scrS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS0DJv#ydvm zdH0=Z>(vMA&9C*<2kWa3y!yba54`%os}H>Tz^f0u`oMip_592$uRd5;ec;sxUVY%z z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec&e>>lmHq-B+fqS0Ai5zt&eD ztgk-s>I1Jn@ahAvKJe-TuRieV1Ft@C-(x*r^UA9a)>R*P^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-A9(eFS08xwfuC%gV|1Q(-yzzWTtc54`%os}H>T zz^f0u`oOCXy!yba58U@$&)>ZA>VtLF2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE z;ME6Sec;sxezGx+(Rtl-W!n1oVSW3s?&o^{?SuKQZ~L%rUcLYJVb^aT*0&Gq+lTe- z!}|7NefzM!eOR{->iKLRcK!BYefzM!eOTW?)!Sl>RZ zZy(mT59`~9^^=WpjC{|HY3tPo>#Gmk`_=nbAFQuF@ah9M*5_9rtgAlo>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRidTgK><` z>z)hK)~gTJS0A|dtM{)ySYLhM)d%i5)aRR5UVX5x`oOCXy!yba54`%os}H>Tz^f0u z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}KBS;~%5*y8GU=_3DH5)d%kV z>iw$^)>j{R^?_F(xaU;YXI^>r!Mf@LuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t z>I1Jn@ahAvKJe-TuRieV1Ft^t>H|O7*vII+?!Go{z4~B%^?`f8djIN!_0&Sz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%o zs}H>Tz^f0u`oK>%?lC&AyKhZfuRd5`ec;}&-oN@_ef5D?A9(eFS08xwfqTw%f991} zAFQiB@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJb%` zd5q5M?n~3ws}I&!AGr6c_pd%!Uwz=!2VQ;P)dyaE;ME82d#L+2ue|zTUG;%iA9(eF zS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-ANa|}J4WYq_nm3$)d%aV z58V6J`&S>VuRieV1Ft^t>I1Jn@ahAvK5*YtJsVuRieV z1Ft^t>I1Jn@ahAvKJe-T_dVA0Gq1e*U|scrS08xwfma`R^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-ANa|}IY#Go_l;@m)d%aV58V6J`&S>VuRieV1Ft^t>I1Jn@ahAv zKJe-TuRd_!b3I@4%Bv67RUdfufma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr- zANa|}I7a7j&y{KG+lTe-!}|7N-Ou&;+XwSqzp>VDA9nrrVSW3szI|BVKCEva*0&Gq z+lO`gpq|h6Vb^aT*0&Gq+lTe-!}|7NefzM!eOTW?)! zSU=eq$H@2Gn6_Shu)g}hs}J1g)#q0qtgk+BW4(X%!Mf@LuRieV1Ft^t>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ah9UIT*+2Jnp$LZN2(n zef5D?AGpt}&#yjMUwz=7L%qLw<<$r4st>&Sz^f0u`oOCXy!yba54`%os}H>Tz^f0u z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yaTHvTa>kGtI1Jn@ahAvKJe-TuRieV1Ft^t z>I1Jn@ahAvKJe-TuRidTjeU&HTz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%o zs}KBS;~t~)xck<$_3DH5)dyaE;6ATDzxrT(^?_F(c=dr-AGqgS*Kb~V^})L81Ft^t z>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>H|O7n8)Zm?!Gi_ zz4~B%^?_F(xX-K4uRd5`ec;sxUVY%z2VQ;PzK6O$^UA9a)>R*P^?_F(c=dr-A9(eF zS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?{#kykm48ci)+|UVX5>`oOCX+~?Kj zS0AjeKJe-TuRieV1Ft^t>I3&Z)%}}SUVX5x`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz^f0u`oK>%)-gJdyRS@JuRd5`ec;sx?(^#Ns}I&!A9(eFS08xw zfma`R^?_F(xbLx^k9pTz^f0u`oOCXy!yba54`%os}H>T zz^f0u`oK>%&M`WVyKhWeuRd5`ec;sx?(^#Ns}I&!A9(eFS08xwfma`R^?_F(c=dt% zp6mIUS6+RvuKK{M54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oK>%#xXi? zd#+4d-#)BwAJ(@I>)VHQKiBo`eVFg{?Zf)^VSW3szI|BVKCEva*0&Gq+lO`gpq}6M zVb^aT*0&Gq+lTe-!}|7NefzM!eOTW?)!SU=eq$H@2G zn6_Shu)g}hs}H>Tz+F#WpAM9JpYrO1b=3!6ec;sxUVY%z2VQ;P)dyaE;ME6Sec;sx zUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dzlZFpklA+jC*sdiBBj>I1Jn@ahA1 zJ#~H62kSkDT5n!?^})L81Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-T zuRieV1Ft^t>I1Jn@ahAvKJb%`e~ixC?t9bLs}I&!A9(eFS0A|Rsq3pgSYLhMo>RTQ zdF9my>#7gD`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba5By|fAEWcO``Wbi>Vx&w2VQ;P)d%i+>iVh=)>j{R^?`ei_4($NS0AjaKJe-T zuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV13%fg$LPH6 zzBO&V`e1$afma`R^?|#dy1wdz_0nO9zYu&(;Rs}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz)v>jF*cc!gZAFQuF@ahAvK5*Al*H?Y8zWTtc z54`%os}H>TzI1Jn@ahAvKJe-TuRieV z1Ft^t>I1Jn@RN;ojLzHcE7R7i57t*7c=dr-AGqtO>#IIkUwz=!2VQ;P)dyaE;ME82 zd#w96ue|zTUG;%iA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(_{qjO zM(1t!jcM!E2kWa3y!yba58UI1Jn@ahAvK5*Z2Jsme3RFW+Xt^3 zw+~)7ZXdjE+&*~SxP9>Yj_zY$-#)BwAJ(@I>)VI*?Zf)^VSW3szI|A?59;}BA9nrr zVSW3szI|BVKCEva*0&Gq+lTe-!}|7NefzM!eOTW#7gD`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba z54`%os}H>Tz^f0u`oOCXy!yba54`%os}KC-U>u|KwCBRK_3DH5)dyaE;ME6Sec-OQ zuHSPg_dey-2kWX2y!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX zy!yba54`%os}H>Tz)v>*F*;AX?@e2;K3HFU;ME6Sec;sx?t1I`s}I(DPPN{=^6GTz^f13_15)QAFQuF@ahBioa^(=E3ZCSSAF2s2VQ;P)dyaE;ME6Sec;sx zUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;PCmZt^ou}QGrma^Wtgk-s>I1Jn@ahA1 zy>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn z@ahAvKJe-TuRieV1Ft^tlZ|(b&eQHY)7GmG)>j{R^?_F(c=dt1-n#zkgZ0%1UVY%z z2VQ;PzNfl=^UA9a)>R*P^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xw zfma{+$;LWH=V|wqY3tPo>#GmE`oOCXy!yahZ(V=&!TRb0uRieV1Ft^t>I3&Z*8Q1R zUVX5x`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f1ZWaAv8^R)ZM zwDszP_0)VI*?Zf)^VSW3sZXeYBZy$F3_F;Ydu)cj*-#)Bw zAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq+lTd&jd6_JIDC`WjnxNUec;sxUVY%z z2ksoZ53lc7UVX5>`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u z`oOCXy!yba54`%os}H>Tz)udwF?xN^g=y>62kWa3y!yba54`%os}J1$)cu)PUVX5x z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%o zs}KBS;~%5*vish&_3DH5)dyaE;ME6Sec;sx?tbe2Jg0K+Q(k?ruKK{M54`%os}H>T zz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz)v>zF*+~1uT5L8 zK3HFU;ME6Sec;sxUVY&1r|z%%V7=#9>&+{#K3G?M;ME6Sec;sxUVY%z2VQ;P)dyaE z;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxezI|o(RtZ@YubAC!TRb0uRieV1Ft^t z>H~K_b$`_d>#GmkbFTL{ue|zTUG;%iA9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-A9(eFpKQ!ybY6B}nzmkju)g}hs}H>Tz^f0u`oP^!-Cy;=`sxF( zK5*YdeZG0+)d%aU54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba z54`%oPd45$IxoBLOk1x$SYLhM)dyaE;ME6SecI1Jn@ahAvK5+L__g8(ezWTtc54`%os}J1wSl4e}dG*1%>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^tlZ|tX&dcr_)7GmG)>j{R^?_F( zc=dr-AGrIe`>Q@!Uwz=!2VQ;P)dyaE;J)X&Kl93~57t#5c=dr-A9(eFS08xwfma`R z^?_F(c=dr-A9(eFS08xwfma{+$;LQF=V8y4Y3tjE_3gv@_F;Ydu)cj*-}_kKKCJt> z?tlAWzR%r0tZyIIw-4*vhxP5lx_wahw|&_4+lTe-!}|7NefzM!eOTW?)!Sl>RZZy(lAHpVgXJvXMUS0AjeKJe-TuRieV19wjA`pqkMzva~j z?^}J~)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6S zec;sxezNh8(RnZq-{f^;^?_F(c=dr-A9(eFS0A|N;6A;+V|n$#`sxF(KJe-TuRieV z1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^tlZ}6jUf+Fh z+IscD`sxF(KJe-TuRieV1Ft@C_gnXGUU~Jwy6OY3KJe-TuRieV1Ft^t>I1Jn@ahAv zKJe-TuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV13%f=$LKulzBX;W`e1$afma`R^?_F( zc=dr-AGrIi`}Z8ny-#`d!Mf@LuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn z@ahAvKJe-TuRieV1Ft^tlZ|_f&cp6o)7GmG)>j{R^?_F(c=dr-A9(eFyWhJ1>Vx&3 zbFDY8y!v2W^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F( zc=dswY|LYH9(G@vwqAX(zWTtc54`%os}H>Tz^f13{nq_gAFQuFaNk3{zj@`=2kWX2 zy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yaTHr_Eh54-P7 zTdzJ?Uwz=!2VQ;P)dyaE;ME82e(V0L57t*7c=dt%p6c_>E3ZCSSAF2s2VQ;P)dyaE z;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY#v8|xUIhuv4EtydqcuRieV1Ft^t z>I1Jn@ahA1zjgoB2kWa3y!yba58U@y*JoaN^})L81Ft^t>I1Jn@ahAvKJe-TuRieV z1Ft^t>I1Jn@ahAvKJe-TuRidTjdP67!|of?)~gTJS08xwfma`R^?_F(c=dt1-@5R*P^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr- zA9(eFS0DJv#yCd%eb1F?>)VI*?Zf)^VSW3szI|BV`&i#TtZyII{anvy`(VE7+CHpr zAJ(@I>)VHQ`=G9W`>^Y`59`~9_3gv@_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3s zzI|BVKCGW?jAP_`ZcJORK3HFU;ME6Sec;sx?i|+jn^#_au+HTz^f0u z`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCX{A6Pvqy4_; z!nF13gZ0%1UVY%z2VQ;P)d%i5)cu)P?s=3~AG~k%fma`R^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dswZ0uvS-;KjJdEHoj;ME6Sec;sx zUVY%z2VQ;Po|EU`^&QKr57t*7c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xw zfma`R^?_F(c=dr-A9(eFS0DJv#y&=`@4hx|z4~B%^?_F(c=dr-A9(eFS08xwfqNeH ze9SAaK3G?M;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6S zec;sxezI|o(SF~3YubAC!TRb0uRieV1Ft^t>I1Jn@ahBiJnH#)&gI^xy!v2W^?_F( zc=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dswY|LY{-*;b{ zwqAX(zWTtc54`%os}H>Tz^f0u`oKMpdOp<$>wOQk-n{bagLTyhUVY%z2VQ;P)dyaE z;ME6Sec;sxUVY%z2VQ;P)dyaE;ME6Sec;sxUVY#v8}AtH_uY4I1Jn@ahAvK5);Yo=^3``sxGsJ=Oc0S6+RvuKK{M54`%os}H>Tz^f0u`oOCXy!yba z54`%os}H>Tz^f0u`oOCXy!yaTHr6rP@4K%|TdzJ?Uwz=!2VQ;P)dyaE;ME6Sec+x) zJ)i1>_0Tz^f0u`oKMpdOp<$>#GmE`oOCX z-1l79XI^>r!Mf@LuRieV1Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t>I1Jn@ah9U*%-%Y zKkvCRZGHQ&zI|BVKCEva*0&GqdmroDhxP5l`u1Vn&-MJa59Yh>?Zf)^VSW3sZXeY3 zZ69|1_F;Ydu)cj*-#)BwAJ(@I>)VI*?Zf)^VSW3szI|BVKCEva*0&Gq+lTd&jd6^8 z&y8v8)d%aV54`%os}H>Tz@4+Ye)Gz!57t#5xaU>xUwyE?`oOCXy!yba54`%os}H>T zz^f0u`oOCXy!yba54`%os}H>Tz^f0u`oOCXy!yba5By}~9;5xd=fbr0>Vx&w2VQ;P z)dyaE;ME82In@1`S6+Rv&hx7E)d%aV54`%os}H>Tz^f0u`oOCXy!yba54`%os}H>T zz^f0u`oOCXy!yba54`%os}H>Tz)v>rG1||&?@e2;K3HFU;ME6Sec;sxUVY%z2ktr5 z{hL?rd6icmyl?e^S08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eF zS08xwfma{+$;LfK``I{rlh=*a2VQ;P)dyaE;ME6Sec;sxUVY%6qvz!H9m}f^)>j{R z^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dr-A9(eFS08xwfma`R^?_F(c=dswY}{k? z`tDoP)~gTJS08xwfma`R^?_F(c=dr-A9(eFdtUYY%qy=xSXX`E)dyaE;ME6Sec;sx zUVY%z2VQ;P)dyaE;ME6Sec;sxUVY%z2VQ;P)dyaE;3pgN813iXm!_>(AFQuF@ahAv zKJe-TuRieV1Ft^t>I3(@>iPK|%Dqo{^})L81Ft^t>I1Jn@ahAvKJe-TuRieV1Ft^t z>I1Jn@ahAvKJe-TuRieV1Ft^tlZ|(b_VeyL)7GmG)>j{R^?_F(c=dr-A9(eFS08xw zfqP!{{HhPu`<`mOdF9my>#7gD`oOCXy!yba54`%os}KDD?c{8G>p0E>YWgLnukA!; zoW@BL`?5}&#IY^j_e+0@(i8y#qzLQ;DEx(>B-#=yQ3^>pZod`%WBq68%-uaZyU)&{ z0d9VPn;+oj2l$l4YLDb|%qzko zH$PC``~WvUz|9YE^8?)c05?Ct%@1(%1Dx@)@iRYA-uwV(9<6@jjGG@QXMTX2AK>N( zxcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGJ|%J5Bl#TjhOo%Z50p1Q zz|9YE^8?)c05?Ct%@1(%1Kj)oXS{6u%ny_|KfuioaOT<0Pn>b{1Le#QaPtG)`~WvU zz|9YE^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX-24Eak{Ioge2v!?VUb5aL>~PRdGtf% z(GQVFKSUn;5qb1O~PRdGtf%(GQVFKSUn=5P9@N z<_F4~AK>N(xcLEYet>fwS^J4IZhoMg`2lWzfHR(Ue)9w6%@1(%1Kj)oH$TA54{-AX z-24DHKfuioaPtG)`~WvUz|9YE^8?)c05?Ct%@1(%1Kj)opOTpEk$jEU1!0k!A1H5r zfSVuS<_Ea>0d9VPGY-~2;*6UgC})0vGoDtz`GNB02e|nGZhnB9AK>N(xcLEYet?@F z;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGZhnAINzC?0zQ(*KEOPS$<;@Rp^8?)c z05?Ct%@1(%1DtWP{u5{1{6IOz)5@D4C~tm%n;+oj2e|nGZhnB9AK>N(xcLEYet?@F z;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2l$l4Y>(t?%xl6TH$PC``~WvUz|9YE^8?)c z05?Ct%@1(K(Z+{3N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VP zn;+oj2e|nGZhnB9AK>N(xcLD-B{AD0`N}ci7x+0x^8?)c05?Ct%@1(%1Kj)oH$TA5 z4{-AXoN;Cx`FT7VH$PC``~WvUz|9YE^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX-24DH zKfuioaPtG)`~WvUz|9ZvDT&!0`FYGs!Xh_6P~Q9iH$TA54{-AX-24DHKfuioaPtG) z`~YV>ZG4F{ZhoMg`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9AK>N(xcLEYet?@F z;N}Oo`2lWzfKN%h_DH_Qydx}f^8@A04{-AX-24DHKfuioaPtG)`~WvUz|9YE#?!`^ zc`{Bt#?23uGe5x14{-AX-24DHKfuioaPtG)`~WvUz|9YE^8?)c05?Ct%@1(%1Kj)o zH$T9qBvyMQUt?Yo7P^5zG)`2lWzfSVuS<_Ea>0d9VPn;+oj2RP$t<7N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2l$l4 zX^-S<%p1ZYH$PC``~WvUz|9YE^8?)c05?Ct%@1(%1Kj)oXFP3u%@33}Kfsx1tDiXI z<_F4|AK>N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGJ|!{QBl#Gw zE5ag=euzB!A@b;l$fF-3kA8?e_9OD>hsdKJB9DHEJo+K>=!eMpZyW#U2jb~>^h4z2 zfz==V5X(nDL>~PRdGtf%(GQVFKSUn=5P9@NN(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+m)60bdyk1?+ai`@J` zdGiC@`~WvUz|9YE^8?)c05?Ct8Alr*;*6UgD93nPdGiD1%@1(%1Kj)oH$TA54{-AX z-24DHKfuioaPtG)`~WvUz|9YE^8?)c05?Ct%@1(%1AI#2wMX(X<}G27n;$4|et?@F z;N}Oo`2lWzfSVuS<_Ea>0nRwv_z`EE@iuOLpkDI>-24DHKfuioaPtG)`~WvUz|9YE z^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX-24Eal6dWreB>DL3;dj;`2lWzfSVuS<_Ea> z0d9VPn;+oj2e|nGZhn9>4~#QEk4NL?2g;it;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj z2e|nGZhnB9AK>N(xcLEYet?@F;N}PTl*DU~{5<9zVUe33C~tm%n;+oj2e|nGZhnB9 zAK>N(xcLEYet?@F;EcD8KXJy*50o=Mz|9YE^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX z-24DHKfuioaPtG)`~WvUz^5cudn6xYUJ(|#`GNB02e|nGZhnB9AK>N(xcLEYet?@F z;N}Oo`2o&&+xRn&#;M1+`GIog2e|nGZhnB9AK>N(xcLEYet?@F;N}Oo`2lWzfSVuS z<_Ea>0d9VPn;+m)5~n?qk1=lui`@J`dGiC@`~WvUz|9YE^8?)c05?Ct%@1(%1Kj)o zXS{9v%@34ko~=A_#?23uGe5x14{-AX-24DHKfuioaPtG)`~WvUz|9YE^8?)c05?Ct z%@1(%1AIziv`6wSURQ)g9{mt`^h4y)50OVdL>~PRdF)5z(GQVFKSUn=5P9@N-KM>EjkOx*i`XQE&euzB!A@b;l$fF-3kA8?e`XTb@hsdKJB9DHEJo+K> z=!eLoA0m%_h&=is^5}=irzA#ugvaZKu*l61ls7-X%@1(%1Kj)o=Q^Z+@V>`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9AK>N(xcLEY zet?@F;N}Oo`2jv9vDzc~7OxA!A~!!!-uwVJKfuioaPtG)`~YVhtbfEAH$PC$`~WvU zz|9YE=EK@&exSVh0d9VPn;+oj2e|nGZhnB9AK>N(xcLEYet?@F;N}Oo`2lWzfSVuS z<_Ea>0X`+M+9UZE^PaHC%@33}KfuioaPtG)`~WvUz|9YE#>x6moN@C5<;)Lo^8=ju zu=ATAC~tm%n;+oj2e|nGZhnB9AK>N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VP zPf4uyNWR6qCMN(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+m)601Fu zZ!vEPi`@J`dGiC@`~WvUz|9YE^8?)c05?Ct%@1(K*~X7J0d9VPGY>Yt#2IHkjGG^**ZcrCKfuioaPtG) z`~WvUz|9YE^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX-24Eal34ALeB&7K3;dj;`2lWz zfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9AK=Ur^T5yJ(YX16^5zG)`2lWzfSVuS<_Ea> z0d9VPn;+oj2e|nGZhnB9AK>N(xcLEYet?@F;N}PTl*DR}{5<9rVUe33C~tm%n;+oj z2e|nGZhnB9AK>N(xcLEYet?@F;N}N7^I`KtoN@C5<;)Lo^8?)c05?Ct%@1(%1Kj)o zH$TA54{-AX-24DHKfuioaPtG)`~WvUz^5cmdnDgt-VheK`GNB02e|nGZhnB9AK>N( zxcLEYet?@F;N}Oo`2lWzfHNO9Kg_dn>M?G9pq%*uZhnB9AK>N(xcLEYet?@F;N}Oo z`2lWzfSVuS<_Ea>0d9VPn;+m)5~DqmPw~1UEb{1w$fF-3kA8?e`XTb@hsa|;B9DHE zJo+K>=!eLoA0m%_h&=is^5}=i`EQ#)^1yiX1NAYk(GQVFKSUn=5P9@N~PR`IN+HkMMZi5Ei-lf%4`DxcLEYet?@F z;N-EjpE%>@2g;cr;N}Oo`2lWzfSVuS%$N1g{6Km01Kj)oH$TA54{-AX-24DHKfuio zaPtG)`~WvUz|9YE^8?)c05?Ct%@6P?iPIj*r+8fu7P^5zG)`2lWzfSVuS<_9?A zVErS`xcPx{<_Ea>0d9VPn;+oJm$l#gKzZ{6-24DHKfuioaPtG)`~WvUz|9YE^8?)c z05?Ct%@1(%1Kj)oH$TA55AZ38(;msEnD>N5ZhoM=`2lWzfSVuS<_Ea>0d9VPGfvij z;*6UgC})0vn;+oj2RQR(?K3}6-uwVJKfuioaPtG)`~WvUz|9YE^8?)c05?Ct%@1(% z1Kj)oH$TA54{-AXd`jZ9NAfA=HDQsPA1H5rfSVuS<_Ea>0d9VPn;+oj2RP$s<3pTr z^8@9~4{-AXocXfzn;$4|et?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9 zAK>N(xcLD-C2`s#`4sb(u*l61ls7-X%@1(%1Kj)oH$TA54{-AX-24D%oNfGwGj4vM zocRIHd|CbG2g;it;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9AK>N(xcLEY zet=I&oc2gQ#k?dea`OY_%@1(%1Kj)oH$TA54{-AX-24DHKfuioaOT0rmpJ3*2g)&D zR^I$TdGiC@`~WvUz|9YE^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX-24DHKfuio@F|JY z9?7SecZ5Z5exSVh0d9VPn;+oj2e|nGZhnB9AK>N(xcLEYetN(xcLEYet?@F;N}Oo`2lWzfSVuS%p>!}&*Ra!`GNB02e|nG zZhnB9AK>N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+m)5~n@#^O!e;MQ(ne zy!iocet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2RQR(^GBR<^8@9~4{-AX-24DH zKfuioaPtG)`~WvUz|9YE^8?)c05?Ct%@1(%1Kj)opOP5uk)Oxwim=F|A0m%_h&=is z^5}=iqaPxV{fIpJA@b;l$fF-3kA8?e`XTb@hsdKJB9DHEod34@jea1WagBb6Jo+K> z=!eLoA0m%_h&=is^5}=iqaPxVeuzB!A@b;l$fF-3kA8?e`XTb@hsdWSMtg+E>xQt% z%@33}KfuioaPtG)`~WA9t^LFqH$PC$`~WvUz|9YE^8?)c05?CtnNRD#`GNB02e|nG zZhnB9AK>N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPPf3jSNWR4Dg0RTV50p1Q zz|9YE^8?)c05?Ct83*ehamLLLlrulT%@1(%1Kj)oH$T9cPwSugf%4`DxcLEYet?@F z;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oj2e|nGZhnAINsRVLzQnvIEOPS$<;@Rp^8?)c z05?Ct%@1(%1DtWP{u5{1{6IPL1Kj)oH$TA54{+ww+HZcKy!iocet?@F;N}Oo`2lWz zfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9AK+6Gqdk%@F|P@W-26a!^8?)c05?Ct%@1(% z1Kj)oH$T7`M;jmFjGG@QXMTX2AK>N(IP+=kGe1z?`~WvUz|9YE^8?)c05?Ct%@1(% z1Kj)oH$TA54{-AX-24DHKfuio@F|JW9?6%Ow}eG*exSVh0d9VPn;+oj2e|nGZhnB9 zAK>N(IOA;NN1So<1Le#QaPtG4`Ly$!A1H5rfSVuS<_Ea>0d9VPn;+oj2e|nGZhnB9 zAK>N(xcLEYet?@F;N}PTl*DL{0d9VPn;+oj2e|nGZhnB9AK>N(xcLEY zet?@F;N}Oo`2jv9G1?>f67!C*$juLwH$TA54{-AX-24DHKfuioaPtG)`~WvUz|9YE z=E=sNIOFCA$}yi--uys$^8?)c05?Ct%@1(%1Kj)oH$TA54{-AX-24DHKfuioaPtG) z`~WvUz^5cedn8|CUJ(|#`GNB02e|nGZhnB9AK>N(xcLEYet?@F;N}Oo`2lWzfHRLa zKg1blK8>3nsMq`eH$TA54{-AX-24DHKfuioaPtG)`~WvUz|9YE^8?)c05?Ct%@6P? ziP0X(7mfkHz|T3FAK>N(xcLEYet?@F;N}Oo`2lWzfSVuS<_Ea>0d9VPn;+oJGxNyL z0d9VPn;+oj2e|nGZhnAI+r;?b zll_-(z53gOCl?oAfAYzvXIBqSpPrq}R_mibOmV>9+y6Uk%aA*%?2G$*sr=q=zuT1m z{ilC9naz*af1vud#P}fR-Sp4P`8a=f-XHG2bnDem-Z%vOeec$9U)s(WAGDzS{4jyd z@$u*HPF{Na@auygPJXbzcktFEHGA^X{(rx?`yVgvzxeqtCzE?mF1|XscY5!^*};z| z@1(G|6D8tS`rrBA;pe}YymozgS`B=ut!^&|fBy5y>kluk&o0~0f0(?T>dbXe=V1=J zn_6~u@jzR4_ru9|OUq84JiETBb$5R~d9!O>C3w)nyT6)zuh+s|xU};8gUR=s8UFL- z>BZI4Cs$`D^UeC;`;)g)r{3K4oAErKPF}ludUo&R^6d1{Ac9e^*LFOJ9o6>m@#&X? zh_1GuP2OzUcIW>6llgY>Tv5ZeTV0!aT|b|+`Tp5oFR#-nhfVJ)>jv#F7gv9Mc6Rn( zY0!?3>Q(-Fa;xdYzdX6PcbY0ao(*y$SK3uP4xWFT;DrajH+lJsv(xJk(4uFMu{-BoGyiyc{l{mIP8LT?srY~QMinoP)>83rQii?q@ZxE@6#CaQXHL!B zE2sYb>Ggwj4K7x3IO)^>?494HPhIf*;2$SHN}2tG-I!BzGybW-dVDo3R*Qr8CO=JO zel#kR%kNsXoV?XcGM-(mmQsr5rM~>rfuz8D#c$4lA*L`tVR$+LNQ zzKChJT+XBr(|=f|bG``e=S016Cq1^S5S!DkK1a({yuM3pHw%keDm9(z#`#~retLRw z|75w2?PRU3wKL91?c6Z~O3W|u|DT@xEnO5z)k6g`1&3*d-{y+H|Loq`AJ0xNPL>;w z|5as%H}jCHyXw#1XW7e}uH|MCf_B-HJlGoNvvvVmjfOM_=6|=&|Cw}bhjg`wXKvyu zja)5i=kHb7E&;2>veM35r89XAUoF;^p#5Zo(I#ZI*i=J*(e?Y`mye%3%yn)kE40vA4R_VH{Px@XK!~>t=?xJsHwOY=@MZcT6?!p~%asz=rS-fPn!^vzKcd~ArTtIZH~-u3 zPS%U)laj36_1}7Sosy&oOXF4Z++Guw#nb1_*XHnXi1Vr+YB z#45J`hBe}N8OEh#OE)gp^=!}T>{vx+NJiSLwE?!`8%y0QjqM7p=GWc2=cjo7BCAEqwp)f0L< zq}y3Mb90$g8o8a<&flxDT_d(h616L@>r7rF(%pU~sJcdM=e0Fw|9rGYZ0D;`=Wfu; zx>MGO?L00~P3T~a*v?}LF^PNUNf8fbHz*=ne>;y`!#vK^my>9CU$$Kw1x*a&E33pd zZ4Jtkj~ssEDzQzwgJF1Xjjj^gWlXAat%OzL_^1||!>g;r@jULvbKCR3TjkE6HSO_W zH;c(aY-^w6d94|fT{FrmQQLpqD!b?OIAVAyl__gh2}_Z~a$UA-`+~Gjs5kNVtEwDu4GKN zuWjdQc9imcIM5}y)Aey&rgF^dy9wn7iaX(JlGEt-`l@(r7zP)s5BvWB?re&F9$p4QeEwm8$RX8v87|V z)2nnNUCvn8xYPM5$8h*^`@GYu^vI&rTw2*JCv-YLtSEuG(j43y9hQjIXwl1ow@OOv zmWWl_rjDz-b>3;eo5s~L-uX23l?8uvS5ND5b-Y1(b~nFm?GH|l>i(6;{H!rW`n6Tv z8m!i}rMYQo*NCR)>;40jt^v6*y(d2Tg;#1t+!=S_rMkH@j&<55mINfWZn^bfD^+5LmRl!tl^Sykb7a)QdUSVQkLq9WrLOLR@Aic2(W{~o zJ-Ue3+rEfPV0D1D^(Is*t&RGq-{}smHag=TZAMQGOG8H|-&7aN`ZVUpT(u@tD*Xm2 z;=0X1iicfdb~UmY-#nKTHv=h_>c&#s45U~hYggN5^xU|__as^qNDhn=-Bi`Mm-}9% zw3Fy&9WUJ+)zn#)=%%X1(1@LzHlr7>y9VqUQJ!+_B)WMXHSQ$3sj6{Tap~DkqMPSd z<7VS(9O`!SEu^>^Ninyw8K^D=dK=@-wziNo@!hVQP4OmuXHo3TW}^v?`^rsvCpW&N z#%A88ZGSDUCZ7CAZ5&&_q_?B@VY!{rJ^7hfsWC_F?V`G&>g@uL2Mc+QWdxf2=W)u> zQdeP}$GVNn@gPSzt8c}QQ=*odiSO;O*oqyeJS~B_D>*oJ`Z(oii7M4qIz2xc`Qbn!fD+(~p%Rbx|Wr^cN`7tgK6#SLog>TJ4ngA}XNIuc`U zX?3th3uJz}x{EH40LyN5o<4t6ofkdtKERwWM&AdOr?+uun}YiZF?M~0G6414&-NvV<$o$jMx%>UypW-9f~Z!zbScbb=PX?(vbd-M4+-9-=A`SMn?nB<1n7u_T` zAD^TO<7VWBNnTdJYH89~TRi%DDW9Nu720cY+~`zVfytMvcyZ+5>ig39a`bgesaRW_ zzFrxQaVb+;Ji0i@t;68p<>--XiL5$!Ik^Aor)~bebi9vR4(`Xg`0}_pzk!%9)4kYm znchW?-?7eDDL;q(&yo3GWm#Q~K2K=^YYkncjncRYy-HcsSEEf*Q)&0Kai{CmVAn$% z>-)$2G3xl#`)R7$Zwx+b-?7eDi~i0d*SedoGV)xdy+Ex1cu)Is_dfm>@_^oVeU=%Acp0Kw=c5H;J$Np7^J=&rUB;!+UByh&dhp;Qw;%^M zpa1n%!+5u{3+&xikJL%x9OlHyt6{uSOF-8qR>Sc_Wr8cKVScDQ%rb&=8>`>+%=5$L zZ~6s+(KkJ*l&zu6$Kkn|dNVR*Z8dzJY-?A;@k7-cCVBi=wFGO6M-NzYndTePvbLme zEQi7<6?fChYPd6r->a0>a9jO4 zD&Dzn2k%2Tb$vD5rhVM=t%lpdGn!m$Gn!q8daL1fRbM$f`R`W4ZTj`K;dqh&-D>Dk z8?A=hba4+o)wMCTwXzy+(=P+vRG|CbrMKzcrVZz?On#b6vwL5}HZNh*7a?)=%&|N( z?p+bP)o?p{lTohrxEc;0&F}Ih)tuw&tKo6=)#$F=cr`puuSUzvVBaRVG^DvVJRV)f zrO}RSD?Y)UJljyWdF4+LFq|8Ox2yJw5F0f<`%9THH-*E8z5?t=7FJ)kfV*&-%t`*>q1^eC)j} znR>&g*qsb_ztESygAPp~vFhL7F4D)sTA*`sQCEtOPd#@h7_NpXszO05RHr{bIv0Vb>)i6cbBdTsSjF(71LxvyVrrK&>f8JQ&=H;`p8m5!P74*i{ zFvZ8!GdD<9!}M4;Cio3kd)l0Zt04#Hf7Ru1F&|yMC3{CInIHE@9{o0{ZhFX{d74s+ z9!9^#OBe5?rwr{c*YLYxM=?K2Y?n!S8?nfL@}Pd|J9ht+%G7L`yLcxVf|t8Vsl&g1 z(9GTL?+kpv?{oh7^x{Eo#KvO}C*OH|Qu&(?z3RGrE6>6gi}VzCxcl18K{wIWGNWf6 z!};qbo7HRlteXVQe_W!y%uvwySvSGINsrUQHMvN8?fUSgKSj|+vn?6_^@whCUaUpO zzsAvv?*4ShPBi)NKlJ~GN|yHS&uqjn`Ew;*SbhVwSfm~CbJZq)ucWK3XSW<+a5vjs)}_tZFgF?>?IxxY zz4qwaj6rYlUnKJmt1s#C+m|OV+-G+Mf>)AZVd(~FCftMqN({{f+c=r{lX literal 0 HcmV?d00001 diff --git a/it0_app/lib/core/audio/noise_reducer.dart b/it0_app/lib/core/audio/noise_reducer.dart new file mode 100644 index 0000000..053cfe3 --- /dev/null +++ b/it0_app/lib/core/audio/noise_reducer.dart @@ -0,0 +1,67 @@ +import 'dart:math'; +import 'dart:typed_data'; + +/// Utility for trimming leading/trailing silence from PCM audio. +/// +/// The heavy-lifting noise reduction is handled by [SpeechEnhancer] (GTCRN). +/// This class provides a lightweight silence trimmer to reduce data sent +/// to the backend STT. +class NoiseReducer { + /// Trim leading and trailing silence from PCM audio. + /// + /// Keeps a [marginMs] buffer around detected speech boundaries. + static Uint8List trimSilence( + Uint8List pcm16Data, { + int sampleRate = 16000, + double silenceThresholdDb = -40, + int marginMs = 200, + }) { + if (pcm16Data.length < 4) return pcm16Data; + + final sampleCount = pcm16Data.length ~/ 2; + final byteData = ByteData.sublistView(pcm16Data); + final frameSize = (sampleRate * 0.020).round(); + final marginSamples = (sampleRate * marginMs / 1000).round(); + + // Convert dB threshold to amplitude + final threshold = 32768 * pow(10, silenceThresholdDb / 20); + + // Find first non-silent frame + int startSample = 0; + bool foundStart = false; + for (int i = 0; i < sampleCount - frameSize; i += frameSize) { + double rms = 0; + final end = min(i + frameSize, sampleCount); + for (int j = i; j < end; j++) { + final s = byteData.getInt16(j * 2, Endian.little).toDouble(); + rms += s * s; + } + rms = sqrt(rms / (end - i)); + if (rms > threshold) { + startSample = max(0, i - marginSamples); + foundStart = true; + break; + } + } + if (!foundStart) return Uint8List(0); + + // Find last non-silent frame + int endSample = sampleCount; + for (int i = sampleCount - frameSize; i >= 0; i -= frameSize) { + double rms = 0; + final end = min(i + frameSize, sampleCount); + for (int j = i; j < end; j++) { + final s = byteData.getInt16(j * 2, Endian.little).toDouble(); + rms += s * s; + } + rms = sqrt(rms / (end - i)); + if (rms > threshold) { + endSample = min(sampleCount, i + frameSize + marginSamples); + break; + } + } + + if (startSample >= endSample) return Uint8List(0); + return Uint8List.sublistView(pcm16Data, startSample * 2, endSample * 2); + } +} diff --git a/it0_app/lib/core/audio/speech_enhancer.dart b/it0_app/lib/core/audio/speech_enhancer.dart new file mode 100644 index 0000000..0def078 --- /dev/null +++ b/it0_app/lib/core/audio/speech_enhancer.dart @@ -0,0 +1,97 @@ +import 'dart:io'; +import 'dart:typed_data'; +import 'package:flutter/services.dart' show rootBundle; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; +import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa; + +/// Wraps sherpa-onnx's GTCRN model for speech enhancement (noise reduction). +/// +/// Uses the GTCRN model (ICASSP 2024, ~48K params, 523KB) which provides +/// lightweight ML-based denoising without over-processing — ideal for +/// preprocessing audio before sending to backend STT (faster-whisper). +/// +/// Usage: +/// final enhancer = SpeechEnhancer(); +/// await enhancer.init(); +/// final denoised = enhancer.enhance(pcm16Bytes); +/// enhancer.dispose(); +class SpeechEnhancer { + static const String _modelAsset = 'assets/gtcrn_simple.onnx'; + + sherpa.OfflineSpeechDenoiser? _denoiser; + bool _initialized = false; + String? _modelPath; + + /// Initialize the GTCRN denoiser. Must be called before [enhance]. + /// Copies the model from Flutter assets to the filesystem on first run. + Future init() async { + if (_initialized) return; + + _modelPath = await _copyAssetToFile(_modelAsset); + + final config = sherpa.OfflineSpeechDenoiserConfig( + model: sherpa.OfflineSpeechDenoiserModelConfig( + gtcrn: sherpa.OfflineSpeechDenoiserGtcrnModelConfig( + model: _modelPath!, + ), + numThreads: 1, + debug: false, + provider: 'cpu', + ), + ); + + _denoiser = sherpa.OfflineSpeechDenoiser(config); + _initialized = true; + } + + /// Denoise PCM 16-bit signed little-endian mono audio at 16 kHz. + /// + /// Returns denoised PCM bytes in the same format. + /// If the enhancer is not initialized, returns the input unchanged. + Uint8List enhance(Uint8List pcm16Bytes) { + if (_denoiser == null || pcm16Bytes.length < 640) return pcm16Bytes; + + // Convert Int16 PCM → Float32 normalized [-1.0, 1.0] + final sampleCount = pcm16Bytes.length ~/ 2; + final float32 = Float32List(sampleCount); + final byteData = ByteData.sublistView(pcm16Bytes); + for (int i = 0; i < sampleCount; i++) { + float32[i] = byteData.getInt16(i * 2, Endian.little) / 32768.0; + } + + // Run GTCRN denoiser + final result = _denoiser!.run(samples: float32, sampleRate: 16000); + + // Convert Float32 → Int16 PCM bytes + final output = Uint8List(result.samples.length * 2); + final outView = ByteData.sublistView(output); + for (int i = 0; i < result.samples.length; i++) { + final val = (result.samples[i] * 32768.0).round().clamp(-32768, 32767); + outView.setInt16(i * 2, val, Endian.little); + } + return output; + } + + /// Release native resources. Must be called when done. + void dispose() { + _denoiser?.free(); + _denoiser = null; + _initialized = false; + } + + /// Copy a Flutter asset to the app support directory (cached). + static Future _copyAssetToFile(String assetPath) async { + final dir = await getApplicationSupportDirectory(); + final target = p.join(dir.path, p.basename(assetPath)); + final file = File(target); + + if (!await file.exists()) { + final data = await rootBundle.load(assetPath); + await file.writeAsBytes( + data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes), + ); + } + return target; + } +} diff --git a/it0_app/lib/core/config/api_endpoints.dart b/it0_app/lib/core/config/api_endpoints.dart index bd2e038..3fd8bca 100644 --- a/it0_app/lib/core/config/api_endpoints.dart +++ b/it0_app/lib/core/config/api_endpoints.dart @@ -38,6 +38,9 @@ class ApiEndpoints { static const String contacts = '$comm/contacts'; static const String messages = '$comm/messages'; + // Voice + static const String transcribe = '$voice/transcribe'; + // WebSocket static const String wsTerminal = '/ws/terminal'; } diff --git a/it0_app/lib/features/chat/presentation/pages/chat_page.dart b/it0_app/lib/features/chat/presentation/pages/chat_page.dart index 29da58b..47894cf 100644 --- a/it0_app/lib/features/chat/presentation/pages/chat_page.dart +++ b/it0_app/lib/features/chat/presentation/pages/chat_page.dart @@ -1,7 +1,11 @@ import 'dart:async'; +import 'dart:typed_data'; +import 'package:dio/dio.dart' show FormData, MultipartFile; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:speech_to_text/speech_to_text.dart' as stt; +import 'package:record/record.dart'; +import '../../../../core/audio/noise_reducer.dart'; +import '../../../../core/audio/speech_enhancer.dart'; import '../../../../core/config/api_endpoints.dart'; import '../../../../core/network/dio_client.dart'; import '../../../../core/network/websocket_client.dart'; @@ -207,59 +211,101 @@ class _ChatPageState extends ConsumerState with SingleTickerProviderSt final _messageController = TextEditingController(); final _scrollController = ScrollController(); - // -- Voice input (TODO 40) ------------------------------------------------ - late final stt.SpeechToText _speech; - bool _speechAvailable = false; + // -- Voice input (record + GTCRN denoise + backend STT) ------------------- + late final AudioRecorder _recorder; + final SpeechEnhancer _enhancer = SpeechEnhancer(); bool _isListening = false; + bool _isTranscribing = false; + List> _audioChunks = []; + StreamSubscription>? _audioSubscription; late AnimationController _micPulseController; @override void initState() { super.initState(); - _speech = stt.SpeechToText(); - _initSpeech(); + _recorder = AudioRecorder(); + _enhancer.init(); // load GTCRN model in background _micPulseController = AnimationController( vsync: this, duration: const Duration(milliseconds: 800), ); } - Future _initSpeech() async { - _speechAvailable = await _speech.initialize( - onStatus: (status) { - if (status == 'done' || status == 'notListening') { - _stopListening(autoSubmit: true); - } - }, - onError: (_) => _stopListening(), - ); - if (mounted) setState(() {}); - } + Future _startListening() async { + final hasPermission = await _recorder.hasPermission(); + if (!hasPermission || !mounted) return; - void _startListening() { - if (!_speechAvailable) return; setState(() => _isListening = true); _micPulseController.repeat(reverse: true); - _speech.listen( - onResult: (result) { - _messageController.text = result.recognizedWords; - if (result.finalResult) { - _stopListening(autoSubmit: true); - } - }, - listenFor: const Duration(seconds: 30), - pauseFor: const Duration(seconds: 3), - ); + _audioChunks = []; + + // Stream raw PCM 16kHz mono with platform noise suppression + AGC + final stream = await _recorder.startStream(const RecordConfig( + encoder: AudioEncoder.pcm16bits, + sampleRate: 16000, + numChannels: 1, + noiseSuppress: true, + autoGain: true, + )); + + _audioSubscription = stream.listen((data) { + _audioChunks.add(data); + }); } - void _stopListening({bool autoSubmit = false}) { - _speech.stop(); + Future _stopListening({bool autoSubmit = false}) async { + if (!_isListening) return; + + // Stop recording and stream + await _recorder.stop(); + await _audioSubscription?.cancel(); + _audioSubscription = null; _micPulseController.stop(); _micPulseController.reset(); + if (!mounted) return; setState(() => _isListening = false); - if (autoSubmit && _messageController.text.trim().isNotEmpty) { - _send(); + + if (!autoSubmit || _audioChunks.isEmpty) return; + + // Transcribe via backend + setState(() => _isTranscribing = true); + + try { + // Combine recorded chunks into a single PCM buffer + final allBytes = _audioChunks.expand((c) => c).toList(); + final pcmData = Uint8List.fromList(allBytes); + _audioChunks = []; + + // GTCRN ML denoise (light) + trim leading/trailing silence + final denoised = _enhancer.enhance(pcmData); + final trimmed = NoiseReducer.trimSilence(denoised); + + if (trimmed.isEmpty) { + if (mounted) setState(() => _isTranscribing = false); + return; + } + + // POST to backend /voice/transcribe + final dio = ref.read(dioClientProvider); + final formData = FormData.fromMap({ + 'audio': MultipartFile.fromBytes(trimmed, filename: 'audio.pcm'), + }); + final response = await dio.post( + ApiEndpoints.transcribe, + data: formData, + ); + + final text = + (response.data as Map)['text'] as String? ?? ''; + if (text.isNotEmpty && mounted) { + _messageController.text = text; + _send(); + } + } catch (_) { + // Voice failed silently – user can still type + } finally { + if (mounted) setState(() => _isTranscribing = false); } } @@ -383,28 +429,42 @@ class _ChatPageState extends ConsumerState with SingleTickerProviderSt ), ), - // Voice listening indicator - if (_isListening) + // Voice listening / transcribing indicator + if (_isListening || _isTranscribing) Container( padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), - color: AppColors.error.withOpacity(0.1), + color: (_isListening ? AppColors.error : AppColors.primary) + .withOpacity(0.1), child: Row( children: [ - AnimatedBuilder( - animation: _micPulseController, - builder: (context, _) => Icon( - Icons.mic, - color: AppColors.error, - size: 20 + (_micPulseController.value * 4), + if (_isListening) + AnimatedBuilder( + animation: _micPulseController, + builder: (context, _) => Icon( + Icons.mic, + color: AppColors.error, + size: 20 + (_micPulseController.value * 4), + ), + ) + else + const SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator(strokeWidth: 2), + ), + const SizedBox(width: 8), + Text( + _isListening ? 'Listening...' : 'Transcribing...', + style: TextStyle( + color: _isListening ? AppColors.error : AppColors.primary, ), ), - const SizedBox(width: 8), - const Text('Listening...', style: TextStyle(color: AppColors.error)), const Spacer(), - TextButton( - onPressed: () => _stopListening(), - child: const Text('Cancel'), - ), + if (_isListening) + TextButton( + onPressed: () => _stopListening(), + child: const Text('Cancel'), + ), ], ), ), @@ -459,7 +519,9 @@ class _ChatPageState extends ConsumerState with SingleTickerProviderSt _messageController.dispose(); _scrollController.dispose(); _micPulseController.dispose(); - _speech.stop(); + _audioSubscription?.cancel(); + _recorder.dispose(); + _enhancer.dispose(); super.dispose(); } } diff --git a/it0_app/pubspec.lock b/it0_app/pubspec.lock index 43276a1..748765b 100644 --- a/it0_app/pubspec.lock +++ b/it0_app/pubspec.lock @@ -9,14 +9,6 @@ packages: url: "https://pub.dev" source: hosted version: "85.0.0" - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" - url: "https://pub.dev" - source: hosted - version: "1.3.35" analyzer: dependency: transitive description: @@ -177,6 +169,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.7" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" custom_lint_core: dependency: transitive description: @@ -249,54 +249,6 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" - url: "https://pub.dev" - source: hosted - version: "2.32.0" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: "8bcfad6d7033f5ea951d15b867622a824b13812178bfec0c779b9d81de011bbb" - url: "https://pub.dev" - source: hosted - version: "5.4.2" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "362e52457ed2b7b180964769c1e04d1e0ea0259fdf7025fdfedd019d4ae2bd88" - url: "https://pub.dev" - source: hosted - version: "2.17.5" - firebase_messaging: - dependency: "direct main" - description: - name: firebase_messaging - sha256: a1662cc95d9750a324ad9df349b873360af6f11414902021f130c68ec02267c4 - url: "https://pub.dev" - source: hosted - version: "14.9.4" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" - url: "https://pub.dev" - source: hosted - version: "4.5.37" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - sha256: "0d34dca01a7b103ed7f20138bffbb28eb0e61a677bf9e78a028a932e2c7322d5" - url: "https://pub.dev" - source: hosted - version: "3.8.7" fixnum: dependency: transitive description: @@ -390,6 +342,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95" + url: "https://pub.dev" + source: hosted + version: "2.2.3" flutter_test: dependency: "direct dev" description: flutter @@ -472,6 +432,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + http: + dependency: transitive + description: + name: http + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" + source: hosted + version: "1.6.0" http_multi_server: dependency: transitive description: @@ -633,15 +601,23 @@ packages: source: hosted version: "2.2.0" path: - dependency: transitive + dependency: "direct main" description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted version: "1.9.1" - path_provider: + path_parsing: dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + path_provider: + dependency: "direct main" description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" @@ -688,14 +664,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" - pedantic: - dependency: transitive - description: - name: pedantic - sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" - url: "https://pub.dev" - source: hosted - version: "1.11.1" permission_handler: dependency: "direct main" description: @@ -744,6 +712,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" + url: "https://pub.dev" + source: hosted + version: "7.0.2" platform: dependency: transitive description: @@ -792,6 +768,70 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.2" + record: + dependency: "direct main" + description: + name: record + sha256: d5b6b334f3ab02460db6544e08583c942dbf23e3504bf1e14fd4cbe3d9409277 + url: "https://pub.dev" + source: hosted + version: "6.2.0" + record_android: + dependency: transitive + description: + name: record_android + sha256: "94783f08403aed33ffb68797bf0715b0812eb852f3c7985644c945faea462ba1" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + record_ios: + dependency: transitive + description: + name: record_ios + sha256: "8df7c136131bd05efc19256af29b2ba6ccc000ccc2c80d4b6b6d7a8d21a3b5a9" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + record_linux: + dependency: transitive + description: + name: record_linux + sha256: c31a35cc158cd666fc6395f7f56fc054f31685571684be6b97670a27649ce5c7 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + record_macos: + dependency: transitive + description: + name: record_macos + sha256: "084902e63fc9c0c224c29203d6c75f0bdf9b6a40536c9d916393c8f4c4256488" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + record_platform_interface: + dependency: transitive + description: + name: record_platform_interface + sha256: "8a81dbc4e14e1272a285bbfef6c9136d070a47d9b0d1f40aa6193516253ee2f6" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + record_web: + dependency: transitive + description: + name: record_web + sha256: "7e9846981c1f2d111d86f0ae3309071f5bba8b624d1c977316706f08fc31d16d" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + record_windows: + dependency: transitive + description: + name: record_windows + sha256: "223258060a1d25c62bae18282c16783f28581ec19401d17e56b5205b9f039d78" + url: "https://pub.dev" + source: hosted + version: "1.0.7" riverpod: dependency: transitive description: @@ -896,6 +936,54 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + sherpa_onnx: + dependency: "direct main" + description: + name: sherpa_onnx + sha256: "6f14669c62bb0812c3f99adcd4cae8677037106618cc51ce09d285a4c5db828a" + url: "https://pub.dev" + source: hosted + version: "1.12.25" + sherpa_onnx_android: + dependency: transitive + description: + name: sherpa_onnx_android + sha256: f9881cd42347eac0619298186d86f286ce6b74947a27b8506f6729496ebccc5d + url: "https://pub.dev" + source: hosted + version: "1.12.25" + sherpa_onnx_ios: + dependency: transitive + description: + name: sherpa_onnx_ios + sha256: a9c916340eda3bb24ce4598810fc141469f3d9afd0290390d1cc749044ae919d + url: "https://pub.dev" + source: hosted + version: "1.12.25" + sherpa_onnx_linux: + dependency: transitive + description: + name: sherpa_onnx_linux + sha256: "82d4664ab6df87a76c12987cb420cbe112133d710f9b2e30c4e83d7ad1e93fb0" + url: "https://pub.dev" + source: hosted + version: "1.12.25" + sherpa_onnx_macos: + dependency: transitive + description: + name: sherpa_onnx_macos + sha256: "453fa9a6fdff47d4e8aeef5f9c3ed64327e14769401a16b36213b7a3a3b8aae0" + url: "https://pub.dev" + source: hosted + version: "1.12.25" + sherpa_onnx_windows: + dependency: transitive + description: + name: sherpa_onnx_windows + sha256: c70446773ddab00e8f78b415fe1a580723d49c1f78ad7ce751183620b35c1ffd + url: "https://pub.dev" + source: hosted + version: "1.12.25" sky_engine: dependency: transitive description: flutter @@ -925,30 +1013,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.2" - speech_to_text: - dependency: "direct main" - description: - name: speech_to_text - sha256: "57fef1d41bdebe298e84842c89bb4ac91f31cdbec7830c8cb1fc6b91d03abd42" - url: "https://pub.dev" - source: hosted - version: "6.6.0" - speech_to_text_macos: - dependency: transitive - description: - name: speech_to_text_macos - sha256: e685750f7542fcaa087a5396ee471e727ec648bf681f4da83c84d086322173f6 - url: "https://pub.dev" - source: hosted - version: "1.1.0" - speech_to_text_platform_interface: - dependency: transitive - description: - name: speech_to_text_platform_interface - sha256: a1935847704e41ee468aad83181ddd2423d0833abe55d769c59afca07adb5114 - url: "https://pub.dev" - source: hosted - version: "2.3.0" stack_trace: dependency: transitive description: @@ -1093,6 +1157,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.5.2" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 + url: "https://pub.dev" + source: hosted + version: "1.1.19" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" + url: "https://pub.dev" + source: hosted + version: "1.1.13" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74" + url: "https://pub.dev" + source: hosted + version: "1.2.0" vector_math: dependency: transitive description: @@ -1121,18 +1209,18 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.1.1" web_socket_channel: dependency: "direct main" description: name: web_socket_channel - sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b url: "https://pub.dev" source: hosted - version: "2.4.5" + version: "2.4.0" win32: dependency: transitive description: @@ -1149,6 +1237,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" + source: hosted + version: "6.6.1" xterm: dependency: "direct main" description: diff --git a/it0_app/pubspec.yaml b/it0_app/pubspec.yaml index 6af598c..2e3ccb4 100644 --- a/it0_app/pubspec.yaml +++ b/it0_app/pubspec.yaml @@ -9,6 +9,7 @@ environment: dependencies: flutter: sdk: flutter + cupertino_icons: ^1.0.8 # State Management flutter_riverpod: ^2.5.0 @@ -36,13 +37,14 @@ dependencies: flutter_markdown: ^0.7.0 flutter_svg: ^2.0.10+1 - # Push Notifications - firebase_core: ^2.27.0 - firebase_messaging: ^14.7.0 - # Voice - speech_to_text: ^6.6.0 + record: ^6.0.0 flutter_tts: ^4.0.0 + sherpa_onnx: ^1.12.25 + + # File paths + path_provider: ^2.1.0 + path: ^1.9.0 # Terminal xterm: ^4.0.0 @@ -70,11 +72,4 @@ flutter: assets: - assets/images/ - assets/icons/ - - assets/animations/ - - fonts: - - family: Roboto - fonts: - - asset: assets/fonts/Roboto-Regular.ttf - - asset: assets/fonts/Roboto-Bold.ttf - weight: 700 + - assets/gtcrn_simple.onnx diff --git a/packages/services/voice-service/src/api/session_router.py b/packages/services/voice-service/src/api/session_router.py index 74cb7b6..8263c34 100644 --- a/packages/services/voice-service/src/api/session_router.py +++ b/packages/services/voice-service/src/api/session_router.py @@ -1,7 +1,8 @@ import asyncio import uuid -from fastapi import APIRouter, WebSocket, WebSocketDisconnect, Request +from fastapi import APIRouter, WebSocket, WebSocketDisconnect, Request, UploadFile, File +from fastapi.responses import JSONResponse from pydantic import BaseModel from typing import Optional @@ -151,3 +152,18 @@ async def voice_websocket(websocket: WebSocket, session_id: str): await websocket.close() except Exception: pass + + +@router.post("/transcribe") +async def transcribe_audio(req: Request, audio: UploadFile = File(...)): + """Transcribe uploaded audio (PCM 16kHz 16-bit mono) to text using Whisper.""" + stt = getattr(req.app.state, "stt", None) + if stt is None or stt._model is None: + return JSONResponse(status_code=503, content={"error": "STT model not loaded"}) + + audio_data = await audio.read() + if len(audio_data) == 0: + return {"text": ""} + + text = await stt.transcribe(audio_data) + return {"text": text.strip()}