<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Felona Voice</title>
    <description>The latest articles on DEV Community by Felona Voice (@feleona_voice).</description>
    <link>https://dev.to/feleona_voice</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4145563%2Fa148cbfc-135f-4e5c-9b71-f01c06b2e533.png</url>
      <title>DEV Community: Felona Voice</title>
      <link>https://dev.to/feleona_voice</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/feleona_voice"/>
    <language>en</language>
    <item>
      <title>Voice AI Latency &amp; Cost: Felona Voice Cuts LLM Inference by 95% with JEV</title>
      <dc:creator>Felona Voice</dc:creator>
      <pubDate>Sun, 27 Sep 2026 15:34:59 +0000</pubDate>
      <link>https://dev.to/feleona_voice/voice-ai-latency-cost-felona-voice-cuts-llm-inference-by-95-with-jev-3nfd</link>
      <guid>https://dev.to/feleona_voice/voice-ai-latency-cost-felona-voice-cuts-llm-inference-by-95-with-jev-3nfd</guid>
      <description>&lt;p&gt;The promise of natural, low-latency voice AI has long been tantalizing, yet often constrained by the realities of cost and performance. Traditional voice agents, relying heavily on large language models (LLMs) for conversational intelligence, frequently fall short of real-time expectations and rack up significant infrastructure bills. But what if there was a better way? An open-source, TypeScript-native framework that delivers sub-10ms intent routing with zero token cost and zero hallucinations?&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;Felona Voice&lt;/strong&gt;, a groundbreaking open-source project that’s redefining the economics and performance of voice AI. At its core, Felona Voice leverages &lt;strong&gt;Joint Embedding Vectors (JEV)&lt;/strong&gt; to achieve neural routing that’s not just fast, but virtually free for structured conversational turns. Let's dive deep into why this innovation is a game-changer for your next voice AI project.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Latency &amp;amp; Cost Conundrum of Traditional LLM-First Voice Agents
&lt;/h3&gt;

&lt;p&gt;Most modern voice agents follow a similar, expensive, and slow pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Speech-to-Text (STT)&lt;/strong&gt;: User's speech is converted to text (e.g., Deepgram, Whisper).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;LLM Inference&lt;/strong&gt;: The transcribed text is sent to an LLM (e.g., GPT-4o, Claude 3 Opus) to understand intent, generate a response, or decide the next action.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Text-to-Speech (TTS)&lt;/strong&gt;: The LLM's text output is converted back into natural-sounding speech (e.g., ElevenLabs, Cartesia).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While powerful for open-ended dialog, this LLM-centric approach introduces several critical bottlenecks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;High Latency&lt;/strong&gt;: Each step involves network round-trips and significant processing time. STT, LLM inference (especially for larger models or longer responses), and TTS can easily accumulate to 500ms, 800ms, or even 1200ms+ per conversational turn. This makes for a frustrating, unnatural user experience.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Exorbitant Costs&lt;/strong&gt;: LLM API calls are priced per token. A single conversational turn, including input and output tokens, can cost anywhere from $0.02 to $0.06 or more, depending on the model and token count. These costs scale linearly and rapidly become prohibitive for high-volume applications.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Hallucination Risk&lt;/strong&gt;: LLMs are probabilistic text generators. While incredibly capable, they can &lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://felona-voice.mohitjoe.tech/blog/voice-ai-cost-latency-felona-voice-jev" rel="noopener noreferrer"&gt;felona-voice.mohitjoe.tech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Unlock Sub-10ms Voice AI: Real-time Agents with TypeScript &amp; Felona Voice</title>
      <dc:creator>Felona Voice</dc:creator>
      <pubDate>Sun, 27 Sep 2026 15:32:24 +0000</pubDate>
      <link>https://dev.to/feleona_voice/unlock-sub-10ms-voice-ai-real-time-agents-with-typescript-felona-voice-356</link>
      <guid>https://dev.to/feleona_voice/unlock-sub-10ms-voice-ai-real-time-agents-with-typescript-felona-voice-356</guid>
      <description>&lt;p&gt;The dream of truly real-time, human-like voice agents has long been hampered by one critical bottleneck: latency. Traditional voice AI systems, heavily reliant on large language models (LLMs) for conversational understanding and response generation, introduce significant delays. We're talking 500ms to 1200ms or more per conversational turn, creating an awkward, unnatural experience that frustrates users and limits adoption.&lt;/p&gt;

