From 3c5d7e7cd42bdb19bb70abd2115714512a71f5b3 Mon Sep 17 00:00:00 2001 From: Pranav Joshi Date: Thu, 5 Feb 2026 12:52:30 +0000 Subject: [PATCH 1/3] mute funcitonality in s2s --- __tests__/html2/speechToSpeech/barge.in.html | 13 +- .../basic.sendbox.with.mic.html | 2 + .../basic.sendbox.with.mic.html.snap-1.png | Bin 4126 -> 4764 bytes .../html2/speechToSpeech/csp.recording.html | 8 +- .../html2/speechToSpeech/dtmf.input.html | 7 +- .../speechToSpeech/dtmf.input.html.snap-1.png | Bin 25741 -> 25998 bytes .../speechToSpeech/dtmf.input.html.snap-2.png | Bin 24351 -> 24586 bytes .../html2/speechToSpeech/happy.path.html | 12 +- .../speechToSpeech/happy.path.html.snap-1.png | Bin 9172 -> 9127 bytes .../speechToSpeech/happy.path.html.snap-2.png | Bin 13726 -> 13993 bytes .../html2/speechToSpeech/multiple.turns.html | 12 +- .../multiple.turns.html.snap-1.png | Bin 26857 -> 27104 bytes .../speechToSpeech/mute.functionality.html | 173 ++++++++++++++++++ .../mute.functionality.html.snap-1.png | Bin 0 -> 4811 bytes .../outgoing.audio.interval.html | 8 +- packages/api/src/boot/internal.ts | 1 + packages/api/src/localization/en-US.json | 6 +- .../private/capabilityRegistry.ts | 4 + .../Capabilities/types/Capabilities.ts | 1 + .../private/VoiceRecorderBridge.tsx | 9 +- .../private/useRecorder.spec.tsx | 79 +++++++- .../SpeechToSpeech/private/useRecorder.ts | 114 ++++++++++-- packages/bundle/src/boot/actual/internal.ts | 6 +- packages/core/src/actions/setVoiceState.ts | 2 +- .../src/components/icon/FluentIcon.module.css | 15 +- .../sendBox/DismissToolbarButton.tsx | 38 ++++ .../sendBox/MicrophoneToolbarButton.tsx | 36 +++- .../src/components/sendBox/SendBox.tsx | 8 +- .../sendBox/private/useSpeechStateMessage.ts | 3 + packages/fluent-theme/src/testIds.ts | 1 + 30 files changed, 506 insertions(+), 52 deletions(-) create mode 100644 __tests__/html2/speechToSpeech/mute.functionality.html create mode 100644 __tests__/html2/speechToSpeech/mute.functionality.html.snap-1.png create mode 100644 packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx diff --git a/__tests__/html2/speechToSpeech/barge.in.html b/__tests__/html2/speechToSpeech/barge.in.html index d12f20c51f..43c75264f9 100644 --- a/__tests__/html2/speechToSpeech/barge.in.html +++ b/__tests__/html2/speechToSpeech/barge.in.html @@ -21,7 +21,10 @@ 3. User barges in (server detects) → "Listening..." (user speaking) 4. Server processes → "Processing..." 5. Bot responds with new audio → "Talk to interrupt..." (bot speaking again) - 6. User toggles mic off + 6. User clicks dismiss button to stop voice session + + Note: Mic button toggles between listening/muted states. + Use dismiss button to completely stop the voice session. --> diff --git a/__tests__/html2/speechToSpeech/dtmf.input.html.snap-1.png b/__tests__/html2/speechToSpeech/dtmf.input.html.snap-1.png index c29b07065a0ad478f19cf01784cfe8ca5e5dfdab..93636cfc8ea7780bac0f9dd416117930c5e10aaa 100644 GIT binary patch literal 25998 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 literal 25741 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 diff --git a/__tests__/html2/speechToSpeech/dtmf.input.html.snap-2.png b/__tests__/html2/speechToSpeech/dtmf.input.html.snap-2.png index be9f100b5436ff460d71ebc1826263283cac526a..55a4c1ccad281dae07a0a863fd272923fd684c42 100644 GIT binary patch literal 24586 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 F^&damR?Ywb literal 24351 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 diff --git a/__tests__/html2/speechToSpeech/happy.path.html b/__tests__/html2/speechToSpeech/happy.path.html index e326982a9c..4b1046371a 100644 --- a/__tests__/html2/speechToSpeech/happy.path.html +++ b/__tests__/html2/speechToSpeech/happy.path.html @@ -32,12 +32,18 @@ // Set voice configuration capability to enable microphone button directLine.setCapability('getVoiceConfiguration', { sampleRate: 24000, chunkIntervalMs: 100 }, { emitEvent: false }); + // Enable voice-only mode (hides send button, shows mic + dismiss buttons) + directLine.setCapability('getIsVoiceOnlyMode', true, { emitEvent: false }); render( , document.getElementById('webchat') @@ -152,8 +158,10 @@ expect(botActivityStatus.innerText).toContain('|'); expect(botActivityStatus.innerText).toContain('Just now'); - // WHEN: User stops recording by clicking microphone button again - await host.click(micButton); + // WHEN: User stops voice recording by clicking dismiss button + const dismissButton = document.querySelector(`[data-testid="${testIds.sendBoxDismissButton}"]`); + expect(dismissButton).toBeTruthy(); + await host.click(dismissButton); // THEN: Button should change to not-recording state await pageConditions.became( diff --git a/__tests__/html2/speechToSpeech/happy.path.html.snap-1.png b/__tests__/html2/speechToSpeech/happy.path.html.snap-1.png index f9e16e326a8fa056e0042660c7d4cb3e8401174c..7846167c8dc6a3d44910ddfbfc9cae6f800b1e52 100644 GIT binary patch literal 9127 zcmeHtS5%W-yKN8!6#)UIg{DD}j!}9ENJpB0^dcqn8hS@TQ0YWU=t!~9q!X%wKp;Q_ z1cXow5PC0xP>rDUvK&_#!tPcQ? zIROAyBClT|^~eYM?EnC`0UFARhJiU7Gn9dM{AR!JYE0gte}6!uU;J!E`}S?;`|8!+ zl=ojKE9%e$^1Ut?(Ybc*D$Sj{*L3w(U#vc;`xQbZbX&R@u06}iGKqd;9}sa*QJfgg zktYl9bGtD~T!LIqZUp!A_5uL~IA=g4Jq}QyDhc>ZM+0z)CXZzOxB2gB{0oMEx$v(P z{Huije<>kKa-M-XGSB?Vaw9LBFlOV;m`g$n#=;qpm|5-Bf$8e%>U-U^d)>#`0lYQa z2IOD|LIX{x8zlpDy9Q?fId?dhIhfXMex5QLK|FQix^0)bF5X;^Edxh*rN)0=S;1C& z1jvO^|HYZuf@(v0LPA2G$;Y2Aq}bEZ7(a;RuCA`OdH$$zL1=f24R+tX$#mPnCuwkP zeRFlynU^iz*)ny}s*{d^fx%xQ(S?h;JH%vB@d2%n)YXQ^U%A*SdvmDMaH`Q~UTtT$ zxU~DC`0uN7SXcWGjndI%*vEjtd7PXhD)z0hEQue)|E4Sl4?N~O8tP~cVOEe%9`#wW zi>Fhgpo^Gma%)_-rEj#i=rV{ zmuR3?fCgv$rXtT zPs^(JyOKnz?UBqva-Q&mSG!C&U%@TJ#bncLRik$6lBW=BB2fGn!THZ7wx-N;uI`7P zw9npg;vf)SesH)Cgq&lqym>F_LyZ+LmkU_>uq&yN)NMZwi*=bFL?&kPBKw>#eoHqG6Es4627&+W*pdg>BLy2xa`yH9Fb zUS1xVm|n41Lz(}GgLlzC^sE$>W({)N!;7pS+MOm6lyr?ptbE(%<91v4{Wq#%B1Zj9GG_HFO|L3^~#Q3Pb z^e`g#G#9C8XkQ$k6XNSMMwn!^i)oEGU%Ly!H95>qj7AV`{9{!w4RU_Q@>7Lpp6h(d zu>NYT9Zn{Ef=SZYGMO8y;+Sp;QNC8=PKzg5`Gv{9$hr>r0DgKf&-V$b&PM!yYSnoQw|wmp*L*$5S`)!S>`V_I)$V z1P=`Q9@A#10j*C)X_z#@8Wejg=+h}WVf_zL{Ag?X!sC_GA9+7999FrZ!;{zx22Bvn{mvfbyLas))sF6(`_>p^dkoB|i z7EFEU?n2+Cuu0QOx}R(O6BS7?owH(EmY=`-xsMZ(Foe?4ZGT<+xPlBMj<^Vn_ z#2+nEhM-DsKgSe;x8y=jip$S%a|TrwH;Fs@Ul=+NA!1Jq!)yEcx6Ubk2Q_%Nboe1U z{LO0`fuUV_46N)%0Iu50dw2!C-Xm3l-@}k&$r~)9G{}c!bNdZ#NVvImY~h7 z-BE|6Z1IrZC29dC;pDWMrBfDzU;?M4BX^Yq6M;qeW^WbL*h_0KqJNsoLDwmuv?eU zSbE^zpRRP`TQ;$RL<)!>usk_i-fkDKGPrOo)j2-imOBk?bkfGzc1xUBPqmh_L4;3M zV*@B?Fa3wt?sq@C6;aigBkVr8mDY87WFZ?cKJ75NUFIsk?>2koTE@1d$rnvOpOQ1% zw{Nc>4W{-)j4DflGhF=gZcNt=sRzpTdA7RLugh6h^lZ5wb>3?^8vBJFTR&%^33_{U z(p#`0mFKh*x-U!I%a;$=GHRbH=?&>pV-nP_GkK>k(tdXGO0FdrIqX_kSQEF@pDPiU zpD$ZbB0?`HgH=;iZhd?l6?%7^5X zDMQqD-cEgT)NL%i)DM>^+1@>Z#_cij@0m?lnbta1J+BIf8;Mj{_-@zGgNPXCVFJ|j zaw=O6A2B;^mB`tPIW}_1d>oLcXGH4xWsmfnuI%$40hx zc8;OqLxY1Aitr`Xta)FzrTa;HeRgW>GQM0JL+ps5%q@o&)?i>@yaMVRSlqr_=N{DWf^eMVqW>kgULC&&cVP16xDdXH&n`%letRmz4z*z#chv3^Zb-x!Bn69$X@6xgRv9|!HY z5L`dnoTbw%YG8|0H=t-6d$6lAlrLrZs37a{+y{d2-G>%`z6mUzA?HgpvGPJj9~WcB z&``xGA;=r$^=AmG=X7)(0|+5V(KDu@Y}YLwHeoUM8ULYpKFisyfW_~#pHXj{6SDpY z3q)n5T&{pFg$%+?l7-Z0K-zSP0}nheuI!mi*Vvn8M=0{% z<`$*)@vQn&@{{47{eIC14N+D6x(=!5B4dLq$&QNI{>EO$)Ty|+cu_R3r zwVtK^NQD0rE^__y;+H=|-|YB@8=QRwo_|-ob<@foUUQrKoQ`a_sbyOHwWRQC=zGHY zx`eYwJ1oQbN6sW;+yn|!%Dft>l%}N?a}ay9DFu6(KM;`V`t|o$A13EoO?r`Vc_gVq0itIGh22in`lLE@0%I0Y3P$`DoiP0JJY@CtB`V5F=gS{tL4Jf0 z@nNi#YUew1gm4>>ot=Y`C*L9B{&Iq=@uFZ1k#$`IRo$3#T@+($(H@BFoP10xj|BBH zAQzqHd+N*hW`fa#s!H>Ex0!w@3<7Q6=bX7*nKu5s05brAWadsfG9s~AyOgZ`2xN9)T`Cak#YjK{(Ea9E9ALr{Y$`b0bH!DOk@ zCkaQLtew?ZC4=U};DoG$4amyrD%{$`BILx;?v(ocn^!e2+zk|!B^Z7I4tp5zLSD$2 zPeJ;=>64DBitSUFFJZUf0yY(RT6);UtCc!8>)-z63Gx|VSoU5%#9^)cu*|r1w)IB` zug=OyOMZ@Y8nwOGZ&LDt<+8I*(8&AgUla{625bz6Y`%X06$J)RShjlkq@l4WwL9h?`<;%Qd3bK4MMp_soL(0)VuFH z?}z(j3f=8Mxn5jcfFWrcEe}NJ0T!7#_K2MyTvC>44P#z!y#SS(JZjP%f4HUjPi8KG zHnL`HUz?a|UhFviff(X~*eW#-8Gl5kpHni&@(ZtGI9+na03%ABN^t=&bmU?zYsAFl zCm?ulGq_WUp{x~f)q!8v8gsO-8hTcux zrkStW%_}S|%+n7TQ9qk;vRyPGogoK5K z#T9)?soT)7ZtR;`=(McRmX*9mD~nhTBd24Vgj0P_bFXr62(v!5r>7_8s{hn~e{C(h zQQ6^E*wJjK{IGfWUYCmI09&SIvO*@g37or2R_9Sy%2{`i8}gyKO!*N4ZAh-8IZac0 zhvR6nD&~j5kYxrj?*48Kf_^rMmA^qTmN?vV!SJ2gyGa}?Gl5ODIeoPUe-rl38vn#w zeq-R>l<2&d`#ZJlp7TWJ$e7Jt_;FEG+>Rt#^!WL_jpQg5P?e1(c8!u&mgL4|tte1t{TB=Z@IZjEhg1VQdgiY;i@wC^zYrp%9 zs6jXk7ind~3bXn`rPzLoI3|(wG*XBk`cYXaAhn*Jo}qk5hXoSGt2-MqTB;OFllJiW z{GaL&Pa$DWXxn*LtCR)te#@t=+W0% zY1y*&`^&<@g3tE(I`D~P*oiN353idm{lHo}_`s>wVK9*sB8*O@?GYtVQy0Y+a8!bA^3hYPSVK%yoQcXGb<@5A`ZuP#tW423sCt zm--@tOD_1+0gNUO6hv{fgr5hqsG(q5TJcCM`nZ#Dz_$PFqh8_DnP$J!jatmv`8gEa zNz6v23z;h`M>OAjrZ>jX3SUudSY>v%EC;@K4VcVz!xi_}9g3;M4~*qCk$nE)hL zn+T?paL)KpkIT9}bjWS{cm5csT(F@y8qS+!QJ;~KLB?hG?%lf-8$~Cl&#|$+2D);1 zuaI6`vWt4c0Mqp=$WPMQy>6LJ&A|*Hg+ULd7(bss4Y||o!{IP`e#re2PHtP zlT0DO3!n#L1N^@JzcvSFP`|>@4<{yT9f5!m!>k0!o&;dP=9HMvq;2&be#6h<=O=0W zFTfZ27}ARqYLR)9zZh32s9By z;;)c-!!*)onZ(HlY$QCCn^fEC>FHHkAe;R+gBN-dtiy?T5>vsVdpCVRj5Q#5Vw)yzO9)Ss698Z&UHekq0X$LV#RN zq1*?;`qGoC4Nm}n(u6@YECy~f&0>Or1LD2UTLZm`4@9VHdiyh<5@tydbim|U#sFZ- z`)g%YTT}G{B!rT90Cz8@1Dm{!i^Episo^@`K=Ym&^=IPGi2JWzy&@wcBaP}yeGnI~ zXiwtX=3utEKhzf7lx*`>P3tsv`$lRz@CAB;wtt*BaUdkpPdVIRwA!6O$8gH6vxw^w+ zZvk%-VfzFaQb$YCAWj8y6&xfOj6r?kbaZqL#!o(IP&&WYD(w%JimrAikfvHAVJb#h zly`Vo*p*dO`d%YTZV8yxIqjaTSD}A9XbP~WRwoVQWuakJi|s4`wxHj-0C*{iNF^0? z&ww86SnV>#kFZVFpd>z|S^BH7#wvl+V(SC`u^v z{n5|*>Bm=llQ=WBxLZaLr=W#9hzDst5@7Ngr{VkiXNi)2YrkWtfgBd%x_4O=mI$Bo zVZyyvNP-RTd+WW>(`UuMPY1s1!mafh6+|t?F2Kj9U#y&hlf(ONkjT7` zM;n)D-rZMr{-l#@RB0jQ^84YJcUM2!^(MmVX)Aq~E@Vjw0KAsM-M2?2(#n+}nq*|J z$U00)I^1ZOxbc$d#U5`1S%eVf_9CH|Ga?hS+JDR5;<4?|>rxALd4MZmp;(!4ic9mm zu??Pc@(u%;*%F@pSKsH*r`GaEY#LaSWh75tN;fzRW|07Wx(L^`7jJYL{^;4d8?*UA zDDuOOX79>2G| zaeK$Gwx(N;4dv1a1$tZj?jKZt1e*2f_Eo9mgen@Jy>ZKM@DVN=LKw1Vgx{Jkp^343&pIwmGXvSTD?`%AEMZi zPrIO`DSY4`EX<*O>L7DWH0my^aGV#HU32F5i<>1j9Az8EI_kL3lmhkh5X zXJKOFmfs{f9q?P7vcKb$9a-Pevn8r~z%Y|zqH zc^pMXZnd@Nxht8p8J@X&HP6~hML;z63QH~a%+8BOh69aQTB+#`&oMO5MV;&BO&XEC z8A2Bfuj*3oJi0^@0lu)q9bDJy(TIP%WHK3kFgt*RRSyr3rEgEu6QUcBwQ4qs{dzG{ zk5drX?TA@Ooq{+dmg!x!8NMHDsEIFIOX7sI8&_FbhaJ8^!tkk~&U5WyBw5Op4{J`5 zXZGf@)9eb^xA5a;&mSa;8e5fWAxL>cU51cMdSTI zu?9V4jh&@>pHR=S*DqlBnG2NII2-)T)~52tty>#2Edk9&U4Qkid9Cc_`i83EVmn~9 z?4;g&*&vvk+Xl&@O86{knK~EqcD}l$UMi}eHKE?k)?0!l5H?4GV9Yl#tD4=$>{duP zzj38oqD;Bb`h<0aP(JHwywcsjg>_%`=G$UkBvAIy+-vN@+g+-@Fi(#d3FNjn>$R;e z#w{kYN0YPYO$~W3V$!>ZjE^ju^oyM2O*7e#A)nkjX8rZ#$N7z3E+f%j+F`t#GcCqT zVvBlsv`EJXq(1Stx??oC7nikB$SENPzPx|z=xka2lM>w!Z_;q6X|njn+(wDflcV0& zJT`KKbiL*})>?;YG7EoyL@iO7BO(C+a^-*C1-Lm?T!jtX&+pd+$vx_Qb?c$~vLruK zf9-Hso=e2I6CWLs-K?BYFeEpj|l~c-=valzIsV zqq^Cyq@>56-``|6UT(S?VEcvyReqCi1ukvu+GxgXNJW5gu@R_a6pc<-i3fz zW67yUfnw-qsqw$FBs}wStNKN`bHCc$rm+vySd!6q4BVfZ+m;k`_G-d+o8w}9TIJ+a z>pt5x@pQh57rDF7scBfTp8~LxS4iyNnX1A+2;JUctdB4X4I?8bqjES|3BKJphiLEI=3mh zIks$QkR5au_Njd&aMfHGGA`{Q zh;8AHfYE^0HIlAAxbdU6VlC`fD`Bn3ad}(H|9Irk75Ch@3$&1MJRRPSJPSoHVoSNUsW^cMuQ=1QkJ~_YM|{bm;^LQ4m5$=_L@6 z-a-!qNV4~Pp4}h&XLtYacYobG&z+fb=A84M_smT6Q#}pZYpmBmAP}vVrn(^rMBxkq zT?oH=0ccTq<-ZF8T?c8YKQwxkyERAo%E)0Rd?7`LUpf4c?wX)K?S)TT*VVJ%j~Go| zPIA3$ZvCgk%;16PCDZF>Pp{v$epqB$^#0{l&7Fw!>lY|S`gzIP@dJ+bk}0x}S@tnZ zOq0C}I#gLf`=Qt@sM5&D2o31ht~lsHv^VG}m>o2Bl@cV~LGd8&-_L(n<6md^Hx~Yd zf`5_l{}&QsPa!LkdTlBm6q&Cg$qtcK1mhh-uoEy>;kM! zNlA%4;;lrbb}~j=E;%{bF8NvMm3@QkE@67%Am`rOQ$N1G@owhylQxQE^V#n@I+O~B z@zIwx^9I3+0G`J#amNaDUOxUX}O<*`CmpHczyFT3~G{ z!$yenzI`Vyo3cPDSZ-s3;Xo~@5#7}tu{GtY`k=ibI5_C?6={joFbjnHaigu|_TldC zRrj$e^rWo7~}sgL3osdZDh6d?HRsJV(VQKSwdaq@SBAx@!M|JP{KtA=U9xwFDwbV(qliM;Le_uR1vlHUxIC}l=WrI_d6)beAM}HsdZjln zRS|4z2hF_KBOra4Rl?=QC`gXd!0)6e*Qt`8;-~0O{Ey?~ANqqkL_N)ru(1fO(EJd> zLVN=9tQXa9TG8gvsQ|XU5&uZt;;HJ_bzCKimKGZO6zRA<1E<2&g~lK>WO(^j@IR0t zOF82ekNa&;(9SH!`O2Y&0bzt4myFKN`BUearC}y@hN~GJfSW4J=mux$Urc;Yiki4h%Lt@ z!&!2nLqoPQl{Rgf0e$&FQYCb(GBDDIBM(JoiGZGu{TUrnHqo)3bX-$To;z4%9i&nL zg`44-HLUviGos~)t!H%WWZ|tnwm@>bd?zMNP-t7cpxivnFbJV7IhO2WHTq{_6lI<} zS0bblA6x@JFrgPSYgq5PVUHsIl{!#ZhC9ws?vOlw#n|36H?4UxKB!tLEq3<+&4+~% zMtW-eGAb&Kj`C}&mBdQ46$3)|cS%U5;XLVt>GQ>zkCc|_qNZWXLvN2ZWbX&|$woFe zn{i=bq%8gpgXa6rr+@H+Y_W&v6d2m=S0TZc_5MuVwxitAItPnS>5Btw2M_(;4>*@W z{gm~OgnBXK;;r>XG<5Y@C}q1OK5suw*c4H6YOfs3In^p4AREkg=TZJ=z9;GUqk|O6 z`oqU>mj9fbG&g5J+HHzq??T)riP~?u{T|fY{gzD#2r1L@F1HJ0fS<3U#@kV(nIf#y z>6jj;d}?MQ_wd(64Z7YRl*jLSNN;&si&$?CGGIdw2B_8CCR%NAnLFelDBpY1-AZAFK+wA9qp ztQ7th1mbd&i`UX!Jv5`}z91ReF^i_-cpn{~zDyGo+tS)POgyv?irAiMG0#_GxN9n% zQ15lMyu=A+RpG8~(|+G+0~++G@8YCpg0`M#J?S2!!Jo5@u@t9| zZx@km$o|y3WNc16GHCP#)6foPzb=+;D=O`twajACl03g@$l;%A8=HCKa^noMiW8FM zGW?{!>u&n5M2$-jtp7BOGazPSp56SrnBCxNkE)Z$B=b3G)vS`~a@FHOa z4w(9+p@Fb;lq$s2nqN_pN3vGH{{R+EfK0h%=-`)Gs>qPO^PNlKwwW&&Ddq1+;HfLJt;Oj)|S@`_a zXWftk*}yEu!24^;-!N|3cCx`U$$$Lq$w+30#wH)ChoSsdD z68{{y#po$~RY;OK=@;|mx8AoE;<6hOUD{~Y9bR{0o}mmNhb*c?)XG&`<26wbp1xj~NGr;*cFD zCtbpy&L)Uc;O3xZ1IvB)pKUA!ht6}*?m{Xx4U}hlcIw31N4C9&+X)*nXKDc~ zvS{;%z9WVHQE16Qp9vA$TEG5b$d5l646V!uvObt|k1rAuH7a~Gw}WpiydbvJ7m$wV z_3DcLGQqpBSlfw`T3FL12zxknO3FR1HkC(urpsQ^xp&yZ%agm3R1zArbTnZE^1L|7 zOvl)Y<{87e1iQZRD~_mgL*!%ekIN?%-9}w}MEqmj29^g8HQ~;CdY*yYgwMr%tB1>w z@DED$%sv>Gfefj++@NB9Hh_jkr6cN-tW~Z?X-jr4BqjIE$n4u%WJ~i&^h+Bkb}R&M zf$6-;`9$#96iek}nSx^F?*Pu)b^fTOq|TypzBIa2i|R_E{z&qz&{*ify^4@i#W06| z2<$%{siG1R5~OiuBK&=zeH~6s&KlD;BvM&PsgRWp!rlfNILh=|OwZ2FP8OArkl^9r z`RzDWG4IJ~5~%MbJ0Hs`pPug8D(~D-)GW{yVop;UnURs9p+LFK%`VzY6E#f-6bi8Z z!KQD+yXgfmpCk?`N=GK%>norM-d^!lAxF8|cDV!*CI_#mZAQNwSMDgu#?E{1mKo9G z;;(uUo02F4C`RU4$C-gzm&%$rxzX?Zf;fb|YLGN^gojR{KEfOp%(}6@*%DlI6YAT{ zKFy7>Uvw8uG-w`ll1_S0no?qRk)kl->B?m_H8rQfY~xCc z25KfzUVi?7?HOrt@uzq(+jiJ&qlYiP(0#fV7{=n;^BaNJ?~jIZjGDTa;U(X>z||JIXq??)7~87=4NeZ!9+B7 zXJ;qdeP{9DLudKtfE2ZUlU3G+EYk-oIbOwuh4-wQznN582rfFT2! z5{rG6vTx3n#l*z?)F50Vtl-f4znhzGIGU?h-^ay?7?-8$K%r{MJc}7?YtHheVhf2M z<^B<@S)@lQV6i(+GCpy;u#oq_MQoA!tlw_{ev?7iXbp=Z7iy)P6NwHIcUEN$3N@3O zo8|m0S$VknAcNV`^z3rn_SacH8C94`@baqTLlj|BPl3{`i7IHLkM-y0$1%{$F9DmT z-8D_mlf08Su6uC#hh$EovVdN$xc=yqXVC3YG#ag0kOn1GA+vhM9Q)Hn4EYd^x;ZlA zm6oOfeHGB{nFb((&HBE(Yf|B@fDyk+>3y~~QJDj^1GMJkV#KbJS)~odPk3*#D06x`SIh&!1*AJ36teRk0?40 zXvvaVy1eVySDxANa?=ct5^DA!&w(VA0cv}uQ%vGt`Yy+r-feUjeJoB z1qFHeX^^*5jYTB|1;uh-+Ff9Fz4+nZ3FBPK!A5j<0c%(_l$4ZE{25A4P37%;^ZxzS zm@eNPy~<@Jr1r#sLy?V{%$N53wr9@^UNmyBtF6CCY`zD3+dZ}Ms00v zOVK+g%r@x%%Z8huEY2AVClhn!{b)c0VJw9GmVjQH@A3zPM}x&(qp!aJ0|T+j0xzTF zf{F9-b%7GA_x;L7fQX%_wCwK&RJ~`w>gC#QgSJTsFlz5UM zI#*?_IGv7{cK-Dpl!$y|vFPpRS7&w)H5b`>HjfNhjy_#V(JwA40!Ena>|AV^v|$r} z{=F-PiAltQ7i|TE?7^_A*VxzJUk$$SvPd}%#U>=6d=?|!m3F^h{GyS78!H_J1YQna z`UBwP*~tljP+LVAHp%753eYC0MPia0H8nMx(yQI~H^97>0Jx7_N3%@^7L<7qI5`c6M8C?8fCLXQP3kh57JJ5g_Cl3(vIyA5p+x?Z zc<&lF56?rH0kDJF?@ww`fZOzqI0h)@CD$ZWCy!6ANqhU4CLN7#A0pC+#-z<1M8F^PT>$ zhUxV$(Ft4`IAGBQjy1Z4YM%(NdO|M)sg-Yqz~QqoRtjJwF>F@J7z%nf%SBA~%c4Hq z!P+u{`So%IhYigW5{sUKLvN@Lx%I4@X=xQbNxMSFzP7q5a7IbX%3ER&ClOX99s0(q zZLvxQGp&I;K(wNW_*uhSRO;0>$R$@e3YfVBFqz~=5^pd5OM;4UoVe57TAsM8baX@Y zB2In|dCU6n7i_z$zWaKfs>H(-LUvWhgKlZBw!O&QJqdjf#k=%T0TKtPPFQan0O#|Q zJwWl4%eUqEc%6(%n2eSSqMyEzU%Eei`U~N=Iv=v5Y(7|Nh1i!GRzD>-Lfvu4^5xb9#y$KNwh;GTCJwiMB)M<= zf^5$4r|~8$>&8hqZ;r=)WMcNt5W%@KA8QIuVWZOW&16?{uzzp$t4B3f4wS*ev$i)~ zODix`F6u9$;&bx10Im|WP-o-eKx4N=36NYjIo2EF=U=KD#=ltx{~3Fmf|9>^!(oZC zgQ6K^ezK+DwqDae8LO0d__6?b=&RF~<|YleU%c?dU~zxH3ayP4ZfRWoCvaiN32}<`F)R>dcbr5Q2YIOb2)}lqL75p7y# zBs6OIaTOD}xawP*Xg;z7pKqzRx}jRaq*Xh;)E9@j!~TGjDd+PSKAmQeND%vD%TrCc#diI0TO&N%ZHMZRe%I4_-{br=+9rj3Tj0s-8~bv zlKIa+gYLX$Rt~N=rv>;^X(a4q+NmJRi;9_xOVz$RHeJM$72zw?0>Tc+iJ12s{x|6uMbeWx0LjrBZXQ3`G~WkLM^NztiKpZfQi!9h!fKi zQyepxj$0p)L?#69ZcZtUX7zp2RS}u1pX7R5%*M*l?slx6KQ3tb6J;zmj-$i#XCJoH zLitw>eh%`3oBcsP4YT<7$;m(fPXM{HRN?JNRse(V85Z_LafLb8n8jj*Eq_k_K;e+y z2!mzGS_!8!a&9frefA-t)hErjb;!E!C{3~3=yK29(nuXMXry7eiO8af^an-}g`oYV zHX}7lWYrrG=%UX*_X1L>c9q!}^5#&U3PJ6uD6iF)ULar^Zx8ZnQ1Q`?L_%Q5|fCaZMMpX?2e#*;W#k#~!0i z=Mgs2;HImTi2|=*zXq&QH|-7-T|gy}p~jK?O@!mNm{zk-PZm6lEE(ON*-eEasT1DLCv=RALt}Pe^M-s$FfKPj7@*VI<`@r9@YXx?`7x9#HlMztlAOk$ zFcQPQ+pA2p=}BLu{BuE=@xWH;n_swT{yalbM8R?L!vv?(We$Xz9BA@sHLUlG{i#f; z#ZXV$gtYKB*K|p6uN@?en?1Zgk*D)Cqg5Zi@nU?$Q3zh(qTgsk!rb!p0T+0iTyBmt zDmCodqriE34$D-HDu3&aXi!w0J1<{sN=WNUdN{Zd2P-t-T$Mv<026_EUNt>Cn4Fb0 z4>{cGK%(iQ0N~EK&casUSlD|LLZw{1vtFz2=bPXj*i~{83>C_@jf{_L;w8A47x@e)YpFtyCaE$ zq8by@(8xRXw50$FNau1EeDQt{Jm0>311hVDC$AL~Xs$x7)f@%&(5%I|krzQ*uQ>j< t+b#`cN)U)l-mIcm0`BHq`6u`;g6>~}q^&{0G(ZbT>#?4C)uZQc{sX$lZovQm diff --git a/__tests__/html2/speechToSpeech/happy.path.html.snap-2.png b/__tests__/html2/speechToSpeech/happy.path.html.snap-2.png index d3a3724d2230b699405411f97482fe773bd9d5fc..d1bf54729134d41c8dc107d066782c6edabf533c 100644 GIT binary patch literal 13993 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 RV!?OF)ReRoi=Vy-`5&qK0l5GG literal 13726 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 R7(4@!msWXE`uvsO{{k8tb}j$_ diff --git a/__tests__/html2/speechToSpeech/multiple.turns.html b/__tests__/html2/speechToSpeech/multiple.turns.html index 7a5ccc5971..d88ae5069a 100644 --- a/__tests__/html2/speechToSpeech/multiple.turns.html +++ b/__tests__/html2/speechToSpeech/multiple.turns.html @@ -41,12 +41,18 @@ // Set voice configuration capability to enable microphone button directLine.setCapability('getVoiceConfiguration', { sampleRate: 24000, chunkIntervalMs: 100 }, { emitEvent: false }); + // Enable voice-only mode (hides send button, shows mic + dismiss buttons) + directLine.setCapability('getIsVoiceOnlyMode', true, { emitEvent: false }); render( , document.getElementById('webchat') @@ -313,8 +319,10 @@ expect(activities[4]).toHaveProperty('textContent', 'Thank you!'); expect(activities[5]).toHaveProperty('textContent', "You're welcome! Have a safe flight."); - // ===== END: Turn off mic ===== - await host.click(micButton); + // ===== END: Stop voice recording using dismiss button ===== + const dismissButton = document.querySelector(`[data-testid="${testIds.sendBoxDismissButton}"]`); + expect(dismissButton).toBeTruthy(); + await host.click(dismissButton); await pageConditions.became( 'Recording stopped', diff --git a/__tests__/html2/speechToSpeech/multiple.turns.html.snap-1.png b/__tests__/html2/speechToSpeech/multiple.turns.html.snap-1.png index 65531ebe9c5278daea764f0d885944eb2d951ee2..ede648a4419656a43642e11b911ca4a9d620c49d 100644 GIT binary patch literal 27104 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 literal 26857 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 + + + + + + + + + + + + +
+ + + + diff --git a/__tests__/html2/speechToSpeech/mute.functionality.html.snap-1.png b/__tests__/html2/speechToSpeech/mute.functionality.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3d816b4884831cd82695a1a0808d079c9d4d6aca GIT binary patch literal 4811 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 We5w~mPEjFh7k_kj#{KZio&N$bbaFrd literal 0 HcmV?d00001 diff --git a/__tests__/html2/speechToSpeech/outgoing.audio.interval.html b/__tests__/html2/speechToSpeech/outgoing.audio.interval.html index d2167aba2a..f8761f7f4b 100644 --- a/__tests__/html2/speechToSpeech/outgoing.audio.interval.html +++ b/__tests__/html2/speechToSpeech/outgoing.audio.interval.html @@ -43,6 +43,8 @@ // Set voice configuration capability to enable microphone button directLine.setCapability('getVoiceConfiguration', { sampleRate: 24000, chunkIntervalMs: 100 }, { emitEvent: false }); + // Enable voice-only mode (hides send button, shows mic + dismiss buttons) + directLine.setCapability('getIsVoiceOnlyMode', true, { emitEvent: false }); // Intercept postActivity to capture outgoing voice chunks const capturedChunks = []; @@ -98,8 +100,10 @@ 2000 ); - // ===== STEP 3: Stop recording ===== - await host.click(micButton); + // ===== STEP 3: Stop voice recording using dismiss button ===== + const dismissButton = document.querySelector(`[data-testid="${testIds.sendBoxDismissButton}"]`); + expect(dismissButton).toBeTruthy(); + await host.click(dismissButton); await pageConditions.became( 'Recording stopped', diff --git a/packages/api/src/boot/internal.ts b/packages/api/src/boot/internal.ts index 1deec63da8..6d786c0376 100644 --- a/packages/api/src/boot/internal.ts +++ b/packages/api/src/boot/internal.ts @@ -2,5 +2,6 @@ export { default as LowPriorityDecoratorComposer } from '../decorator/internal/L export { default as usePostVoiceActivity } from '../hooks/internal/usePostVoiceActivity'; export { default as useSetDictateState } from '../hooks/internal/useSetDictateState'; export { default as useShouldShowMicrophoneButton } from '../hooks/internal/useShouldShowMicrophoneButton'; +export { default as useVoiceStateWritable } from '../hooks/internal/useVoiceStateWritable'; export { LegacyActivityContextProvider, type LegacyActivityContextType } from '../legacy/LegacyActivityBridgeContext'; export { default as StyleOptionsComposer } from '../providers/StyleOptions/StyleOptionsComposer'; diff --git a/packages/api/src/localization/en-US.json b/packages/api/src/localization/en-US.json index 7e22ba4c18..871b526eaa 100644 --- a/packages/api/src/localization/en-US.json +++ b/packages/api/src/localization/en-US.json @@ -123,6 +123,8 @@ "_SPEECH_INPUT_MICROPHONE_BUTTON_CLOSE_ALT.comment": "This is for screen reader and is the label of the microphone button, when clicked, will close microphone.", "SPEECH_INPUT_MICROPHONE_BUTTON_OPEN_ALT": "Microphone on", "_SPEECH_INPUT_MICROPHONE_BUTTON_OPEN_ALT.comment": "This is for screen reader and is the label of the microphone button, when clicked, will open microphone.", + "SPEECH_INPUT_STOP_RECORDING_ALT": "Stop recording", + "_SPEECH_INPUT_STOP_RECORDING_ALT.comment": "This is for screen reader and is the label of the dismiss button that stops recording in voice only mode.", "SPEECH_INPUT_STARTING": "Starting…", "SUGGESTED_ACTIONS_FLIPPER_NEXT_ALT": "Next", "_SUGGESTED_ACTIONS_FLIPPER_NEXT_ALT.comment": "This is for screen reader for the label of the right flipper button for suggested actions. Probably can re-use the value from CAROUSEL_FLIPPER_NEXT_ALT.", @@ -133,10 +135,12 @@ "TEXT_INPUT_ALT": "Message input box", "_TEXT_INPUT_ALT.comment": "This is for screen reader for the label of the message input box.", "TEXT_INPUT_PLACEHOLDER": "Type your message", - "TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Start talking...", + "TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER": "Click mic to start", "_TEXT_INPUT_SPEECH_IDLE_PLACEHOLDER.comment": "This is the placeholder text shown in the message input box when speech-to-speech is enabled and in idle state.", "TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER": "Listening...", "_TEXT_INPUT_SPEECH_LISTENING_PLACEHOLDER.comment": "This is the placeholder text shown in the message input box when speech-to-speech is enabled and actively listening to user speech.", + "TEXT_INPUT_SPEECH_MUTED_PLACEHOLDER": "Muted", + "_TEXT_INPUT_SPEECH_MUTED_PLACEHOLDER.comment": "This is the placeholder text shown in the message input box when speech-to-speech is enabled and the microphone is muted.", "TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER": "Processing...", "_TEXT_INPUT_SPEECH_PROCESSING_PLACEHOLDER.comment": "This is the placeholder text shown in the message input box when speech-to-speech is enabled and processing the user's speech input.", "TEXT_INPUT_SPEECH_BOT_SPEAKING_PLACEHOLDER": "Talk to interrupt...", diff --git a/packages/api/src/providers/Capabilities/private/capabilityRegistry.ts b/packages/api/src/providers/Capabilities/private/capabilityRegistry.ts index c0c6bdc3f6..061eb72395 100644 --- a/packages/api/src/providers/Capabilities/private/capabilityRegistry.ts +++ b/packages/api/src/providers/Capabilities/private/capabilityRegistry.ts @@ -39,6 +39,10 @@ const CAPABILITY_REGISTRY: readonly CapabilityDescriptor[] = { key: 'voiceConfiguration', getterName: 'getVoiceConfiguration' + }, + { + key: 'isVoiceOnlyMode', + getterName: 'getIsVoiceOnlyMode' } ]); diff --git a/packages/api/src/providers/Capabilities/types/Capabilities.ts b/packages/api/src/providers/Capabilities/types/Capabilities.ts index c72d96bd12..a186f9b9ea 100644 --- a/packages/api/src/providers/Capabilities/types/Capabilities.ts +++ b/packages/api/src/providers/Capabilities/types/Capabilities.ts @@ -3,6 +3,7 @@ */ type Capabilities = Readonly<{ voiceConfiguration?: VoiceConfiguration | undefined; + isVoiceOnlyMode?: boolean | undefined; }>; /** diff --git a/packages/api/src/providers/SpeechToSpeech/private/VoiceRecorderBridge.tsx b/packages/api/src/providers/SpeechToSpeech/private/VoiceRecorderBridge.tsx index ea00dbe81d..757f9e5940 100644 --- a/packages/api/src/providers/SpeechToSpeech/private/VoiceRecorderBridge.tsx +++ b/packages/api/src/providers/SpeechToSpeech/private/VoiceRecorderBridge.tsx @@ -11,6 +11,7 @@ export function VoiceRecorderBridge(): null { const [voiceState] = useVoiceState(); const postVoiceActivity = usePostVoiceActivity(); + const muted = voiceState === 'muted'; // Derive recording state from voiceState - recording is active when not idle const recording = voiceState !== 'idle'; @@ -29,7 +30,13 @@ export function VoiceRecorderBridge(): null { [postVoiceActivity] ); - const { record } = useRecorder(handleAudioChunk); + const { record, mute } = useRecorder(handleAudioChunk); + + useEffect(() => { + if (muted) { + return mute(); + } + }, [mute, muted]); useEffect(() => { if (recording) { diff --git a/packages/api/src/providers/SpeechToSpeech/private/useRecorder.spec.tsx b/packages/api/src/providers/SpeechToSpeech/private/useRecorder.spec.tsx index 6bb47cfa14..2b65f9195b 100644 --- a/packages/api/src/providers/SpeechToSpeech/private/useRecorder.spec.tsx +++ b/packages/api/src/providers/SpeechToSpeech/private/useRecorder.spec.tsx @@ -36,13 +36,16 @@ const mockWorkletNode = { port: mockWorkletPort }; +const mockSourceNode = { + connect: jest.fn(), + disconnect: jest.fn() +}; + const mockAudioContext = { audioWorklet: { addModule: jest.fn().mockResolvedValue(undefined) }, - createMediaStreamSource: jest.fn(() => ({ - connect: jest.fn() - })), + createMediaStreamSource: jest.fn(() => mockSourceNode), destination: {}, resume: jest.fn().mockResolvedValue(undefined), state: 'running' @@ -218,4 +221,74 @@ describe('useRecorder', () => { }); }); }); + + test('should return mute function', () => { + render(); + expect(typeof hookData?.mute).toBe('function'); + }); + + test('should send MUTE command and stop media stream when mute is called', async () => { + render(); + + // Start recording first + act(() => { + hookData?.record(); + }); + + await waitFor(() => { + expect(mockWorkletPort.postMessage).toHaveBeenCalledWith({ command: 'START' }); + }); + + // Clear mocks to isolate mute behavior + mockWorkletPort.postMessage.mockClear(); + mockTrack.stop.mockClear(); + mockSourceNode.disconnect.mockClear(); + + // Call mute + act(() => { + hookData?.mute(); + }); + + // Should send MUTE command to worklet + expect(mockWorkletPort.postMessage).toHaveBeenCalledWith({ command: 'MUTE' }); + // Should stop media stream tracks (mic indicator OFF) + expect(mockTrack.stop).toHaveBeenCalledTimes(1); + // Should disconnect source node + expect(mockSourceNode.disconnect).toHaveBeenCalledTimes(1); + }); + + test('should return unmute function from mute() that sends UNMUTE and restarts media stream', async () => { + render(); + + // Start recording first + act(() => { + hookData?.record(); + }); + + await waitFor(() => { + expect(mockWorkletPort.postMessage).toHaveBeenCalledWith({ command: 'START' }); + }); + + // Call mute and get unmute function + let unmute: (() => void) | undefined; + act(() => { + unmute = hookData?.mute(); + }); + + // Clear mocks to isolate unmute behavior + mockWorkletPort.postMessage.mockClear(); + mockMediaDevices.getUserMedia.mockClear(); + + // Call unmute + act(() => { + unmute?.(); + }); + + // Should send UNMUTE command to worklet + expect(mockWorkletPort.postMessage).toHaveBeenCalledWith({ command: 'UNMUTE' }); + // Should restart media stream + await waitFor(() => { + expect(mockMediaDevices.getUserMedia).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/packages/api/src/providers/SpeechToSpeech/private/useRecorder.ts b/packages/api/src/providers/SpeechToSpeech/private/useRecorder.ts index 05ed029003..f67e07d241 100644 --- a/packages/api/src/providers/SpeechToSpeech/private/useRecorder.ts +++ b/packages/api/src/providers/SpeechToSpeech/private/useRecorder.ts @@ -8,9 +8,11 @@ declare class AudioWorkletProcessor { buffer: number[]; bufferSize: number; constructor(options?: AudioWorkletNodeOptions); + muted: boolean; process(inputs: Float32Array[][], outputs: Float32Array[][], parameters: Record): boolean; readonly port: MessagePort; recording: boolean; + silentFrame: Float32Array; } declare function registerProcessor(name: string, processorCtor: typeof AudioWorkletProcessor): void; @@ -20,12 +22,16 @@ declare function registerProcessor(name: string, processorCtor: typeof AudioWork * without any TypeScript annotations that could be transformed by the compiler. */ const audioProcessorCode = `(${function () { + const RENDER_QUANTUM = 128; + class AudioRecorderProcessor extends AudioWorkletProcessor { constructor(options: AudioWorkletNodeOptions) { super(); this.buffer = []; this.bufferSize = options.processorOptions.bufferSize; + this.muted = false; this.recording = false; + this.silentFrame = new Float32Array(RENDER_QUANTUM); // Pre-allocated zeros this.port.onmessage = e => { if (e.data.command === 'START') { @@ -33,13 +39,20 @@ const audioProcessorCode = `(${function () { } else if (e.data.command === 'STOP') { this.recording = false; this.buffer = []; + } else if (e.data.command === 'MUTE') { + this.muted = true; + } else if (e.data.command === 'UNMUTE') { + this.muted = false; } }; } process(inputs: Float32Array[][]) { - if (inputs[0] && inputs[0].length && this.recording) { - this.buffer.push(...inputs[0][0]); + if (this.recording) { + // Use real audio when not muted, otherwise silenced chunk to keep connection alive (all zeros). + const audioData = !this.muted && inputs[0] && inputs[0].length ? inputs[0][0] : this.silentFrame; + this.buffer.push(...audioData); + while (this.buffer.length >= this.bufferSize) { const chunk = this.buffer.splice(0, this.bufferSize); this.port.postMessage({ eventType: 'audio', audioData: new Float32Array(chunk) }); @@ -62,6 +75,7 @@ const MS_IN_SECOND = 1000; export function useRecorder(onAudioChunk: (base64: string, timestamp: string) => void) { const [{ Date }] = usePonyfill(); const audioCtxRef = useRef(undefined); + const sourceRef = useRef(undefined); const streamRef = useRef(undefined); const voiceConfiguration = useCapabilities(caps => caps.voiceConfiguration); const workletRef = useRef(undefined); @@ -69,17 +83,44 @@ export function useRecorder(onAudioChunk: (base64: string, timestamp: string) => const chunkIntervalMs = voiceConfiguration?.chunkIntervalMs ?? DEFAULT_CHUNK_SIZE_IN_MS; const sampleRate = voiceConfiguration?.sampleRate ?? DEFAULT_SAMPLE_RATE; + const stopMediaStream = useCallback(() => { + if (streamRef.current) { + streamRef.current.getTracks().forEach(track => track.stop()); + streamRef.current = undefined; + } + }, [streamRef]); + + // Acquire MediaStream and connect source to worklet + const acquireAndConnectMediaStream = useCallback(async () => { + const audioCtx = audioCtxRef.current; + if (!audioCtx) { + return; + } + + const stream = await navigator.mediaDevices.getUserMedia({ + audio: { + channelCount: 1, + echoCancellation: true, + sampleRate + } + }); + streamRef.current = stream; + + const source = audioCtx.createMediaStreamSource(stream); + if (workletRef.current) { + source.connect(workletRef.current); + } + sourceRef.current = source; + }, [audioCtxRef, sampleRate, sourceRef, streamRef, workletRef]); + const stopRecording = useCallback(() => { if (workletRef.current) { workletRef.current.port.postMessage({ command: 'STOP' }); workletRef.current.disconnect(); workletRef.current = undefined; } - if (streamRef.current) { - streamRef.current.getTracks().forEach(track => track.stop()); - streamRef.current = undefined; - } - }, [streamRef, workletRef]); + stopMediaStream(); + }, [stopMediaStream, workletRef]); const initAudio = useCallback(async () => { if (audioCtxRef.current) { @@ -103,15 +144,7 @@ export function useRecorder(onAudioChunk: (base64: string, timestamp: string) => if (audioCtx.state === 'suspended') { await audioCtx.resume(); } - const stream = await navigator.mediaDevices.getUserMedia({ - audio: { - channelCount: 1, - echoCancellation: true, - sampleRate - } - }); - streamRef.current = stream; - const source = audioCtx.createMediaStreamSource(stream); + const worklet = new AudioWorkletNode(audioCtx, 'audio-recorder', { processorOptions: { bufferSize: (sampleRate * chunkIntervalMs) / MS_IN_SECOND @@ -131,16 +164,57 @@ export function useRecorder(onAudioChunk: (base64: string, timestamp: string) => } }; - source.connect(worklet); worklet.connect(audioCtx.destination); - worklet.port.postMessage({ command: 'START' }); workletRef.current = worklet; - }, [audioCtxRef, chunkIntervalMs, Date, initAudio, onAudioChunk, sampleRate]); + + await acquireAndConnectMediaStream(); + + worklet.port.postMessage({ command: 'START' }); + }, [ + Date, + acquireAndConnectMediaStream, + audioCtxRef, + chunkIntervalMs, + initAudio, + onAudioChunk, + sampleRate, + workletRef + ]); + + const muteRecording = useCallback(() => { + // Stop MediaStream (mic indicator OFF) and disconnect source + stopMediaStream(); + + if (sourceRef.current) { + sourceRef.current.disconnect(); + sourceRef.current = undefined; + } + + // Tell worklet to output silence + if (workletRef.current) { + workletRef.current.port.postMessage({ command: 'MUTE' }); + } + + // Return unmute function + return () => { + if (!audioCtxRef.current || !workletRef.current) { + return; + } + + // Tell worklet to use real audio + workletRef.current.port.postMessage({ command: 'UNMUTE' }); + + // Restart MediaStream and reconnect source (fire and forget) + acquireAndConnectMediaStream(); + }; + }, [acquireAndConnectMediaStream, audioCtxRef, sourceRef, stopMediaStream, workletRef]); const record = useCallback(() => { startRecording(); return stopRecording; }, [startRecording, stopRecording]); - return useMemo(() => ({ record }), [record]); + const mute = useCallback(() => muteRecording(), [muteRecording]); + + return useMemo(() => ({ record, mute }), [record, mute]); } diff --git a/packages/bundle/src/boot/actual/internal.ts b/packages/bundle/src/boot/actual/internal.ts index 5949642426..3996862fea 100644 --- a/packages/bundle/src/boot/actual/internal.ts +++ b/packages/bundle/src/boot/actual/internal.ts @@ -4,7 +4,11 @@ export { type ActivityStatusMiddleware, type TypingIndicatorMiddleware } from 'botframework-webchat-api'; -export { usePostVoiceActivity, useShouldShowMicrophoneButton } from 'botframework-webchat-api/internal'; +export { + usePostVoiceActivity, + useShouldShowMicrophoneButton, + useVoiceStateWritable +} from 'botframework-webchat-api/internal'; export { CodeHighlighterComposer, createIconComponent, diff --git a/packages/core/src/actions/setVoiceState.ts b/packages/core/src/actions/setVoiceState.ts index 53fc12b7c2..70feef25c3 100644 --- a/packages/core/src/actions/setVoiceState.ts +++ b/packages/core/src/actions/setVoiceState.ts @@ -1,6 +1,6 @@ const VOICE_SET_STATE = 'WEB_CHAT/VOICE_SET_STATE' as const; -type VoiceState = 'idle' | 'listening' | 'user_speaking' | 'processing' | 'bot_speaking'; +type VoiceState = 'idle' | 'listening' | 'muted' | 'user_speaking' | 'processing' | 'bot_speaking'; type VoiceSetStateAction = { type: typeof VOICE_SET_STATE; diff --git a/packages/fluent-theme/src/components/icon/FluentIcon.module.css b/packages/fluent-theme/src/components/icon/FluentIcon.module.css index f6f274c23a..172435c04c 100644 --- a/packages/fluent-theme/src/components/icon/FluentIcon.module.css +++ b/packages/fluent-theme/src/components/icon/FluentIcon.module.css @@ -50,11 +50,24 @@ --webchat__fluent-icon--mask: url('data:image/svg+xml;utf8,'); } -:global(.webchat) .icon--microphone { +:global(.webchat) .icon--microphone-active { --webchat__fluent-icon--mask: url('data:image/svg+xml;utf8,'); } +:global(.webchat) .icon--microphone-idle { + --webchat__fluent-icon--mask: url('data:image/svg+xml;utf8,'); +} + +:global(.webchat) .icon--microphone-mute { + --webchat__fluent-icon--mask: url('data:image/svg+xml;utf8,'); +} + :global(.webchat) .icon--audio-playing { --webchat__fluent-icon--mask: url('data:image/svg+xml;utf8,'); } + +:global(.webchat) .icon--dismiss { + --webchat__fluent-icon--mask: url('data:image/svg+xml;utf8,'); +} + /* #endregion */ diff --git a/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx b/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx new file mode 100644 index 0000000000..6f2435287e --- /dev/null +++ b/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx @@ -0,0 +1,38 @@ +import { hooks } from 'botframework-webchat'; +import React, { memo, useCallback } from 'react'; + +import testIds from '../../testIds'; +import { FluentIcon } from '../icon'; +import { ToolbarButton } from './Toolbar'; + +const { useStopVoice, useLocalizer } = hooks; + +/** + * Dismiss button that stops the voice session and returns to idle state. + * This is needed to stop recording as mic button is used to start/mute and cannot be used to stop recording. + */ +function DismissToolbarButton() { + const localize = useLocalizer(); + const stopVoice = useStopVoice(); + + const ariaLabel = localize('SPEECH_INPUT_STOP_RECORDING_ALT'); + + const handleDismissClick = useCallback(() => { + stopVoice(); + }, [stopVoice]); + + return ( + + + + ); +} + +DismissToolbarButton.displayName = 'SendBox.DismissToolbarButton'; + +export default memo(DismissToolbarButton); diff --git a/packages/fluent-theme/src/components/sendBox/MicrophoneToolbarButton.tsx b/packages/fluent-theme/src/components/sendBox/MicrophoneToolbarButton.tsx index 946f2a5e88..bda230760d 100644 --- a/packages/fluent-theme/src/components/sendBox/MicrophoneToolbarButton.tsx +++ b/packages/fluent-theme/src/components/sendBox/MicrophoneToolbarButton.tsx @@ -1,6 +1,7 @@ import { hooks } from 'botframework-webchat'; +import { useVoiceStateWritable } from 'botframework-webchat/internal'; import cx from 'classnames'; -import React, { memo, useCallback } from 'react'; +import React, { memo, useCallback, useMemo } from 'react'; import { useStyles } from '../../styles'; import testIds from '../../testIds'; @@ -9,24 +10,39 @@ import { ToolbarButton } from './Toolbar'; import styles from './Toolbar.module.css'; -const { useVoiceState, useStartVoice, useStopVoice, useLocalizer } = hooks; +const { useLocalizer, useStartVoice } = hooks; function MicrophoneToolbarButton() { - const [voiceState] = useVoiceState(); + const [voiceState, setVoiceState] = useVoiceStateWritable(); const classNames = useStyles(styles); const localize = useLocalizer(); const startVoice = useStartVoice(); - const stopVoice = useStopVoice(); const recording = voiceState !== 'idle'; + const icon = useMemo(() => { + switch (voiceState) { + case 'muted': + return 'microphone-mute'; + case 'bot_speaking': + return 'audio-playing'; + case 'idle': + return 'microphone-idle'; + default: + return 'microphone-active'; + } + }, [voiceState]); + const handleMicrophoneClick = useCallback(() => { - if (recording) { - stopVoice(); // Stop recognition and synthesis. - } else { + if (voiceState === 'idle') { startVoice(); // If it was stopped, will start recognition. It will synthesize when the bot respond. + } else if (voiceState === 'listening') { + setVoiceState('muted'); // listening <-> muted (VoiceRecorderBridge handles silent chunks) + } else if (voiceState === 'muted') { + setVoiceState('listening'); // listening <-> muted } - }, [recording, startVoice, stopVoice]); + // Other states (user_speaking, processing, bot_speaking) are non-interactive + }, [startVoice, setVoiceState, voiceState]); const ariaLabel = localize( recording ? 'SPEECH_INPUT_MICROPHONE_BUTTON_OPEN_ALT' : 'SPEECH_INPUT_MICROPHONE_BUTTON_CLOSE_ALT' @@ -39,7 +55,7 @@ function MicrophoneToolbarButton() { - + ); } diff --git a/packages/fluent-theme/src/components/sendBox/SendBox.tsx b/packages/fluent-theme/src/components/sendBox/SendBox.tsx index 05fb2bf184..e738a4bc93 100644 --- a/packages/fluent-theme/src/components/sendBox/SendBox.tsx +++ b/packages/fluent-theme/src/components/sendBox/SendBox.tsx @@ -20,6 +20,7 @@ import { FluentIcon } from '../icon'; import { SuggestedActions } from '../suggestedActions'; import { TelephoneKeypadSurrogate, useTelephoneKeypadShown, type DTMF } from '../telephoneKeypad'; import AddAttachmentButton from './AddAttachmentButton'; +import DismissToolbarButton from './DismissToolbarButton'; import ErrorMessage from './ErrorMessage'; import useSpeechStateMessage from './private/useSpeechStateMessage'; import useSubmitError from './private/useSubmitError'; @@ -31,6 +32,7 @@ import { Toolbar, ToolbarButton, ToolbarSeparator } from './Toolbar'; import MicrophoneToolbarButton from './MicrophoneToolbarButton'; const { + useCapabilities, useFocus, useLocalizer, useMakeThumbnail, @@ -64,6 +66,7 @@ function SendBox(props: Props) { const variantClassName = useVariantClassName(styles); const errorMessageId = useUniqueId('sendbox__error-message-id'); const inputRef = useRef(null); + const isVoiceOnlyMode = useCapabilities(caps => caps.isVoiceOnlyMode); const localize = useLocalizer(); const makeThumbnail = useMakeThumbnail(); const postVoiceActivity = usePostVoiceActivity(); @@ -257,9 +260,10 @@ function SendBox(props: Props) { {!hideTelephoneKeypadButton && } {!disableFileUpload && } + {showMicrophoneButton && } - {showMicrophoneButton ? ( - + {showMicrophoneButton && isVoiceOnlyMode ? ( + ) : ( Date: Thu, 5 Feb 2026 12:56:14 +0000 Subject: [PATCH 2/3] changelog file --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0211438d6b..62c52951b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -151,6 +151,7 @@ Breaking changes in this release: - 👷🏻 Added `npm run build-browser` script for building test harness package only, in PR [#5667](https://github.com/microsoft/BotFramework-WebChat/pull/5667), by [@compulim](https://github.com/compulim) - Added pull-based capabilities system for dynamically discovering adapter capabilities at runtime, in PR [#5679](https://github.com/microsoft/BotFramework-WebChat/pull/5679), by [@pranavjoshi001](https://github.com/pranavjoshi001) - Added Speech-to-Speech (S2S) support for real-time voice conversations, in PR [#5654](https://github.com/microsoft/BotFramework-WebChat/pull/5654), by [@pranavjoshi](https://github.com/pranavjoshi001) +- Added mute/unmute functionality for speech-to-speech with silent chunks to keep server connection alive, in PR [#5688](https://github.com/microsoft/BotFramework-WebChat/pull/5688), by [@pranavjoshi](https://github.com/pranavjoshi001) ### Changed From 14da8a428f8c621537a357d88cd3876371c4adeb Mon Sep 17 00:00:00 2001 From: Pranav Joshi Date: Thu, 5 Feb 2026 13:02:40 +0000 Subject: [PATCH 3/3] lint resolved --- .../src/components/sendBox/DismissToolbarButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx b/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx index 6f2435287e..07f4160de0 100644 --- a/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx +++ b/packages/fluent-theme/src/components/sendBox/DismissToolbarButton.tsx @@ -14,7 +14,7 @@ const { useStopVoice, useLocalizer } = hooks; function DismissToolbarButton() { const localize = useLocalizer(); const stopVoice = useStopVoice(); - + const ariaLabel = localize('SPEECH_INPUT_STOP_RECORDING_ALT'); const handleDismissClick = useCallback(() => {