Skip to main content
Glama

text_to_speech

Convert text to speech and play it through system audio using customizable voice options for accessibility, content consumption, or audio output needs.

Instructions

Convert text to speech and play it through system audio

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe text to convert to speech
voiceNoThe voice to use for speech synthesis (e.g. 'af_bella'). Use list_voices to see available options.

Implementation Reference

  • MCP CallToolRequest handler for 'text_to_speech' tool: validates args, calls TTSClient.generateAndPlayAudio, returns success message.
    case "text_to_speech": { const args = request.params.arguments as unknown as TextToSpeechArgs; if (!args.text) { throw new Error("Missing required argument: text"); } await ttsClient.generateAndPlayAudio(args.text, args.voice); return { content: [{ type: "text", text: `Successfully generated and played audio${args.voice ? ` using voice: ${args.voice}` : ''}` }], }; }
  • Tool definition including inputSchema (JSON schema) for validating 'text_to_speech' arguments.
    const textToSpeechTool: Tool = { name: "text_to_speech", description: "Convert text to speech and play it through system audio", inputSchema: { type: "object", properties: { text: { type: "string", description: "The text to convert to speech", minLength: 1, maxLength: 1000, }, voice: { type: "string", description: "The voice to use for speech synthesis (e.g. 'af_bella'). Use list_voices to see available options.", }, }, required: ["text"], }, };
  • Core TTS helper method in TTSClient: generates speech audio using KokoroTTS, saves to temp WAV, and plays it synchronously.
    async generateAndPlayAudio(text: string, voice?: KokoroVoice, speed?: number): Promise<void> { await this.waitForInit(); if (!this.ttsInstance) { throw new Error("TTS model not initialized"); } const audio = await this.ttsInstance.generate(text, { voice: voice || DEFAULT_VOICE, // @ts-ignore-line speed: speed || DEFAULT_SPEECH_SPEED, }); const tempFile = join(tmpdir(), `${Date.now()}.wav`); await audio.save(tempFile); await player.play({ path: tempFile, sync: true }); }
  • TypeScript interface defining expected arguments for text_to_speech tool.
    interface TextToSpeechArgs { text: string; voice?: KokoroVoice; }
  • src/index.ts:355-360 (registration)
    Registration of text_to_speech tool (as textToSpeechTool) in the ListToolsRequest handler response.
    tools: [ textToSpeechTool, textToSpeechWithOptionsTool, listVoicesTool, getModelStatusTool, ],

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hammeiam/koroko-speech-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server