&lt;p&gt;But what if you could eliminate that latency? What if your voice agent could understand intent and react in mere milliseconds, without sacrificing accuracy or breaking the bank? Enter &lt;strong&gt;Felona Voice&lt;/strong&gt; – an innovative, open-source TypeScript framework designed to build ultra-low-latency voice agents that feel genuinely real-time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Latency &amp;amp; Cost Problem with Traditional LLM Voice Agents
&lt;/h2&gt;

&lt;p&gt;Let's face it: LLMs are powerful, but they're not built for instant, sub-10ms decision-making in high-volume voice interactions. Here's why traditional approaches struggle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;High Latency:&lt;/strong&gt; Every conversational turn often involves an API call to a remote LLM. This introduces network latency, processing time on the LLM server, and token generation time. The combined effect easily pushes response times into the hundreds of milliseconds, creating noticeable pauses.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Exorbitant Costs:&lt;/strong&gt; Each LLM API call costs money, typically per token. At scale, with thousands or millions of interactions, these costs quickly skyrocket, making real-time voice AI a luxury few can afford.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Hallucination Risk:&lt;/strong&gt; LLMs are probabilistic by nature. While incredibly creative, they can sometimes generate inaccurate or off-topic responses, leading to frustrating user experiences and a lack of control for developers.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Rigid Static Graphs:&lt;/strong&gt; On the other end of the spectrum, hardcoded decision trees are fast and deterministic but too brittle. They break down the moment a user deviates slightly from the expected script, leading to dead ends and frustrated users.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Felona Voice: The Sub-10ms Revolution Powered by JEVs and VoiceGraph
&lt;/h2&gt;

&lt;p&gt;Felona Voice tackles these challenges head-on with a revolutionary approach: &lt;strong&gt;Joint Embedding Vectors (JEV)&lt;/strong&gt; combined with intelligent, stateful conversational transition graphs, which we call &lt;strong&gt;VoiceGraph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of sending every user utterance to an LLM for interpretation, Felona Voice leverages JEV similarity matching. Here's the magic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Intent Mapping:&lt;/strong&gt; Your agent's defined actions and their descriptions are transformed into high-dimensional embedding vectors (JEVs).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Real-time Matching:&lt;/strong&gt; When a user speaks, their transcribed utterance is also converted into a JEV. Felona Voice then performs ultra-fast similarity matching between the user's utterance JEV and your agent's action JEVs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Sub-10ms Decisions:&lt;/strong&gt; This similarity matching operation is incredibly efficient, happening in &lt;strong&gt;sub-10ms (typically ~5ms)&lt;/strong&gt;. It's an in-memory, local computation that requires zero external API calls for intent decision-making.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Zero Hallucinations:&lt;/strong&gt; Because decisions are based on deterministic similarity matching against predefined actions, there's no room for LLM hallucinations. Your agent will always follow the intended conversational flow.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dynamic VoiceGraph:&lt;/strong&gt; The VoiceGraph isn't a rigid, static decision tree. It's a stateful graph that uses JEV similarity to dynamically decide the next best action, allowing for natural transitions and graceful handling of off-script speech, far beyond what traditional static graphs can offer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Stark Reality: Traditional vs. Felona Voice
&lt;/h3&gt;

&lt;p&gt;Let's put it into perspective with a direct comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Traditional Voice Agent (LLM Loop)&lt;/th&gt;
&lt;th&gt;Felona Voice (JEV + VoiceGraph)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Intent Decision Latency&lt;/td&gt;
&lt;td&gt;850ms – 1,800ms&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;~5ms&lt;/strong&gt; (Sub-10ms)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inference Cost / Turn&lt;/td&gt;
&lt;td&gt;$0.02 – $0.06+ / turn&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$0.00&lt;/strong&gt; / turn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hallucination Risk&lt;/td&gt;
&lt;td&gt;High (probabilistic text tokens)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;0%&lt;/strong&gt; (deterministic transition graph)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network Dependency&lt;/td&gt;
&lt;td&gt;Requires constant cloud LLM API&lt;/td&gt;
&lt;td&gt;Local/In-memory embedding matching&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Cutting Infrastructure Bills by 90-95%
&lt;/h3&gt;

