[{"data":1,"prerenderedAt":282},["ShallowReactive",2],{"navigation_docs":3,"-tools-text-to-speech":139,"-tools-text-to-speech-surround":277},[4,8,12,16,20,24,28,32,59,63,117,121,135],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","1.introduction",{"title":9,"path":10,"stem":11},"Memory","\u002Fmemory","10.memory",{"title":13,"path":14,"stem":15},"Customization","\u002Fcustomization","11.customization",{"title":17,"path":18,"stem":19},"Deployment","\u002Fdeployment","12.deployment",{"title":21,"path":22,"stem":23},"Reference","\u002Freference","13.reference",{"title":25,"path":26,"stem":27},"Quickstart","\u002Fquickstart","2.quickstart",{"title":29,"path":30,"stem":31},"Installation","\u002Finstallation","3.installation",{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":58},"Connectors","i-lucide-cable","\u002Fconnectors","4.connectors",[38,42,46,50,54],{"title":39,"path":40,"stem":41},"Telegram","\u002Fconnectors\u002Ftelegram","4.connectors\u002F1.telegram",{"title":43,"path":44,"stem":45},"Slack","\u002Fconnectors\u002Fslack","4.connectors\u002F2.slack",{"title":47,"path":48,"stem":49},"Email","\u002Fconnectors\u002Femail","4.connectors\u002F3.email",{"title":51,"path":52,"stem":53},"API","\u002Fconnectors\u002Fapi","4.connectors\u002F4.api",{"title":55,"path":56,"stem":57},"Terminal","\u002Fconnectors\u002Fterminal","4.connectors\u002F5.terminal",false,{"title":60,"path":61,"stem":62},"Attachments","\u002Fattachments","5.attachments",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":58},"Tools","i-lucide-wrench","\u002Ftools","6.tools",[69,73,77,81,85,89,93,97,101,105,109,113],{"title":70,"path":71,"stem":72},"File Manager","\u002Ftools\u002Ffile-manager","6.tools\u002F1.file-manager",{"title":74,"path":75,"stem":76},"Text-to-Speech","\u002Ftools\u002Ftext-to-speech","6.tools\u002F10.text-to-speech",{"title":78,"path":79,"stem":80},"Confirmations","\u002Ftools\u002Fconfirmations","6.tools\u002F11.confirmations",{"title":82,"path":83,"stem":84},"Adding Custom Tools","\u002Ftools\u002Fadding-custom-tools","6.tools\u002F12.adding-custom-tools",{"title":86,"path":87,"stem":88},"Image Manager","\u002Ftools\u002Fimage-manager","6.tools\u002F2.image-manager",{"title":90,"path":91,"stem":92},"Web Request","\u002Ftools\u002Fweb-request","6.tools\u002F3.web-request",{"title":94,"path":95,"stem":96},"Reminders","\u002Ftools\u002Freminders","6.tools\u002F4.reminders",{"title":98,"path":99,"stem":100},"Heartbeats","\u002Ftools\u002Fheartbeats","6.tools\u002F5.heartbeats",{"title":102,"path":103,"stem":104},"Email Manager","\u002Ftools\u002Femail-manager","6.tools\u002F6.email-manager",{"title":106,"path":107,"stem":108},"Calendar","\u002Ftools\u002Fcalendar","6.tools\u002F7.calendar",{"title":110,"path":111,"stem":112},"Read Database","\u002Ftools\u002Fread-database","6.tools\u002F8.read-database",{"title":114,"path":115,"stem":116},"Headless Browser","\u002Ftools\u002Fbrowser","6.tools\u002F9.browser",{"title":118,"path":119,"stem":120},"Tinker","\u002Ftinker","7.tinker",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":58},"Skills","i-lucide-sparkles","\u002Fskills","8.skills",[127,131],{"title":128,"path":129,"stem":130},"Overview","\u002Fskills\u002Foverview","8.skills\u002F1.overview",{"title":132,"path":133,"stem":134},"Adding Custom Skills","\u002Fskills\u002Fadding-custom-skills","8.skills\u002F2.adding-custom-skills",{"title":136,"path":137,"stem":138},"Personas","\u002Fpersonas","9.personas",{"id":140,"title":74,"body":141,"description":270,"extension":271,"links":272,"meta":273,"navigation":274,"path":75,"seo":275,"stem":76,"__hash__":276},"docs\u002F6.tools\u002F10.text-to-speech.md",{"type":142,"value":143,"toc":262},"minimark",[144,148,152,170,174,177,193,196,200,209,220,227,231,243,247,258],[145,146,5],"h2",{"id":147},"introduction",[149,150,151],"p",{},"The Text-to-Speech tool generates audio from a string and attaches it to the agent's reply. The agent uses it when the user asks for a voice response or when audio is the better delivery format.",[149,153,154,155,165,166,169],{},"It uses ",[156,157,161],"a",{"href":158,"rel":159},"https:\u002F\u002Fgithub.com\u002Flaravel\u002Fai",[160],"nofollow",[162,163,164],"code",{},"Laravel\\Ai\\Audio",", so the underlying provider is whatever you've configured for ",[162,167,168],{},"AI_DEFAULT",".",[145,171,173],{"id":172},"enabling-tts","Enabling TTS",[149,175,176],{},"TTS is enabled by default. To turn it off:",[178,179,184],"pre",{"className":180,"code":181,"language":182,"meta":183,"style":183},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","LARACLAW_TTS_ENABLED=false\n","env","",[162,185,186],{"__ignoreMap":183},[187,188,191],"span",{"class":189,"line":190},"line",1,[187,192,181],{},[149,194,195],{},"When disabled, the tool is not registered with the agent at all.",[145,197,199],{"id":198},"voices","Voices",[178,201,203],{"className":180,"code":202,"language":182,"meta":183,"style":183},"LARACLAW_TTS_VOICE=default-female\n",[162,204,205],{"__ignoreMap":183},[187,206,207],{"class":189,"line":190},[187,208,202],{},[149,210,211,212,215,216,219],{},"The two built-in values are ",[162,213,214],{},"default-female"," and ",[162,217,218],{},"default-male",". A provider-specific voice ID is passed straight through.",[149,221,222,223,226],{},"The agent can override the default per call by passing a ",[162,224,225],{},"voice"," parameter to the tool.",[145,228,230],{"id":229},"custom-instructions","Custom Instructions",[149,232,233,234,237,238,242],{},"The ",[162,235,236],{},"instructions"," parameter accepts a free-form string describing how the audio should sound (e.g. ",[239,240,241],"em",{},"\"speak slowly and calmly\"","). Whether they take effect depends on the provider — OpenAI's TTS accepts them, older models may not.",[145,244,246],{"id":245},"how-the-audio-reaches-the-user","How the Audio Reaches the User",[149,248,249,250,253,254,257],{},"The tool writes a ",[162,251,252],{},"voice.mp3"," file to ",[162,255,256],{},"outbound\u002F{message_uuid}\u002F"," on the attachments disk. The connector picks it up before sending the reply and delivers it as the appropriate type for the channel — a voice message on Telegram, a file on Slack, an attachment on email.",[259,260,261],"style",{},"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);}",{"title":183,"searchDepth":263,"depth":263,"links":264},2,[265,266,267,268,269],{"id":147,"depth":263,"text":5},{"id":172,"depth":263,"text":173},{"id":198,"depth":263,"text":199},{"id":229,"depth":263,"text":230},{"id":245,"depth":263,"text":246},"Reply with synthesized audio instead of (or in addition to) text.","md",null,{},true,{"title":74,"description":270},"hD-MZOJFAOVcpHTji6zml_zztUf10nu8CyovhNbj56Q",[278,280],{"title":70,"path":71,"stem":72,"description":279,"children":-1},"Read, write, move, copy, and delete files on any allowed Laravel storage disk.",{"title":78,"path":79,"stem":80,"description":281,"children":-1},"How tools ask the user to confirm a destructive action before running it.",1786661906119]