Submind YouTube summaries
Thumbnail for Escaping demo-land: (actually!). Shipping voice AI to a million users

Escaping demo-land: (actually!). Shipping voice AI to a million users

Watch on YouTube

Video summary

The video details the journey of building "Googly," a voice AI sports companion designed for Dream11 users, highlighting the significant gap between creating impressive demos and successfully shipping products at scale. The core mission was to create an authentic conversational experience rather than a standard customer service bot, aiming to let fans share special moments with family members in real-time during live matches like the IPL. To achieve this, the team established three fundamental tenets: natural turn-taking where interruptions are seamless, emotional fidelity that respects tone and sentiment beyond just words, and ultra-low latency because delays of even a few seconds break the illusion of human conversation. The initial attempts using standard stacked architectures with separate speech-to-text, large language models (LLM), and text-to-speech components failed miserably due to high latency, awkward interactions, and the loss of emotional nuance during transcription. To overcome these technical hurdles, the team abandoned multi-model stacks in favor of a full-duplex audio-to-audio model that listens continuously without explicit turn signals, mimicking natural human dialogue where users can interrupt at any time. They also switched their network protocol from TCP-based WebSockets to UDP-based WebRTC, which prioritizes latency over strict correctness, essential for real-time voice streaming. Furthermore, they addressed the issue of functionality and tool usage by implementing an asynchronous delegation pattern; instead of blocking the conversation while a model searches for data or calculates stats, an interaction model keeps the chat flowing naturally while delegating heavy cognitive tasks to background processes that return results silently when ready. This approach ensured that users never experienced frustrating silence periods, maintaining engagement even during complex queries about player statistics or match predictions. Scaling this solution presented unique challenges regarding hardware costs and concurrency limits, leading the team to conclude that self-hosting models was not a viable path for achieving both low latency and high flexibility simultaneously. They found that relying on large labs with token-based pricing offered a more sustainable model than trying to manage finite GPU resources internally or through smaller providers who quickly hit capacity walls. Additionally, they discovered that while full-duplex voice models have limited context windows compared to text LLMs, the nature of spoken conversation—characterized by short, snappy sentences and frequent interruptions—means that retaining only the last five to seven turns is sufficient for maintaining a rich dialogue without needing massive memory or complex summarization strategies. This insight allowed them to optimize their system efficiently while still delivering personalized experiences based on user history loaded into the context window before sessions began. The presentation concludes with several critical lessons for developers entering the voice AI space, emphasizing that one must think from first principles because existing solutions often lack depth and reliability in this specific domain. The speaker warns against blindly following hype or adopting generic advice without understanding the underlying constraints of latency and concurrency, noting that many current industry standards are outdated as new architectures like OpenAI's GPT-5.5 emerge to solve similar problems differently. Ultimately, the story underscores that building a production-ready voice agent requires continuous feedback between engineering capabilities and product vision, trusting no single vendor or trend, and being prepared to rebuild approaches entirely when conventional wisdom fails under real-world pressure.
Read the full video transcript
reviewers. Very good. But Google question for you. Pitch report. So solid high scoring matches prediction. I think 181 depends on the batting line. Blue guy and Mumbai accent. Aussie accent right mate. So you're a Mumbai Indians fan, are you? The blue hoodie guy, no less. Probably seen him choke more times than a kangaroo in the desert. All that cash and still can't buy a decent performance. Can I? >> Hey sh. So nothing like a talking monkey to wake you up after lunch, right? Um you just met googly googly one of this was one of the live streams that Googleby did during the IPL uh this year. And googlyhai is the world's first AI sports companion. Uh he had cumulatively over 1.5 million minutes of watch time this IPL and there was one particular stream where 1.1 million viewers were looking at googly at the same time. Um he just doesn't do live streams. You can actually call him personally. So users on Dream 11 can actually have one-on-one sessions with googly and he can talk to 10,000 users at the same time. you know that's the number of concurrent uh conversations that he can have and this is a story of how we built googly um just like anything new that is done this is not a linear process this took us a lot of time and a lot of prototypes three times it became so bad that we have to chuck our entire approach and the code base and start from scratch and we had a lot of bad advice which is why I'm here uh to sort of mitigate that before we go on uh this is who I am. My name is Ru. My recent avatar is that I am a staff family at Dream 11 where I founded the foundations model group where we tried to unify intelligence into a single model instead of having like a bunch of models doing different things. We were able to do that and we had 3% increased DAU overnight by replacing all of these different models and powering personalization through one model. So if you're doing B2C personalization, we've already published a technical report. You can look at that. I'm actively looking to work on post- training inference and agentic systems. So if any of you are building that, I would love to talk back to Google. Uh how many of you are thinking of building planning to build a voice agent into your app uh or in the early stages of building? Okay, very few. Um and then my next question is obviously how many of you have shipped it to production? Uh okay, there's one. But in general, it's uh there are a few. In general, it's the gap between a demo and a production when it comes to and uh I'm sure a lot of you would have already experienced this is a lot. It's very easy to get a really good demo. It's very hard to make something work in production, right? And um before we get into the nitty-gritty, the fun stuff, [snorts] uh I want to look at the problem that we were trying to solve. Why did we build this? Right? And how many of you remember Virat Kohli 6 over the top of Harris Rough at the MCG? Right. Yeah, a few of you. That was a pretty good moment. I remember that moment because when that was happening, I was with my brother and my father. We were at a Taco Bell in a mall in Mumbai and I remember like we barely touched the food. We were looking at the screen the entire time. And moments like these are special. Obviously I remember that moment not because only what Virat Kohli did but because I was able to share it with my dad and my brother right and so sports is it's a lot about these moments and who you share it with and we wanted our users to always have someone to share these moments with and that's why we built googly uh and before we began building there were some core tenets like that came out of like what we were trying to solve and first we'll cover those core tenants And the first was we are building for conversation. This is not a CX bot. A conversation is when you feel that the person across from you is really hearing what you're saying, right? And this is actually much harder than it sounds. It's very easy to build something where uh you give off the impression that you're already a bot. And that just did not work for us. Like we were not going for that. We had to solve for actual conversation, right? And because conversa real conversations happen over voice, we did not want to build a chatbot. It had to be voice first. Uh it had to be functional. So a conversation without context is nothing, right? And obviously we wanted googly to have like all the statistics, all the performance numbers, everything. But we also wanted to him to have strong opinions and also wanted to him to know what's happening off the field. All the gossip, all the controversy, all of that stuff should be at his fingertips. Right? So functionality is also important. And this goes without saying at but at Dream 11 when you build something it better scale because during the IPL for example we have close to like 12 to 13 million users and the peculiar pattern is that all of those users just because of the nature of sport all of those users want to come in at the same time and so when I'm saying scale what I really mean is concurrency and that's it those are the tenets And now we'll start the journey. We can sail on this journey. And the first stop is obviously how do you solve for conversation. And the main thing being making users feel heard like I want to start with why voice is different from text right because a lot of us come at this from building chat bots and thinking okay uh voice it's a voice bot. It's not a lot different than a chatbot, but there are fundamental differences between voice and text. And the first, this is probably the hardest one, is turn taking. When you're chatting to chat GPT, your cloud or Gemini, um, you don't think about it, but when you're chatting, there is a very structured interaction. When you're done typing, you press enter. Your turn is over. It's uh, it's the AI's turn. When the AI is thinking, it's showing you it's thinking, its output is streaming. When it's streamed, you know it's done, right? So there are explicit turn signals and the interaction itself is very structured. In voice when I'm talking to you, I don't press an enter button to let you know that I'm done and you don't press an interrupt button as much as you'd like. I don't have an interrupt button to make me stop. The model is sort of expected to just get it when you're done speaking and just get it when you're interrupting. And that's actually very hard. Um the other challenge is voice carries emotion beyond just the words. When users share their voice with you, they expect that you just not listening to the words, but you're also listening to the emotion and the tone beyond these words. So when you ask users to share their voice, you better respect the emotion that is underneath. And the third thing is latency. And this will actually be a recurring pattern that latency is death for voice conversation. I'm sure all of you have had a call from a voice board for loans, for whatever. And the first giveaway is that when you stop speaking, the latency between your stopping to speak and the bot's answer is the first giveaway that you're talking to a bot, right? In text is actually the other way around. If you get an instant reply, you think it's a bot, right? And you actually expect that there's a human on the other side. You'll see those three dots and then a reply will come after like 2 or 3 seconds. So for voice, it's actually the reverse. And with that we have our yard stake of what we want from a solution is like we want natural turn taking we want emotional fidelity and we want sub2cond latency right and that's what we're looking for. Uh the first attempt is what the conventional wisdom is in this space at least was up until 6 months ago is that you look at a stacked approach and a stacked approach is something like you already have a chatbot right so it can already chat why don't we just sandwich the LLM which powers the chatbot between a speechtoext model which converts user speech to text feed into the LLM the LM will give you a text response you feed it to a texttospech model right and this is like you know if I'm if I'm really good making cycles is me thinking, okay, I'm already good at this cycle thing. Why don't I get an engine and a silencer and put it on the cycle and I have a motorbike, right? Uh it does work. It's not that it doesn't work. And um you can actually do this and you can use a VAD for turn taking, which is a voice activity detection. Uh but let's look at how that actually sounds. Hey, Duvari googly here. How are you doing today? >> Nothing much man. How about you? How are you doing? >> I'm doing absolute damalbas. Just sitting here watching cricket and waiting to tear your IPL team to shreds today. Which team are you supporting Droo? Tell me. >> Bro, I'm not going to watch the IPL this season. I have too much work. Work is just a cheap excuse for people whose teams lose every single season. Come on, man. Don't play safe with me. Which team's fan are you really? Reveal the target, cheek. And you know, yeah, a lot of you might be cringing at that. We were really happy when we actually got there because the one thing that it got right was able it was able to pronounce English words and Hindi words in the same sentence. That's actually very difficult. But obviously that was terrible. And I I I don't have to tell you why it was terrible. Turn taking was not natural. The latency was abhorent, right? And it did try to have some emotion but was really really awkward, right? And this is almost by design because when I'm speaking something my emotion is not my emotion is stripped away and the speechtoext model just looks at the text right and not the emotion and so all of it is lost uh during transcription. So this was not surprising uh why this is like like all these models are pretty good and all these models are actually bestin-class right so there were four models the VA the uh speech text the LLM and the TTS all of these are bestin-class but the problem is that we're trying to make them pretend that this is just one model right and that's the problem and these were never designed to work with each other at a given time the best ETSs the best ST the best VA the best LLM is all going to come from different providers they were not designed to work with each other and when you try to make them work it's it's just hell right and n attempts later n is fairly large here right we got to a solution which was full duplex speech to speech full duplex means there is no turn taking a model is actually actively listening all the time and apparently it can actively respond to you anytime right there's no explicit turn taking that my turn is done now the model which is very very much like how it happens when we're speaking like we you're continuously listening to me when I'm speaking you can interrupt anytime right and let's have a listen to this conversation >> hey Duv what's up my brother how are you doing today >> hey googly I'm doing all right yeah how are you >> I'm good bro just chilling. So, which team are you supporting this season? Yeah. Ready for me to tear them apart? >> Yeah, this season I'm not going to watch the IPL. I'm pretty busy with work. What's your absolute favorite moment from the something that really stuck with you? And that was much better. And the reason is like we don't have four models pretending to be one. We actually have just one model which takes audio in and spits audio out. Right? And it's a full duplex model. So it's continuously listening. There's no turn taking problem here. So we have natural turn taking, we have emotional fidelity as I hope you could have heard. And the latency is much low because you don't have these four models. And yeah, so we solved the model problem, but we had the model, but we were having problems connecting with it. So we started off with a REST API approach. We moved to serverside events, SSE, we moved to websockets, but it still sounded pretty terrible when we tried to make it work outside the demos. And the reason we figured out later was it was a fundamental problem with the network protocol. Web soockets, SSSE, REST API, all are based on the TCP protocol which prioritizes correctness over latency. And it was never meant uh for voice or video for streaming. It was always meant to get your mail, right? It's a pretty good protocol when you want to uh text someone or send an email. UB is the protocol that is actually prioritizes latency over correctness, which is what you would naturally use if you were doing voice. And so we switched from websockets to WebRTC. Uh websockets uh TCPs to websockets were what roughly UDP is it to WebRTC. And WebRTC in general is harder to host and harder to scale. So we used live kit and they were pretty good with it. Uh we still um the model server and the live kit servers still had a TCP based connection but that was server to server so it's fine. But what you really need is a web RTC connection between client to server which is what uh solve the problem. And so that's it. We have actually solved conversation um uh with the model and the network. But let's come to functionality like again a conversation without context is empty, right? And the conventional wisdom is to add functionality using tools and MCP servers. And the problem with that is tools are essentially the models actually can't call tools. they can just generate text or tokens. So what a tool call basically is it's two model inferences. The first is the model figuring out it wants to call a tool, giving you back how it wants you to call the tool, you running the tool, returning it to the model, and then finally the model putting an output and you can see how the latency would add up there. Uh the second thing is tools and instructions on how to use tools. All of this takes up space in the context window, right? And in general you would any for anything non-trivial you would not have one tool you'll have a bunch of tools right and so a lot of context window is gone the model actually now has to think a lot whether to use the tool which tool to use how to use the tool and so you would need to increase your thinking budget if you want the right tools to get invoked and all of this adds latency right and latency as I've already said is death to conversation so when somebody asks you what the life score uh if you have 6 seconds of silence, nobody's going to care. Nobody's going to care if you um after 6 seconds you have the cure for cancer. In a voice conversation, nobody's going to wait that long. So the main insight here is that people will not they will actually wait 10 seconds for an answer, but they won't wait even 2 seconds for a response. And the difference between an answer and a response is how we solve this problem. Uh if you ever talk to a customer support agent um it's one agent can say okay I'll put you on hold and then gets back to you after 20 seconds and that's bad experience. Another agent what they can do is they'll say okay I'll check that for you but meanwhile X Y and Z and meanwhile they might have delegated that work to somebody else. So she keeps the conversation going while the heavy cognitive work is happening in the background. Right? And so we split responsibilities. We had an interaction model whose only job is to keep the conversation going. And when it figures out there's something cognitively heavy to do, it delegates to a background model, right? And this delegation happens in an async way. So the background model never blocks the conversation. The conversation keeps on going. But when it's done, it'll silently hand it back to the interaction model and say, "Okay, what do you ask for? It's ready." Whenever you want to let the user know, you can do that. It's your call, right? And so that's how you solve for functionality by delegating to a thinking model in the background in an async way, right? And so we're at scale. And this is like a graph we did for another project where we provisioned um a GPU to host a llama model and this was an A180GB GPU. And what we figured out is like you can have after a certain concurrency on a fixed um GPU, you start to see more and more latencies because your requests you start getting cued. Um the GPU saturated either in memory or in compute and then latency spikes up. For that project, this was okay because our latency budgets were uh pretty high and we actually provisioned just one GPU to make it work. But in general, the framework that we developed was if you fix the number of GPUs, you can have either an SLA on latency or very high and flexible concurrency. You can't have both. If you want to have both low latency and high and flexible concurrency, you really need to have like a high number of GPUs, which nobody can afford right now. And so the solution there is not to self-host and not to even go with smaller labs offering these models because they also have very finite res of GPUs and we learned it the hard way when we had we worked with a small lab and beyond a certain concurrency which was fairly low like it was not even 100 they said let we don't have the GPUs you need to now commit to a fixed number of GPUs which we'll provision so that was not good for us and so this is what we came up with if we really care about latency and concurrency. Um the boring the the boring answer is the right one. You go with big labs because they can give you token based pricing up until a very high number of concurrency and you don't really have to worry about where the GPUs are coming from. Right. And yeah, that's uh we've almost landed uh we solved all the three problems. We've scaled um to all of our users and we published all this. So um we deployed this in April. um in June, mid June, we got the time to write about it. Everything that I've said is actually uh just a summary of what we wrote about. It has all the nerdy details about how we manage personalization, memory, observability, all that stuff, all that boring stuff like if you're stats for nerds basically. So you can go check it out. Uh this presentation, I submitted a proposal for this presentation based on that blog uh just 2 days after this. Uh so this was 6 weeks ago and 3 weeks ago um GPD live came out the newest version of GPD live and if you go through the blog you'll see some interesting stuff there and what they've actually said is the previous version of GPT live uh was three models chained together and that did not work as well because complexity [snorts] that came at a cost high latency stated responses so essentially the same thing that we were talking And how that solved the pro how they solved the problem was they now have GPD live as a continuous interaction using a full duplex architecture right and what they've also said in the blog is we've decoupled GPD live which handles continuous interaction from deeper work and so when GPD live wants to do something cognitive heavy it goes to GPD 5.5 and this is just 3 weeks ago the presentation that you're seeing was made 6 weeks ago right and so what you have is a playbook that I've shared with view has been validated by OpenAI and so that's a pretty good place to be right but I give it 2 months uh based on what I've seen in the past year um the dust has hardly settled on this space and in 2 months most of this playbook might be outdated right and so why did I waste your time right why did I share a playbook that I feel is not going to last 2 months uh it's all because I do believe there are some lessons in the journey that we can all take Okay. And the first lesson is actually it's a cliche uh thinking from first principles but I think it's worth repeating because in this space there is actually no other option. If you feel you can get away uh without thinking from first principles and building on top of what somebody else is saying uh I can assure you what they are saying they don't know what they're talking about. Nobody's knowbody knows what they're talking about. Even I don't. So you really have to think from first principles if you want to build something right now. The foundations are not there. we are actually building them as I'm speaking and the second is it's isite quite interesting is we have this notion of a product vision emerging and then once that vision crystallizes engineering actually going there and building it but with this technology right there has to be a continuous feedback loop between what engineering can do what the models can do and has to feed back to the vision right um and this is very non-trivial real because you need to have engineers and builders who can go back and say you know your vision it doesn't make sense given the capabilities of that model and a lot of times actually in our case the vision was actually made stronger because we realize the models can do something very very easily that we thought was hard right so this is actually fairly important and very subtle and the last thing is uh you should trust no one there's a lot of money um riding right now to convince you that XYZ is your problem and ABC is the solution, right? There's a lot of blogs, uh, a lot of hackathons, right? And you should be very careful who you listen to and especially if they're out there selling something in this space. And actually, most of the hype is actually from these people. Um, and that's why I think forums like these are important. I I'm not I'm not out here to sell you something. At the worst case, I might be an idiot, but I'm not actually trying to sell you something and convince you of something uh that I feel is not right. So uh forums like these uh fifth elephant are pretty important for us to come and share our learnings and yeah that's about it. You can actually I'll try to set up uh my laptop outside if I can find space and you can actually talk to googly and have him roast your IP your favorite IPL team. Um yeah thanks any questions I can take them now. Can you tell a bit about the model itself? I mean was it uh you built something on top of llama itself or I mean what was the actual how was the actual model built? Yeah. So, um, in the open-source domain, there are only a couple of models that actually do full duplex speech to speech. One is called Moshi, that's by a French lab. And actually, the other one is, uh, from Nvidia. Um, uh, we did not use that one. So, we tried to self-host Mochi, but as I said like the self-hosting self-hosting problem showed up where we were not able to support the concurrency. Uh so we are actually now using Google's native audio model which is a speech to speech model. >> Hey hi um thanks for the presentation. So uh we also try to build um a voice bot uh which is more of a therapeutic voice. So we hit uh like using any model uh where we require a more intelligence to be [snorts] responded. So we have to rely on frontier model because that that's what they were actually responding to. So any advice on like because voicetooice models are not that um intelligent enough to respond to bigger queries or more uh intricate queries. So uh that will fall back on voice to voice models. Any um any comments on that? Mhm. >> Yeah. Uh that's actually true. Voice to voice to voice models the strength is interaction and they don't have the intelligence or the depth that LLMs have. Uh that is very true and I think the solution to that what we found was uh being intelligent before the session even starts. And so uh what we did was for each user we had a lot of history of what the user really cared about and we condense all of that. So all the information that we predict that the interaction model or the voice model would need we load it into the context window right so we give it all the intellig so the intelligence is sort of frontloaded and even before the session starts we make sure that you know at 90% accuracy whatever information would be needed in the session is already there in the context window and the other thing is obviously delegation so you like if you need some sort of functionality and depth it will only be achieved by delegating I don't see voice models getting as smart as LLMs. So the delegation async delegation pattern is actually what's going to help you I think. Hey uh great talk uh thanks for the talk. uh here uh one quick question I had was like when you moved from the multimodel acting as one model paradigm to just a full duplex voice model did you have did you actually end up with a regression on the multilingual correct pronunciation capabilities or uh no it was actually the other way uh and this is because if you're doing a stacked approach you're using a TTS TTS models are actually dumb models. They need to know the language in which they want they have to uh generate speech. There are very few TTS models that can actually do two. So English is a big problem like the biggest problem that we'll face in India is English because people just effortlessly effortlessly switch between speaking English and Hindi. And so it was the other way around. When we were dealing with TTS models, we had to first intelligently figure out what the language was. The TTS model doesn't do that. And we had to make sure that the LM outputs text in a way that is very TTS friendly. Right? So there's a bunch of prompts in the LM on only how to teach it to interact with the TTS model. And if you change the TTS model, that's all gone. If you change the LLM, that's all gone. With audio to audio models, actually you do not need to specify what language output you want. Whatever language they're trained on. and u um if you come um uh if you meet me outside I'll demo how you can actually just ask googly to switch to Gujarati or Bengali and he'll do that. So the intelligence actually uh permeates to all levels and not just the LLM. So it's it was actually much easier for us and we actually uh the code base for speech to speech was like just 20% of what it was just because of all this glue code all this code switching stuff that we had to write. Uh >> very nice talk. Uh what about the video aspect? Are you also looking at that because I mean the picture of googly is this um monkey face and you know you want to animate uh and that's a very hard problem I'm sure. >> Yeah. So I did not want to make this talk about that problem but there's actually that's actually >> equally interesting is how we made the avatar happen. Uh so that's a diffusion based model which we have um which is not as scalable. So that's why we have it during live streams. We might have it for a few paid users. And what how it actually works is it takes in voice the model and it doesn't actually generate the entire video. It just has a few coordinates on the face that it tries to predict uh that will look natural. And so it's not full video generation. It's only animating the face in a way that it lip syncs to the audio. Uh but that will be like completely another talk. And that's that's fairly new technology. Um there are a few people doing it but even we haven't figured out how to scale it to you know um 10,000 concurrent users. Hey R, great talk first of all. Um, so I would like to know like how did you handle dialects like um I worked on voice box a year ago and there were like dialects from tier three cities uh say um somewhere in Gujarat people would just mix Gujarati and and that would not be standard Gujarati. could be like uh very like specific to a region like um I remember like we uh we didn't get a good response that time like uh with the Google models speech to speech models I don't know what's the scene now but uh yeah did you >> I'm sure I'm sure that hasn't changed uh we actually did not go for solving uh dialects so I wouldn't know I I'm I'm pretty sure that model is still not to a place where it can figure out dialects of Gujarati it can speak Gujati well but no dialect. So we um we never thought about solving that problem and I'm sure that there's not enough data for even Google to solve that problem or open AI. >> Okay. And one more question like uh how do you handle interruptions? Like sometimes when uh a natural like human interacts with somebody they would just affirm something like they'll say okay but it's not an interruption. It's just like they are affirming something and u usually voice bots would just stop there. they'll send the request back to the model and then come back and there is a gap there. >> Yeah, you're right. That's a that's a a big problem. And by that is a problem is because in a stacked approach you have the VA the voice activity detector which actually does the uh interruption handling uh or the baron as it's called. And the voice activity detector is a dumb model. It just looks for human voice. So anytime it feels there's some human voice, it'll stop uh the model. Um, it'll also wait for silence to decide that the human's turn is over. When I'm talking to you, you can tell from my tone that I'm done speaking. You don't have to wait for silence. And you can tell from what I'm saying that uh I'm not interrupting you. So I'm just maybe huh that so the solution to that is not having a voice activity detector and having the full duplex architecture where audio frames are streamed uh from you to the model and from the model to you continuously uh and the model the intelligence lies on the model of when it wants to interrupt and when you have interrupted. So I don't think the VA uh although there are some very smart VADs now I don't think using a VA is going to get there and that's why I think the full duplex thing is actually what solves that >> but is it solved like uh it like when I like I'm not in this domain as of now like have left it >> no it's not it's it's not it's not solved um what is solved is when I stop speaking the models have gotten really good at figuring out that I've stopped speaking but the interruption part is not at the place that where you said like for the model to figure out uh if I want to interrupt or this I think I think that's pretty subtle. A lot of humans also might get that wrong. So the models are not there yet but they're good at figuring out when I'm done speaking. Um [clears throat] so uh uh so thank you for the talk. I I have a question before we wrap up. Right. So you presented a bunch of statistics. uh one thing that I'm wondering about is what is the average like what was the conversation duration and I'll tell you why what I'm leading to which is what happens when in a like you know a full diplex voice model uh what happens when the context window starts filling up because in a you know in a in a chatbot well it can do compaction and then something is lost now what would that look like in uh in a voice model did you run into that >> yeah so That's a that's a good point. And in general, these models, as I said, these models are not as good as the LLMs. They don't have a million uh tok in context window. In general, they'll have like maybe 100k, 128k. And so that's a big problem. But and we thought that would be a big problem. But as it turned out, uh, to keep a healthy rich conversation going, you can pretty much keep the last five to seven turns there and you can evict everything else and the and you would actually not know that's happened, right? So we actually had >> that's what you found out. >> Yeah, that's what we found out. Like we found that you you need to have the complete history of the interaction. That's how the richness will come out. But we found out even if we kept the last you know maybe 10 turns and you need to understand that each turn is actually very short right when you're talking to someone it's actually very few tokens right so the context the system prompt actually ends up being the biggest culprit here but when you're talking uh short snappy sentences that's actually very less when you're texting and typing and you have tool calls and everything else that's when the context window bloats right and we don't we are not letting this uh model the interaction model do any tool calls Right. >> I see. Okay. But I I that's interesting because I think you uh on your slides you had uh you know where you would delegate to a tool call. Yeah. In all generality I would expect there to be tool calls right and so when those tool calls written because you know you want to you want to respond or answer uh and so those tool calls would also but you're right. Okay. So speech in general, I think what you're saying is that speech as a modality um uh turns are short and the context window doesn't fill up as fast as one might as as probably you expected. >> Yeah. Yeah. It doesn't fill up and like uh we would like to think that you know when we talk to each other we're actually tracking like the entire thing but we found out through experiments like if you keep the last 10 turns that's more than enough. You don't even need to summarize what was before. We tried that as well but it did not add to any quality. >> Right. Right. Okay. That's interesting because I thought that you know the the impact of what what uh you know what uh desktop tools call compaction would be sort of disastrous because that's always lossy right. Yeah. >> Uh so okay very interesting. Thank you D. Thank you for that talk and uh thank you for um I think great talk and great work. Like before that slide came up, I was like, "Oh, Chad G open AI up announced this like just 3 weeks back and they talked about the same problem." So great work. Kudos to the team that did this. Thank you. [snorts]