&lt;p&gt;The cost savings with Felona Voice are not just significant; they're transformative. Let's do the math for the intent decision component alone:&lt;/p&gt;

&lt;p&gt;Consider an application scaling to 1,000,000 conversational turns per month. If each turn involves an LLM call for intent detection at a conservative average of $0.02 per turn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Traditional LLM Agent:&lt;/strong&gt; 1,000,000 turns * $0.02/turn = &lt;strong&gt;$20,000 per month&lt;/strong&gt; for intent decision alone.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Felona Voice Agent:&lt;/strong&gt; 1,000,000 turns * $0.00/turn = &lt;strong&gt;$0 per month&lt;/strong&gt; for intent decision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This translates to a &lt;strong&gt;100% reduction&lt;/strong&gt; in LLM costs specifically for intent detection. While you still need ASR (Speech-to-Text) and TTS (Text-to-Speech) services (which Felona Voice integrates seamlessly), by eliminating the most expensive and slowest part of the conversational loop – the LLM-based intent inference – you can realistically cut your overall voice AI infrastructure bills by 90-95% when scaling to thousands or millions of calls. This is a game-changer for businesses looking to deploy cost-effective, high-performance voice agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer Experience: Fluent and Powerful in TypeScript
&lt;/h2&gt;

&lt;p&gt;Felona Voice is built with developers in mind, offering an incredibly fluent and intuitive API in TypeScript. You can define complex conversational flows with ease:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createAgent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;felona-voice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ConciergeBot&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are an intelligent voice concierge for a luxury hotel.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;book_room&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Book a hotel room&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;roomType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;roomType&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;roomType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Booking a &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;roomType&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; for you.`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What type of room are you looking for?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;check_inquiry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Check reservation status or details&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;reservationId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reservationId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;reservationId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Checking details for reservation &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reservationId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please provide your reservation ID.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'm sorry, I couldn't understand that. Can you please rephrase or ask about booking a room or checking a reservation?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;runAgent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: I want to book a suite.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I want to book a suite.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "Booking a suite for you."&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: What's my reservation status?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What's my reservation status?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "Please provide your reservation ID."&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: My reservation ID is 12345.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My reservation ID is 12345.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "Checking details for reservation 12345."&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: Tell me a joke.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Tell me a joke.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "I'm sorry, I couldn't understand that. Can you please rephrase or ask about booking a room or checking a reservation?"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;runAgent&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key developer benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Pluggable Audio Pipelines:&lt;/strong&gt; Felona Voice is designed for flexibility, allowing you to integrate with various audio processing services like WebSockets, WebRTC, Deepgram, Whisper, ElevenLabs, and Cartesia, ensuring you can use your preferred ASR/TTS providers.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Zero External API Keys for Local Testing:&lt;/strong&gt; Develop and test your agent locally without needing to hit costly external LLM APIs. Intent routing is deterministic and works entirely in-memory.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;TypeScript Native:&lt;/strong&gt; Leverage the power of TypeScript for type safety, better tooling, and improved maintainability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with Felona Voice
&lt;/h2&gt;

&lt;p&gt;Ready to build your own ultra-low-latency voice agent? Getting started is incredibly simple:&lt;/p&gt;

&lt;p&gt;First, install the package via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;felona-voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, create your first agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createAgent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;felona-voice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;simpleAgent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GreetingBot&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are a friendly bot that greets users.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;greet_user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Say hello to the user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;there&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Hello &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;! How can I help you today?`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I didn't quite catch that. Could you say hello?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;testSimpleAgent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: Hi, my name is Alice.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;simpleAgent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi, my name is Alice.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "Hello Alice! How can I help you today?"&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: Just saying hi.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;simpleAgent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Just saying hi.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "Hello there! How can I help you today?"&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: What's the weather?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;simpleAgent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What's the weather?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bot: &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: "I didn't quite catch that. Could you say hello?"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;testSimpleAgent&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This basic example demonstrates how quickly you can define actions and their corresponding responses, setting up a robust conversational flow without the typical LLM overhead.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of Real-Time Voice AI is Here
&lt;/h2&gt;

&lt;p&gt;Felona Voice isn't just another framework; it's a paradigm shift. By moving intent decision-making from slow, expensive, and probabilistic LLM calls to ultra-fast, deterministic, in-memory JEV similarity matching, Felona Voice unlocks true real-time voice AI.&lt;/p&gt;

