[{"data":1,"prerenderedAt":772},["ShallowReactive",2],{"navigation":3,"\u002Frealtime\u002Faudio-input":220,"\u002Frealtime\u002Faudio-input-surround":767},[4,28,64,92,124,152,192],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Start","\u002Fstart","1.start\u002F1.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Overview",{"title":12,"path":13,"stem":14},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F2.quickstart",{"title":16,"path":17,"stem":18},"Authentication","\u002Fstart\u002Fauthentication","1.start\u002F3.authentication",{"title":20,"path":21,"stem":22},"SDKs","\u002Fstart\u002Fsdks","1.start\u002F4.sdks",{"title":24,"path":25,"stem":26},"Choose an API","\u002Fstart\u002Fchoose-an-api","1.start\u002F5.choose-an-api","i-lucide-rocket",{"title":29,"path":30,"stem":31,"children":32,"icon":63},"Realtime","\u002Frealtime","2.realtime\u002F1.index",[33,35,39,43,47,51,55,59],{"title":34,"path":30,"stem":31},"Realtime Overview",{"title":36,"path":37,"stem":38},"Realtime Quickstart","\u002Frealtime\u002Fquickstart","2.realtime\u002F2.quickstart",{"title":40,"path":41,"stem":42},"Connection Lifecycle","\u002Frealtime\u002Fconnection-lifecycle","2.realtime\u002F3.connection-lifecycle",{"title":44,"path":45,"stem":46},"Audio Input","\u002Frealtime\u002Faudio-input","2.realtime\u002F4.audio-input",{"title":48,"path":49,"stem":50},"Transcript Lifecycle","\u002Frealtime\u002Ftranscript-lifecycle","2.realtime\u002F5.transcript-lifecycle",{"title":52,"path":53,"stem":54},"Realtime Translation","\u002Frealtime\u002Frealtime-translation","2.realtime\u002F6.realtime-translation",{"title":56,"path":57,"stem":58},"Session Configuration","\u002Frealtime\u002Fsession-configuration","2.realtime\u002F7.session-configuration",{"title":60,"path":61,"stem":62},"Handling Interruptions & Silence","\u002Frealtime\u002Finterruptions-silence","2.realtime\u002F8.interruptions-silence","i-lucide-radio",{"title":65,"path":66,"stem":67,"children":68,"icon":91},"Recorded","\u002Frecorded","3.recorded\u002F1.index",[69,71,75,79,83,87],{"title":70,"path":66,"stem":67},"Recorded Overview",{"title":72,"path":73,"stem":74},"Transcribe Audio","\u002Frecorded\u002Ftranscribe-audio","3.recorded\u002F2.transcribe-audio",{"title":76,"path":77,"stem":78},"Timestamps & Speakers","\u002Frecorded\u002Ftimestamps-speakers","3.recorded\u002F3.timestamps-speakers",{"title":80,"path":81,"stem":82},"Subtitles","\u002Frecorded\u002Fsubtitles","3.recorded\u002F4.subtitles",{"title":84,"path":85,"stem":86},"Recorded Translation","\u002Frecorded\u002Ftranslation","3.recorded\u002F5.translation",{"title":88,"path":89,"stem":90},"Structured Results","\u002Frecorded\u002Fstructured-results","3.recorded\u002F6.structured-results","i-lucide-file-audio",{"title":93,"path":94,"stem":95,"children":96,"icon":123},"Concepts","\u002Fconcepts","4.concepts\u002F1.index",[97,99,103,107,111,115,119],{"title":98,"path":94,"stem":95},"Voice Context Layer",{"title":100,"path":101,"stem":102},"Stable vs. Partial Text","\u002Fconcepts\u002Fstable-vs-partial-text","4.concepts\u002F2.stable-vs-partial-text",{"title":104,"path":105,"stem":106},"StableStream","\u002Fconcepts\u002Fstablestream","4.concepts\u002F3.stablestream",{"title":108,"path":109,"stem":110},"Context-Aware Processing","\u002Fconcepts\u002Fcontext-aware-processing","4.concepts\u002F4.context-aware-processing",{"title":112,"path":113,"stem":114},"Understanding Latency","\u002Fconcepts\u002Flatency","4.concepts\u002F5.latency",{"title":116,"path":117,"stem":118},"Live Translation","\u002Fconcepts\u002Flive-translation","4.concepts\u002F6.live-translation",{"title":120,"path":121,"stem":122},"Trinity Engine","\u002Fconcepts\u002Ftrinity-engine","4.concepts\u002F7.trinity-engine","i-lucide-brain",{"title":125,"path":126,"stem":127,"children":128,"icon":151},"Guides","\u002Fguides","5.guides\u002F1.index",[129,131,135,139,143,147],{"title":130,"path":126,"stem":127},"Browser Live Captions",{"title":132,"path":133,"stem":134},"Server-side Streaming","\u002Fguides\u002Fserver-side-streaming","5.guides\u002F2.server-side-streaming",{"title":136,"path":137,"stem":138},"Build a Stable Caption UI","\u002Fguides\u002Fstable-caption-ui","5.guides\u002F3.stable-caption-ui",{"title":140,"path":141,"stem":142},"Build Live Translation","\u002Fguides\u002Flive-translation","5.guides\u002F4.live-translation",{"title":144,"path":145,"stem":146},"Save a Transcript","\u002Fguides\u002Fsave-transcript","5.guides\u002F5.save-transcript",{"title":148,"path":149,"stem":150},"Reconnect a Live Session","\u002Fguides\u002Freconnection","5.guides\u002F6.reconnection","i-lucide-book-open",{"title":153,"path":154,"stem":155,"children":156,"icon":191},"Reference","\u002Fapi-reference","6.api-reference\u002F1.index",[157,159,163,167,171,175,179,183,187],{"title":158,"path":154,"stem":155},"API Reference Overview",{"title":160,"path":161,"stem":162},"Realtime API","\u002Fapi-reference\u002Frealtime-api","6.api-reference\u002F2.realtime-api",{"title":164,"path":165,"stem":166},"Client Messages","\u002Fapi-reference\u002Fclient-messages","6.api-reference\u002F3.client-messages",{"title":168,"path":169,"stem":170},"Server Events","\u002Fapi-reference\u002Fserver-events","6.api-reference\u002F4.server-events",{"title":172,"path":173,"stem":174},"Transcription API","\u002Fapi-reference\u002Ftranscription","6.api-reference\u002F5.transcription",{"title":176,"path":177,"stem":178},"Languages & Models","\u002Fapi-reference\u002Flanguages","6.api-reference\u002F6.languages",{"title":180,"path":181,"stem":182},"Errors","\u002Fapi-reference\u002Ferrors","6.api-reference\u002F7.errors",{"title":184,"path":185,"stem":186},"Rate Limits","\u002Fapi-reference\u002Frate-limits","6.api-reference\u002F8.rate-limits",{"title":188,"path":189,"stem":190},"Admin API","\u002Fapi-reference\u002Fadmin","6.api-reference\u002F9.admin","i-lucide-code",{"title":193,"path":194,"stem":195,"children":196,"icon":219},"Production","\u002Fproduction","7.production\u002F1.index",[197,199,203,207,211,215],{"title":198,"path":194,"stem":195},"Production Checklist",{"title":200,"path":201,"stem":202},"Reconnection & Retries","\u002Fproduction\u002Freconnection-retries","7.production\u002F2.reconnection-retries",{"title":204,"path":205,"stem":206},"Latency Best Practices","\u002Fproduction\u002Flatency-best-practices","7.production\u002F3.latency-best-practices",{"title":208,"path":209,"stem":210},"Security & Privacy","\u002Fproduction\u002Fsecurity-privacy","7.production\u002F4.security-privacy",{"title":212,"path":213,"stem":214},"Data Retention","\u002Fproduction\u002Fdata-retention","7.production\u002F5.data-retention",{"title":216,"path":217,"stem":218},"Changelog","\u002Fproduction\u002Fchangelog","7.production\u002F6.changelog","i-lucide-server",{"id":221,"title":44,"body":222,"description":760,"extension":761,"links":762,"meta":763,"navigation":764,"path":45,"seo":765,"status":762,"stem":46,"__hash__":766},"docs\u002F2.realtime\u002F4.audio-input.md",{"type":223,"value":224,"toc":746},"minimark",[225,229,234,278,286,290,338,342,347,402,405,409,416,420,501,507,511,518,522,653,657,674,678,681,714,720,724,742],[226,227,228],"p",{},"The realtime API accepts PCM16LE audio. This page covers format requirements, frame size, and latency tradeoffs.",[230,231,233],"h2",{"id":232},"format-requirements","Format requirements",[235,236,237,250],"table",{},[238,239,240],"thead",{},[241,242,243,247],"tr",{},[244,245,246],"th",{},"Property",[244,248,249],{},"Requirement",[251,252,253,262,270],"tbody",{},[241,254,255,259],{},[256,257,258],"td",{},"Encoding",[256,260,261],{},"PCM16LE (16-bit signed little-endian)",[241,263,264,267],{},[256,265,266],{},"Sample rate",[256,268,269],{},"16000 Hz",[241,271,272,275],{},[256,273,274],{},"Channels",[256,276,277],{},"1 (mono)",[279,280,283],"callout",{"color":281,"icon":282},"amber","i-lucide-triangle-alert",[226,284,285],{},"Audio not matching this format will be rejected or produce incorrect results. Convert with ffmpeg first.",[230,287,289],{"id":288},"converting-audio","Converting audio",[291,292,297],"pre",{"className":293,"code":294,"language":295,"meta":296,"style":296},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav\n","bash","",[298,299,300],"code",{"__ignoreMap":296},[301,302,305,309,313,316,319,323,326,329,332,335],"span",{"class":303,"line":304},"line",1,[301,306,308],{"class":307},"sBMFI","ffmpeg",[301,310,312],{"class":311},"sfazB"," -i",[301,314,315],{"class":311}," input.mp3",[301,317,318],{"class":311}," -ar",[301,320,322],{"class":321},"sbssI"," 16000",[301,324,325],{"class":311}," -ac",[301,327,328],{"class":321}," 1",[301,330,331],{"class":311}," -c:a",[301,333,334],{"class":311}," pcm_s16le",[301,336,337],{"class":311}," output.wav\n",[230,339,341],{"id":340},"transport-methods","Transport methods",[343,344,346],"h3",{"id":345},"text-frames-base64","Text frames (base64)",[291,348,352],{"className":349,"code":350,"language":351,"meta":296,"style":296},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"type\": \"input_audio_buffer.append\", \"audio\": \"\u003CPCM16LE base64>\" }\n","json",[298,353,354],{"__ignoreMap":296},[301,355,356,360,363,367,370,373,375,378,380,383,385,388,390,392,394,397,399],{"class":303,"line":304},[301,357,359],{"class":358},"sMK4o","{",[301,361,362],{"class":358}," \"",[301,364,366],{"class":365},"spNyl","type",[301,368,369],{"class":358},"\"",[301,371,372],{"class":358},":",[301,374,362],{"class":358},[301,376,377],{"class":311},"input_audio_buffer.append",[301,379,369],{"class":358},[301,381,382],{"class":358},",",[301,384,362],{"class":358},[301,386,387],{"class":365},"audio",[301,389,369],{"class":358},[301,391,372],{"class":358},[301,393,362],{"class":358},[301,395,396],{"class":311},"\u003CPCM16LE base64>",[301,398,369],{"class":358},[301,400,401],{"class":358}," }\n",[226,403,404],{},"Has ~33% base64 overhead. Good for debugging and quick integration.",[343,406,408],{"id":407},"binary-frames-raw-pcm","Binary frames (raw PCM)",[226,410,411,412,415],{},"Send raw ",[298,413,414],{},"ArrayBuffer"," directly. No encoding overhead. Recommended for production.",[230,417,419],{"id":418},"frame-size-and-latency","Frame size and latency",[235,421,422,438],{},[238,423,424],{},[241,425,426,429,432,435],{},[244,427,428],{},"Frame size",[244,430,431],{},"Interval",[244,433,434],{},"Data size",[244,436,437],{},"Latency impact",[251,439,440,453,475,488],{},[241,441,442,445,447,450],{},[256,443,444],{},"50ms",[256,446,444],{},[256,448,449],{},"1600 bytes",[256,451,452],{},"Lowest latency, higher CPU overhead",[241,454,455,461,465,470],{},[256,456,457],{},[458,459,460],"strong",{},"100ms",[256,462,463],{},[458,464,460],{},[256,466,467],{},[458,468,469],{},"3200 bytes",[256,471,472],{},[458,473,474],{},"Recommended balance",[241,476,477,480,482,485],{},[256,478,479],{},"200ms",[256,481,479],{},[256,483,484],{},"6400 bytes",[256,486,487],{},"Increased latency, fewer frames",[241,489,490,493,495,498],{},[256,491,492],{},"500ms",[256,494,492],{},[256,496,497],{},"16000 bytes",[256,499,500],{},"Noticeable latency",[226,502,503,506],{},[458,504,505],{},"100ms frames"," (3200 bytes) is the recommended sweet spot.",[230,508,510],{"id":509},"max-frame-size","Max frame size",[226,512,513,514,517],{},"1 MiB (1,048,576 bytes). Exceeding this returns ",[298,515,516],{},"audio_frame_too_large"," and closes the connection (1009).",[230,519,521],{"id":520},"browser-capture","Browser capture",[291,523,527],{"className":524,"code":525,"language":526,"meta":296,"style":296},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const ctx = new AudioContext({ sampleRate: 16000 });\nconst stream = await navigator.mediaDevices.getUserMedia({ audio: true });\nconst source = ctx.createMediaStreamSource(stream);\n\u002F\u002F Use AudioWorklet or ScriptProcessorNode to convert float samples to PCM16LE\n\u002F\u002F Ensure 16000 Hz sample rate and mono\n","javascript",[298,528,529,570,617,640,647],{"__ignoreMap":296},[301,530,531,534,538,541,544,548,551,553,557,559,561,564,567],{"class":303,"line":304},[301,532,533],{"class":365},"const",[301,535,537],{"class":536},"sTEyZ"," ctx ",[301,539,540],{"class":358},"=",[301,542,543],{"class":358}," new",[301,545,547],{"class":546},"s2Zo4"," AudioContext",[301,549,550],{"class":536},"(",[301,552,359],{"class":358},[301,554,556],{"class":555},"swJcz"," sampleRate",[301,558,372],{"class":358},[301,560,322],{"class":321},[301,562,563],{"class":358}," }",[301,565,566],{"class":536},")",[301,568,569],{"class":358},";\n",[301,571,573,575,578,580,584,587,590,593,595,598,600,602,605,607,611,613,615],{"class":303,"line":572},2,[301,574,533],{"class":365},[301,576,577],{"class":536}," stream ",[301,579,540],{"class":358},[301,581,583],{"class":582},"s7zQu"," await",[301,585,586],{"class":536}," navigator",[301,588,589],{"class":358},".",[301,591,592],{"class":536},"mediaDevices",[301,594,589],{"class":358},[301,596,597],{"class":546},"getUserMedia",[301,599,550],{"class":536},[301,601,359],{"class":358},[301,603,604],{"class":555}," audio",[301,606,372],{"class":358},[301,608,610],{"class":609},"sfNiH"," true",[301,612,563],{"class":358},[301,614,566],{"class":536},[301,616,569],{"class":358},[301,618,620,622,625,627,630,632,635,638],{"class":303,"line":619},3,[301,621,533],{"class":365},[301,623,624],{"class":536}," source ",[301,626,540],{"class":358},[301,628,629],{"class":536}," ctx",[301,631,589],{"class":358},[301,633,634],{"class":546},"createMediaStreamSource",[301,636,637],{"class":536},"(stream)",[301,639,569],{"class":358},[301,641,643],{"class":303,"line":642},4,[301,644,646],{"class":645},"sHwdD","\u002F\u002F Use AudioWorklet or ScriptProcessorNode to convert float samples to PCM16LE\n",[301,648,650],{"class":303,"line":649},5,[301,651,652],{"class":645},"\u002F\u002F Ensure 16000 Hz sample rate and mono\n",[230,654,656],{"id":655},"server-side-capture","Server-side capture",[658,659,660,668,671],"ul",{},[661,662,663,664,667],"li",{},"Use ",[298,665,666],{},"Authorization: Bearer sk-..."," header",[661,669,670],{},"Send binary PCM frames directly (no base64 needed)",[661,672,673],{},"Keep sending to avoid idle timeout",[230,675,677],{"id":676},"backpressure","Backpressure",[226,679,680],{},"When the upstream cannot keep up:",[235,682,683,693],{},[238,684,685],{},[241,686,687,690],{},[244,688,689],{},"Condition",[244,691,692],{},"Behavior",[251,694,695,706],{},[241,696,697,700],{},[256,698,699],{},"Soft threshold (1 MiB in-flight)",[256,701,702,703],{},"Drop frames, send ",[298,704,705],{},"lanson.throttled",[241,707,708,711],{},[256,709,710],{},"Hard threshold (8 MiB in-flight)",[256,712,713],{},"Close connection (1013)",[226,715,716,717,719],{},"Monitor ",[298,718,705],{}," events and reduce send rate accordingly.",[230,721,723],{"id":722},"related","Related",[658,725,726,732,737],{},[661,727,728,731],{},[729,730,164],"a",{"href":165}," — audio message format",[661,733,734,736],{},[729,735,40],{"href":41}," — idle timeout",[661,738,739,741],{},[729,740,36],{"href":37}," — complete example",[743,744,745],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":296,"searchDepth":304,"depth":572,"links":747},[748,749,750,754,755,756,757,758,759],{"id":232,"depth":572,"text":233},{"id":288,"depth":572,"text":289},{"id":340,"depth":572,"text":341,"children":751},[752,753],{"id":345,"depth":619,"text":346},{"id":407,"depth":619,"text":408},{"id":418,"depth":572,"text":419},{"id":509,"depth":572,"text":510},{"id":520,"depth":572,"text":521},{"id":655,"depth":572,"text":656},{"id":676,"depth":572,"text":677},{"id":722,"depth":572,"text":723},"PCM format, sample rate, channels, chunk size, and latency tradeoffs.","md",null,{},true,{"title":44,"description":760},"BsSQR0vQ7Y7JT54SOoxIuDZGtEL8-jTPRO7pdjxW6A8",[768,770],{"title":40,"path":41,"stem":42,"description":769,"children":-1},"Connect → configure → stream audio → receive events → close\u002Freconnect.",{"title":48,"path":49,"stem":50,"description":771,"children":-1},"Speech segment states and event transitions.",1787340798074]