PlayAI

The PlayAI voice implementation in Mastra provides text-to-speech capabilities using PlayAI’s API.

Usage Example

import { PlayAIVoice } from "@mastra/voice-playai";
 
// Initialize with default configuration (uses PLAYAI_API_KEY environment variable and PLAYAI_USER_ID environment variable)
const voice = new PlayAIVoice();
 
// Initialize with default configuration
const voice = new PlayAIVoice({
  speechModel: {
    name: 'PlayDialog',
    apiKey: process.env.PLAYAI_API_KEY,
    userId: process.env.PLAYAI_USER_ID
  },
  speaker: 'Angelo'  // Default voice
});
 
// Convert text to speech with a specific voice
const audioStream = await voice.speak("Hello, world!", {
  speaker: 's3://voice-cloning-zero-shot/b27bc13e-996f-4841-b584-4d35801aea98/original/manifest.json' // Dexter voice
});

Constructor Parameters

speechModel?:

PlayAIConfig
= { name: 'PlayDialog' }
Configuration for text-to-speech functionality

speaker?:

string
= First available voice ID
Default voice ID to use for speech synthesis

PlayAIConfig

name?:

'PlayDialog' | 'Play3.0-mini'
= 'PlayDialog'
The PlayAI model to use

apiKey?:

string
PlayAI API key. Falls back to PLAYAI_API_KEY environment variable

userId?:

string
PlayAI user ID. Falls back to PLAYAI_USER_ID environment variable

Methods

speak()

Converts text to speech using the configured speech model and voice.

input:

string | NodeJS.ReadableStream
Text to convert to speech. If a stream is provided, it will be converted to text first.

options.speaker?:

string
= Constructor's speaker value
Override the default speaker for this request

Returns: Promise<NodeJS.ReadableStream>.

getSpeakers()

Returns an array of available voice options, where each node contains:

name:

string
Name of the voice

accent:

string
Accent of the voice (e.g., 'US', 'British', 'Australian')

gender:

'M' | 'F'
Gender of the voice

age:

'Young' | 'Middle' | 'Old'
Age category of the voice

style:

'Conversational' | 'Narrative'
Speaking style of the voice

voiceId:

string
Unique identifier for the voice

listen()

This method is not supported by PlayAI and will throw an error. PlayAI does not provide speech-to-text functionality.

Notes

  • PlayAI requires both an API key and a user ID for authentication
  • The service offers two models: ‘PlayDialog’ and ‘Play3.0-mini’
  • Each voice has a unique S3 manifest ID that must be used when making API calls