&lt;p&gt;Imagine customer service bots that respond instantly, gaming NPCs that react without delay, or smart assistants that feel genuinely present. This is the future Felona Voice enables, today. It's about building production-ready voice AI that is not only performant and reliable but also incredibly cost-effective at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved and Start Building!
&lt;/h2&gt;

&lt;p&gt;Join the revolution in real-time voice AI. Felona Voice is open-source, community-driven, and ready for your contributions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  🌟 &lt;strong&gt;Star the repository on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/mohitjoer/felona_voice" rel="noopener noreferrer"&gt;https://github.com/mohitjoer/felona_voice&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  📦 &lt;strong&gt;Install via npm:&lt;/strong&gt; &lt;code&gt;npm install felona-voice&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  📖 &lt;strong&gt;Explore full documentation:&lt;/strong&gt; &lt;a href="https://felona-voice.mohitjoe.tech/docs" rel="noopener noreferrer"&gt;https://felona-voice.mohitjoe.tech/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start building your sub-10ms voice agent today and experience the difference true real-time AI makes!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://felona-voice.mohitjoe.tech/blog/unlock-sub-10ms-voice-ai-typescript-felona-voice" rel="noopener noreferrer"&gt;felona-voice.mohitjoe.tech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Deterministic Voice AI: Sub-10ms &amp; Hallucination-Free with Felona Voice</title>
      <dc:creator>Felona Voice</dc:creator>
      <pubDate>Sun, 27 Sep 2026 15:28:38 +0000</pubDate>
      <link>https://dev.to/feleona_voice/deterministic-voice-ai-sub-10ms-hallucination-free-with-felona-voice-509h</link>
      <guid>https://dev.to/feleona_voice/deterministic-voice-ai-sub-10ms-hallucination-free-with-felona-voice-509h</guid>
      <description>&lt;p&gt;The promise of natural, real-time conversational AI has long been tempered by the realities of latency and unpredictable responses. Traditional voice bots, often reliant on large language models (LLMs) for decision-making, grapple with response times upwards of 500ms and the notorious issue of 'hallucinations' – generating plausible but incorrect information. Hardcoded conversational flows, while deterministic, are too rigid for the organic nature of human speech, breaking down at the slightest deviation. This is where Felona Voice steps in, offering a revolutionary approach to building ultra-low-latency, hallucination-free voice agents.&lt;/p&gt;

&lt;p&gt;Felona Voice, an open-source TypeScript framework, redefines the landscape of voice AI by introducing &lt;strong&gt;VoiceGraph&lt;/strong&gt;, a stateful conversational transition graph powered by &lt;strong&gt;Joint Embedding Vectors (JEV)&lt;/strong&gt;. This innovative combination allows for neural, yet deterministic, routing of conversational turns in &lt;strong&gt;sub-10ms&lt;/strong&gt;, effectively eliminating the trade-off between flexibility and reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unpredictability of Pure Prompt-Based Voice Bots
&lt;/h2&gt;

&lt;p&gt;Before diving into Felona Voice's solution, let's understand the challenges with existing paradigms:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Pure LLM-Based Routing&lt;/strong&gt;: While powerful for understanding context and generating nuanced responses, LLMs introduce significant latency. Each conversational turn requires processing, which can take 500ms to 1200ms or more. This delay creates an unnatural, disjointed user experience. Furthermore, LLMs are known to 'hallucinate,' fabricating answers or taking unexpected conversational paths, making them unsuitable for mission-critical applications requiring precision.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Hardcoded Static Graphs&lt;/strong&gt;: These offer determinism and low latency, as every path is explicitly defined. However, they are inherently inflexible. Any deviation from the script, a common occurrence in natural human conversation, can break the flow, leading to frustrating dead ends or generic fallback responses. They lack the intelligence to interpret intent beyond exact keyword matches.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both approaches fall short of delivering the seamless, reliable, and real-time voice interactions users expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Felona Voice's Innovation: VoiceGraph with Neural Transitions
&lt;/h2&gt;

&lt;p&gt;Felona Voice addresses these limitations head-on with its core innovation: &lt;strong&gt;VoiceGraph&lt;/strong&gt; driven by &lt;strong&gt;Joint Embedding Vectors (JEV)&lt;/strong&gt;. Imagine a sophisticated state machine where transitions between states aren't just hardcoded rules, but intelligent, neural decisions made in milliseconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Joint Embedding Vectors (JEV): The Brain Behind the Speed
&lt;/h3&gt;

&lt;p&gt;At the heart of Felona Voice's ultra-low latency is the concept of Joint Embedding Vectors. Instead of relying on token-by-token LLM inference for every decision, Felona Voice pre-computes semantic embeddings for all possible actions and user intents defined within your agent. When a user speaks, their utterance is quickly embedded into the same vector space. Felona Voice then performs a lightning-fast &lt;strong&gt;similarity match&lt;/strong&gt; between the user's intent embedding and the embeddings of all available actions.&lt;/p&gt;

&lt;p&gt;This similarity matching allows Felona Voice to decide the next action in &lt;strong&gt;approximately 5ms&lt;/strong&gt;. This is not just faster; it's a paradigm shift. Zero token latency means no waiting for LLMs to generate text or process complex prompts for routing decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  VoiceGraph: Stateful and Deterministic Conversations
&lt;/h3&gt;

&lt;p&gt;VoiceGraph acts as the architectural blueprint for your conversational flow. It's a state machine where each state represents a point in the conversation, and transitions are governed by the JEV similarity matching. This provides the best of both worlds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Determinism&lt;/strong&gt;: By mapping user intent directly to predefined actions via JEV, Felona Voice ensures that the agent always responds predictably. No more hallucinations or unexpected tangents.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Flexibility&lt;/strong&gt;: Unlike rigid static graphs, VoiceGraph's transitions are "neural." They understand semantic meaning, allowing for natural variations in user speech to trigger the correct action without explicit keyword matching.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Statefulness&lt;/strong&gt;: The VoiceGraph maintains the conversational state, enabling complex multi-turn interactions while always knowing where it is in the flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's compare the approaches:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Pure LLM Routing&lt;/th&gt;
&lt;th&gt;Hardcoded Static Graph&lt;/th&gt;
&lt;th&gt;Felona Voice (JEV + VoiceGraph)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Decision Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (500ms - 1200ms+)&lt;/td&gt;
&lt;td&gt;Low (hardcoded lookups)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Ultra-low (~5ms)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hallucinations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frequent, unpredictable&lt;/td&gt;
&lt;td&gt;None (if matched)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;None (deterministic)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (but unpredictable)&lt;/td&gt;
&lt;td&gt;Low (rigid, breaks easily)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;High (neural understanding)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Determinism&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;High&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (token usage)&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Low (zero token latency)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Developer Effort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Prompt engineering&lt;/td&gt;
&lt;td&gt;Extensive rule definition&lt;/td&gt;
&lt;td&gt;Fluent API, intent-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Building Hallucination-Free Agents with Felona Voice's Fluent API
&lt;/h2&gt;

&lt;p&gt;Felona Voice is designed with developer experience at its core. Its fluent builder API in TypeScript makes defining complex conversational agents intuitive and powerful. You can define system instructions, specific actions, and fallback behaviors with ease.&lt;/p&gt;

&lt;p&gt;To get started, simply install the package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;felona-voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s a practical example of building a simple concierge agent that can book a table or provide general assistance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createAgent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;felona-voice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ConciergeAgent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are an intelligent voice concierge for a high-end restaurant. Your primary role is to assist with reservations and answer common inquiries.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;book_table&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Book a restaurant reservation for a specific time and number of guests. Examples: 'I want to book a table for two tonight', 'Can I get a reservation for 7 PM on Saturday for four people?'&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// In a real application, you'd integrate with a booking system here.&lt;/span&gt;
      &lt;span class="c1"&gt;// ctx.transcript would contain the user's full utterance.&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Booking request received: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;transcript&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Certainly, I've noted your request to book a table. Please provide your preferred time and number of guests.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;check_menu&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Inquire about the menu or specific dishes. Examples: 'What's on the menu?', 'Do you have vegetarian options?', 'Tell me about your specials.'&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Menu inquiry received: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;transcript&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Our menu features a delightful selection of seasonal dishes. We offer vegetarian, vegan, and gluten-free options. Would you like to hear about today's specials?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'm sorry, I didn't quite catch that. Could you please rephrase your request, or are you looking to book a table or inquire about the menu?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;testAgent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;--- Testing Agent Interactions ---&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Test case 1: Booking intent&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'd like to book a table for two this evening.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`User: I'd like to book a table for two this evening.`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: Reply from 'book_table' action&lt;/span&gt;

  &lt;span class="c1"&gt;// Test case 2: Menu inquiry intent&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What kind of food do you serve?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`User: What kind of food do you serve?`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply2&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: Reply from 'check_menu' action&lt;/span&gt;

  &lt;span class="c1"&gt;// Test case 3: Unhandled intent, triggers fallback&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What's the weather like today?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`User: What's the weather like today?`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply3&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: Fallback message&lt;/span&gt;

  &lt;span class="c1"&gt;// Test case 4: Another booking intent, slightly different phrasing&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Can I reserve a spot for four on Friday?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`User: Can I reserve a spot for four on Friday?`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply4&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Expected: Reply from 'book_table' action&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;testAgent&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;createAgent("ConciergeAgent")&lt;/code&gt; initializes your voice agent with a unique name.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;.system(...)&lt;/code&gt; provides the overarching context and persona for your agent.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;.action("book_table", "description", async (ctx) =&amp;gt; { ... })&lt;/code&gt; defines a specific, executable action. The second argument is a detailed natural language description of what this action handles, which is crucial for JEV similarity matching. This description helps Felona Voice understand a wide range of user phrasing that maps to &lt;code&gt;book_table&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;.fallback(...)&lt;/code&gt; specifies the response when no defined action matches the user's intent, ensuring a graceful degradation rather than a confused silence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Felona Voice's deterministic routing means that as long as the user's intent semantically aligns with an &lt;code&gt;.action&lt;/code&gt;'s description, the correct function will be invoked. This eliminates the unpredictability and hallucinations common in pure LLM-driven systems while retaining the flexibility to understand natural language.&lt;/p&gt;

&lt;p&gt;Furthermore, Felona Voice supports pluggable audio pipelines for various services like WebSockets, WebRTC, Deepgram, Whisper, ElevenLabs, and Cartesia. For local testing and deterministic routing, you don't even need external API keys, making development and iteration incredibly fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Impact of Sub-10ms Decision Making
&lt;/h2&gt;

&lt;p&gt;The ability to make conversational decisions in sub-10ms fundamentally changes the user experience. It enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Truly Duplex Conversations&lt;/strong&gt;: Users don't have to wait for the bot to finish processing before speaking again, mirroring human-to-human interaction.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Highly Responsive Interfaces&lt;/strong&gt;: Applications can react instantly to user commands, making voice control feel natural and intuitive.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;New Interaction Paradigms&lt;/strong&gt;: Real-time gaming, high-stakes customer service, and assistive technologies can leverage this speed for experiences previously impossible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Felona Voice isn't just about speed; it's about reliability. By combining the semantic understanding of neural networks (via JEV) with the predictability of state machines (VoiceGraph), it offers a robust solution for building the next generation of voice AI applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Felona Voice Community!
&lt;/h2&gt;

&lt;p&gt;We believe Felona Voice represents a significant leap forward in voice AI development, offering a powerful, open-source solution to long-standing challenges. We invite you to explore its capabilities and become a part of our growing community.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  🌟 &lt;strong&gt;Star the repository on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/mohitjoer/felona_voice" rel="noopener noreferrer"&gt;https://github.com/mohitjoer/felona_voice&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  📦 &lt;strong&gt;Install via npm:&lt;/strong&gt; &lt;code&gt;npm install felona-voice&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  📖 &lt;strong&gt;Explore full documentation:&lt;/strong&gt; &lt;a href="https://felona-voice.mohitjoe.tech/docs" rel="noopener noreferrer"&gt;https://felona-voice.mohitjoe.tech/docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start building your ultra-low-latency, hallucination-free voice agents today with Felona Voice!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://felona-voice.mohitjoe.tech/blog/deterministic-voice-ai-felona-voice-no-hallucinations" rel="noopener noreferrer"&gt;felona-voice.mohitjoe.tech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>Why 500ms Latency Kills Voice AI: Inside Felona Voice's Sub-10ms Neural Routing Engine</title>
      <dc:creator>Felona Voice</dc:creator>
      <pubDate>Sun, 27 Sep 2026 15:25:30 +0000</pubDate>
      <link>https://dev.to/feleona_voice/why-500ms-latency-kills-voice-ai-inside-felona-voices-sub-10ms-neural-routing-engine-pac</link>
      <guid>https://dev.to/feleona_voice/why-500ms-latency-kills-voice-ai-inside-felona-voices-sub-10ms-neural-routing-engine-pac</guid>
      <description>&lt;p&gt;Imagine talking to a voice assistant, and after every sentence, there's a noticeable, awkward pause. That frustrating 500ms to 1200ms delay isn't just an inconvenience; it's a fundamental flaw that &lt;em&gt;kills&lt;/em&gt; the natural flow of conversation, making voice AI feel clunky and unintelligent. This is the inherent challenge of relying solely on large language models (LLMs) for conversational turn-taking.&lt;/p&gt;

&lt;p&gt;At the heart of this problem is the token generation loop. Each time a user speaks, the audio is transcribed, sent to an LLM, the LLM processes the prompt, generates a response (token by token), and then that response is converted back into audio. This entire cycle, while impressive for its intelligence, is a sequential bottleneck that introduces unacceptable latency for real-time voice interactions.&lt;/p&gt;

&lt;h3&gt;
  
  
  The LLM Latency Trap: Why Traditional Voice AI Stumbles
&lt;/h3&gt;

&lt;p&gt;Traditional voice AI applications often follow a pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Speech-to-Text (STT):&lt;/strong&gt; User speaks, audio is converted to text.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;LLM Inference:&lt;/strong&gt; The text and conversation history are sent to an LLM.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;LLM Response Generation:&lt;/strong&gt; The LLM deliberates, token-by-token, to formulate a reply or decide on an action. This is the primary source of latency, often ranging from 500ms to well over a second for complex prompts.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Action/Response:&lt;/strong&gt; Based on the LLM's output, an action is triggered, or a Text-to-Speech (TTS) engine generates an audio reply.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While LLMs excel at understanding nuance and generating creative text, their generative nature is a liability for &lt;em&gt;real-time decision-making&lt;/em&gt; in voice. The milliseconds add up, creating a disjointed experience that feels more like a walkie-talkie conversation than a natural human interaction. Furthermore, relying on LLMs for routing can lead to unpredictable behavior and hallucinations, as their responses aren't always deterministic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enter Felona Voice: Sub-10ms Neural Routing with Joint Embedding Vectors (JEV)
&lt;/h3&gt;

&lt;p&gt;This is where &lt;strong&gt;Felona Voice&lt;/strong&gt;, an open-source, ultra-low-latency voice agent framework for TypeScript, dramatically changes the game. Felona Voice tackles the latency problem head-on by separating the &lt;em&gt;routing&lt;/em&gt; (deciding what to do next) from the &lt;em&gt;generative&lt;/em&gt; aspects of AI. Its core innovation lies in using &lt;strong&gt;Joint Embedding Vectors (JEV)&lt;/strong&gt; with stateful conversational transition graphs, which we call &lt;strong&gt;VoiceGraph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of sending every utterance to an LLM for interpretation and decision-making, Felona Voice pre-computes semantic embeddings for all defined actions and fallback phrases. When a user speaks, the input utterance is also converted into an embedding. Felona Voice then performs a lightning-fast &lt;strong&gt;similarity matching&lt;/strong&gt; against its pre-computed JEVs.&lt;/p&gt;

&lt;p&gt;This JEV-powered routing allows Felona Voice to decide the next action in an astonishing &lt;strong&gt;sub-10ms (typically around 5ms)&lt;/strong&gt;. This is not just faster; it's an order of magnitude faster than traditional LLM-based routing, effectively eliminating token latency and the associated conversational pauses. Because the routing is based on semantic similarity to predefined actions, it also offers &lt;strong&gt;zero hallucinations&lt;/strong&gt; for decision-making.&lt;/p&gt;

&lt;h3&gt;
  
  
  How JEV Transforms Voice UX:
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Traditional LLM-based Routing&lt;/th&gt;
&lt;th&gt;Felona Voice (JEV-powered)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Decision Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;500ms - 1200ms+&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~5ms (Sub-10ms)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Token Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (waiting for token generation)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Zero&lt;/strong&gt; (no tokens generated for routing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hallucinations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Possible (LLM may misinterpret/invent)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Zero&lt;/strong&gt; (deterministic similarity match)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Determinism&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (LLM can vary responses)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;High&lt;/strong&gt; (predictable routing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Resource Usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (constant LLM inference)&lt;/td&gt;
&lt;td&gt;Low (pre-computed embeddings, fast match)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Conversational Flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Disjointed, unnatural pauses&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Instant, natural, seamless&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Developer Experience: Fluent and Powerful
&lt;/h3&gt;

&lt;p&gt;Felona Voice is built with developers in mind, offering a fluent builder API in TypeScript that makes defining complex conversational flows intuitive. You define your agent's persona, its actions, and its fallback behaviors, and Felona Voice handles the ultra-fast routing.&lt;/p&gt;

&lt;p&gt;Let's look at a simple example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createAgent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;felona-voice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// 1. Define your agent with a system prompt and actions&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;conciergeAgent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Concierge&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are an intelligent voice concierge for a luxury hotel. Your goal is to assist guests with bookings and information.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;book_table&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Book a restaurant reservation for a guest. Keywords: restaurant, table, reservation, dine.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// In a real app, you'd integrate with a booking system&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Booking request received: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Certainly, I can book a table for you. What time and how many people?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;check_in&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Assist a guest with checking into the hotel. Keywords: check in, arrival, room key.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Check-in request received: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Welcome! Do you have a reservation number or a name?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'm sorry, I didn't quite catch that. Could you please rephrase or ask about booking a table or checking in?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// 2. Interact with the agent&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: Can I book a table for two tonight?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;conciergeAgent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Can I book a table for two tonight?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Agent: Certainly, I can book a table for you. What time and how many people?&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: I'd like to check into my room.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;conciergeAgent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'd like to check into my room.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Agent: Welcome! Do you have a reservation number or a name?&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User: What's the weather like?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;conciergeAgent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;interact&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What's the weather like?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Agent: I'm sorry, I didn't quite catch that...&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice how each &lt;code&gt;action&lt;/code&gt; is defined with a descriptive string that Felona Voice uses to generate the JEV. This string, combined with the &lt;code&gt;system&lt;/code&gt; prompt, allows the agent to semantically understand the user's intent with incredible speed and accuracy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pluggable Audio Pipelines &amp;amp; Local Testing
&lt;/h3&gt;

&lt;p&gt;Felona Voice isn't just about routing; it's a complete framework. It offers pluggable audio pipelines, allowing you to integrate seamlessly with various services like WebSockets, WebRTC, Deepgram, Whisper, ElevenLabs, and Cartesia. This flexibility ensures you can build voice agents tailored to your specific needs and infrastructure.&lt;/p&gt;

&lt;p&gt;Crucially, for local testing and deterministic routing, &lt;strong&gt;zero external API keys are needed&lt;/strong&gt;. You can rapidly prototype and test your conversational flows without incurring costs or relying on external services for the core routing logic. This makes development faster, more reliable, and more privacy-respecting.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Future of Voice AI is Instant
&lt;/h3&gt;

&lt;p&gt;The era of clunky, delayed voice interactions is coming to an end. Felona Voice represents a significant leap forward, offering a robust, open-source solution that prioritizes a natural, instant conversational experience. By leveraging Joint Embedding Vectors and VoiceGraph, it bypasses the inherent latency of LLM token generation for routing, delivering sub-10ms decision times that feel truly instantaneous.&lt;/p&gt;

&lt;p&gt;For developers building the next generation of voice assistants, customer service bots, or interactive voice experiences, Felona Voice provides the foundational technology to create applications that are not just smart, but also genuinely pleasant and efficient to use.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Ready to build ultra-low-latency voice agents?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🌟 Star the repository on GitHub: &lt;a href="https://github.com/mohitjoer/felona_voice" rel="noopener noreferrer"&gt;github.com/mohitjoer/felona_voice&lt;/a&gt;&lt;br&gt;
📦 Install via npm: &lt;code&gt;npm install felona-voice&lt;/code&gt;&lt;br&gt;
📖 Explore full documentation: &lt;a href="https://felona-voice.mohitjoe.tech/docs" rel="noopener noreferrer"&gt;felona-voice.mohitjoe.tech/docs&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://felona-voice.mohitjoe.tech/blog/felona-voice-sub-10ms-neural-routing-engine" rel="noopener noreferrer"&gt;felona-voice.mohitjoe.tech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>voiceai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
