@mastra/mcp-docs-server 0.13.37 → 0.13.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +2 -0
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +23 -23
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +69 -69
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +25 -25
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Freact.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +23 -23
- package/.docs/organized/changelogs/create-mastra.md +5 -5
- package/.docs/organized/changelogs/mastra.md +17 -17
- package/.docs/raw/agents/adding-voice.mdx +20 -9
- package/.docs/raw/agents/agent-memory.mdx +55 -39
- package/.docs/raw/agents/guardrails.mdx +68 -61
- package/.docs/raw/agents/networks.mdx +50 -46
- package/.docs/raw/agents/overview.mdx +125 -88
- package/.docs/raw/agents/using-tools.mdx +14 -15
- package/.docs/raw/auth/auth0.mdx +28 -27
- package/.docs/raw/auth/clerk.mdx +22 -20
- package/.docs/raw/auth/firebase.mdx +42 -39
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +18 -16
- package/.docs/raw/auth/supabase.mdx +20 -18
- package/.docs/raw/auth/workos.mdx +32 -26
- package/.docs/raw/community/contributing-templates.mdx +7 -7
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +41 -22
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +48 -29
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +52 -24
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +86 -55
- package/.docs/raw/deployment/cloud-providers/index.mdx +16 -13
- package/.docs/raw/deployment/monorepo.mdx +32 -42
- package/.docs/raw/deployment/overview.mdx +15 -15
- package/.docs/raw/deployment/server-deployment.mdx +18 -23
- package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +16 -17
- package/.docs/raw/deployment/serverless-platforms/index.mdx +15 -12
- package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +14 -23
- package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +16 -23
- package/.docs/raw/deployment/web-framework.mdx +14 -14
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +138 -145
- package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +54 -43
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +51 -36
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +161 -120
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +59 -48
- package/.docs/raw/frameworks/servers/express.mdx +45 -44
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +245 -162
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +112 -69
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +189 -164
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
- package/.docs/raw/getting-started/installation.mdx +164 -133
- package/.docs/raw/getting-started/mcp-docs-server.mdx +36 -39
- package/.docs/raw/getting-started/project-structure.mdx +34 -42
- package/.docs/raw/getting-started/studio.mdx +40 -58
- package/.docs/raw/getting-started/templates.mdx +22 -27
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/mastra-cloud/dashboard.mdx +10 -10
- package/.docs/raw/mastra-cloud/observability.mdx +7 -8
- package/.docs/raw/mastra-cloud/overview.mdx +16 -22
- package/.docs/raw/mastra-cloud/setting-up.mdx +33 -20
- package/.docs/raw/memory/conversation-history.mdx +2 -2
- package/.docs/raw/memory/overview.mdx +21 -23
- package/.docs/raw/memory/semantic-recall.mdx +14 -13
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +27 -28
- package/.docs/raw/memory/storage/memory-with-pg.mdx +26 -26
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +26 -27
- package/.docs/raw/memory/threads-and-resources.mdx +23 -20
- package/.docs/raw/memory/working-memory.mdx +27 -38
- package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +30 -29
- package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +8 -9
- package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +17 -16
- package/.docs/raw/observability/ai-tracing/exporters/default.mdx +31 -32
- package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +18 -17
- package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +14 -14
- package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +56 -46
- package/.docs/raw/observability/ai-tracing/overview.mdx +145 -122
- package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +57 -36
- package/.docs/raw/observability/logging.mdx +14 -17
- package/.docs/raw/observability/nextjs-tracing.mdx +5 -5
- package/.docs/raw/observability/otel-tracing.mdx +17 -18
- package/.docs/raw/observability/overview.mdx +14 -10
- package/.docs/raw/rag/chunking-and-embedding.mdx +10 -8
- package/.docs/raw/rag/overview.mdx +5 -5
- package/.docs/raw/rag/retrieval.mdx +125 -107
- package/.docs/raw/rag/vector-databases.mdx +232 -223
- package/.docs/raw/reference/agents/agent.mdx +54 -41
- package/.docs/raw/reference/agents/generate.mdx +367 -261
- package/.docs/raw/reference/agents/generateLegacy.mdx +260 -178
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDescription.mdx +3 -2
- package/.docs/raw/reference/agents/getInstructions.mdx +7 -5
- package/.docs/raw/reference/agents/getLLM.mdx +11 -7
- package/.docs/raw/reference/agents/getMemory.mdx +7 -5
- package/.docs/raw/reference/agents/getModel.mdx +7 -5
- package/.docs/raw/reference/agents/getScorers.mdx +7 -5
- package/.docs/raw/reference/agents/getTools.mdx +7 -5
- package/.docs/raw/reference/agents/getVoice.mdx +7 -5
- package/.docs/raw/reference/agents/getWorkflows.mdx +7 -5
- package/.docs/raw/reference/agents/listAgents.mdx +6 -4
- package/.docs/raw/reference/agents/network.mdx +171 -116
- package/.docs/raw/reference/auth/auth0.mdx +18 -14
- package/.docs/raw/reference/auth/clerk.mdx +15 -12
- package/.docs/raw/reference/auth/firebase.mdx +23 -16
- package/.docs/raw/reference/auth/jwt.mdx +7 -6
- package/.docs/raw/reference/auth/supabase.mdx +13 -10
- package/.docs/raw/reference/auth/workos.mdx +17 -13
- package/.docs/raw/reference/cli/create-mastra.mdx +61 -44
- package/.docs/raw/reference/cli/mastra.mdx +11 -11
- package/.docs/raw/reference/client-js/agents.mdx +40 -43
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +21 -13
- package/.docs/raw/reference/client-js/memory.mdx +6 -2
- package/.docs/raw/reference/client-js/observability.mdx +10 -9
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +7 -7
- package/.docs/raw/reference/core/getAgent.mdx +6 -5
- package/.docs/raw/reference/core/getAgentById.mdx +5 -4
- package/.docs/raw/reference/core/getAgents.mdx +3 -3
- package/.docs/raw/reference/core/getDeployer.mdx +4 -3
- package/.docs/raw/reference/core/getLogger.mdx +4 -3
- package/.docs/raw/reference/core/getLogs.mdx +10 -6
- package/.docs/raw/reference/core/getLogsByRunId.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServer.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServers.mdx +4 -3
- package/.docs/raw/reference/core/getMemory.mdx +4 -3
- package/.docs/raw/reference/core/getScorer.mdx +15 -12
- package/.docs/raw/reference/core/getScorerByName.mdx +12 -9
- package/.docs/raw/reference/core/getScorers.mdx +3 -2
- package/.docs/raw/reference/core/getServer.mdx +4 -3
- package/.docs/raw/reference/core/getStorage.mdx +4 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +4 -3
- package/.docs/raw/reference/core/getVector.mdx +6 -4
- package/.docs/raw/reference/core/getVectors.mdx +4 -3
- package/.docs/raw/reference/core/getWorkflow.mdx +7 -4
- package/.docs/raw/reference/core/getWorkflows.mdx +5 -3
- package/.docs/raw/reference/core/mastra-class.mdx +16 -16
- package/.docs/raw/reference/core/setLogger.mdx +6 -4
- package/.docs/raw/reference/core/setStorage.mdx +4 -4
- package/.docs/raw/reference/core/setTelemetry.mdx +4 -3
- package/.docs/raw/reference/deployer/cloudflare.mdx +11 -7
- package/.docs/raw/reference/deployer/deployer.mdx +2 -1
- package/.docs/raw/reference/deployer/netlify.mdx +4 -4
- package/.docs/raw/reference/deployer/vercel.mdx +6 -6
- package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/bias.mdx +4 -5
- package/.docs/raw/reference/evals/completeness.mdx +4 -5
- package/.docs/raw/reference/evals/content-similarity.mdx +4 -5
- package/.docs/raw/reference/evals/context-position.mdx +4 -5
- package/.docs/raw/reference/evals/context-precision.mdx +4 -5
- package/.docs/raw/reference/evals/context-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/contextual-recall.mdx +4 -5
- package/.docs/raw/reference/evals/faithfulness.mdx +4 -5
- package/.docs/raw/reference/evals/hallucination.mdx +4 -6
- package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -5
- package/.docs/raw/reference/evals/prompt-alignment.mdx +4 -6
- package/.docs/raw/reference/evals/summarization.mdx +4 -6
- package/.docs/raw/reference/evals/textual-difference.mdx +4 -5
- package/.docs/raw/reference/evals/tone-consistency.mdx +4 -7
- package/.docs/raw/reference/evals/toxicity.mdx +4 -5
- package/.docs/raw/reference/index.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/after.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/else.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/events.mdx +7 -7
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/if.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/start.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/then.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/until.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/while.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +7 -7
- package/.docs/raw/reference/memory/createThread.mdx +10 -10
- package/.docs/raw/reference/memory/deleteMessages.mdx +7 -5
- package/.docs/raw/reference/memory/getThreadById.mdx +6 -5
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +11 -10
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +10 -9
- package/.docs/raw/reference/memory/{Memory.mdx → memory-class.mdx} +53 -46
- package/.docs/raw/reference/memory/query.mdx +39 -25
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -5
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +26 -22
- package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +16 -12
- package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +14 -14
- package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +16 -11
- package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +10 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +23 -15
- package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +6 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +13 -13
- package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +44 -36
- package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +115 -106
- package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +37 -32
- package/.docs/raw/reference/observability/ai-tracing/span.mdx +29 -26
- package/.docs/raw/reference/observability/logging/pino-logger.mdx +13 -15
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +2 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +12 -14
- package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +4 -4
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +13 -10
- package/.docs/raw/reference/processors/language-detector.mdx +27 -17
- package/.docs/raw/reference/processors/moderation-processor.mdx +26 -17
- package/.docs/raw/reference/processors/pii-detector.mdx +28 -18
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +25 -17
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +26 -17
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +22 -15
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +13 -12
- package/.docs/raw/reference/rag/chunk.mdx +41 -23
- package/.docs/raw/reference/rag/database-config.mdx +56 -38
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +23 -26
- package/.docs/raw/reference/rag/rerank.mdx +1 -1
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -2
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +35 -17
- package/.docs/raw/reference/scorers/answer-similarity.mdx +84 -68
- package/.docs/raw/reference/scorers/bias.mdx +22 -19
- package/.docs/raw/reference/scorers/completeness.mdx +21 -16
- package/.docs/raw/reference/scorers/content-similarity.mdx +12 -10
- package/.docs/raw/reference/scorers/context-precision.mdx +73 -64
- package/.docs/raw/reference/scorers/context-relevance.mdx +142 -126
- package/.docs/raw/reference/scorers/create-scorer.mdx +93 -61
- package/.docs/raw/reference/scorers/faithfulness.mdx +21 -13
- package/.docs/raw/reference/scorers/hallucination.mdx +17 -12
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +32 -27
- package/.docs/raw/reference/scorers/mastra-scorer.mdx +39 -33
- package/.docs/raw/reference/scorers/noise-sensitivity.mdx +203 -152
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +186 -132
- package/.docs/raw/reference/scorers/run-experiment.mdx +40 -31
- package/.docs/raw/reference/scorers/textual-difference.mdx +25 -26
- package/.docs/raw/reference/scorers/tone-consistency.mdx +29 -26
- package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +180 -176
- package/.docs/raw/reference/scorers/toxicity.mdx +35 -31
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +1 -1
- package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
- package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
- package/.docs/raw/reference/storage/lance.mdx +1 -1
- package/.docs/raw/reference/storage/libsql.mdx +2 -2
- package/.docs/raw/reference/storage/mongodb.mdx +4 -5
- package/.docs/raw/reference/storage/mssql.mdx +5 -4
- package/.docs/raw/reference/storage/postgresql.mdx +35 -33
- package/.docs/raw/reference/storage/upstash.mdx +6 -5
- package/.docs/raw/reference/streaming/ChunkType.mdx +788 -314
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +265 -109
- package/.docs/raw/reference/streaming/agents/stream.mdx +375 -266
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +233 -162
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +4 -4
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +5 -5
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +24 -20
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -26
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +36 -27
- package/.docs/raw/reference/templates/overview.mdx +16 -39
- package/.docs/raw/reference/tools/client.mdx +1 -1
- package/.docs/raw/reference/tools/create-tool.mdx +45 -35
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -2
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +12 -12
- package/.docs/raw/reference/tools/mcp-client.mdx +70 -64
- package/.docs/raw/reference/tools/mcp-server.mdx +91 -78
- package/.docs/raw/reference/tools/vector-query-tool.mdx +48 -38
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +25 -19
- package/.docs/raw/reference/vectors/couchbase.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +5 -6
- package/.docs/raw/reference/vectors/libsql.mdx +1 -1
- package/.docs/raw/reference/vectors/mongodb.mdx +1 -1
- package/.docs/raw/reference/vectors/opensearch.mdx +1 -1
- package/.docs/raw/reference/vectors/pg.mdx +8 -4
- package/.docs/raw/reference/vectors/pinecone.mdx +1 -1
- package/.docs/raw/reference/vectors/qdrant.mdx +1 -1
- package/.docs/raw/reference/vectors/s3vectors.mdx +35 -27
- package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
- package/.docs/raw/reference/vectors/upstash.mdx +33 -25
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +1 -1
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +1 -1
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +6 -4
- package/.docs/raw/reference/voice/google.mdx +1 -1
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +1 -1
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
- package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
- package/.docs/raw/reference/voice/voice.close.mdx +1 -1
- package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +23 -30
- package/.docs/raw/reference/voice/voice.listen.mdx +1 -1
- package/.docs/raw/reference/voice/voice.off.mdx +1 -1
- package/.docs/raw/reference/voice/voice.on.mdx +1 -1
- package/.docs/raw/reference/voice/voice.send.mdx +1 -1
- package/.docs/raw/reference/voice/voice.speak.mdx +1 -1
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +49 -34
- package/.docs/raw/reference/workflows/run-methods/start.mdx +43 -31
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +7 -8
- package/.docs/raw/reference/workflows/run.mdx +7 -10
- package/.docs/raw/reference/workflows/step.mdx +15 -12
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +5 -5
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow.mdx +13 -10
- package/.docs/raw/scorers/custom-scorers.mdx +58 -48
- package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +6 -8
- package/.docs/raw/scorers/evals-old-api/overview.mdx +8 -8
- package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +9 -9
- package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +5 -5
- package/.docs/raw/scorers/off-the-shelf-scorers.mdx +3 -1
- package/.docs/raw/scorers/overview.mdx +20 -19
- package/.docs/raw/server-db/custom-api-routes.mdx +8 -8
- package/.docs/raw/server-db/mastra-client.mdx +56 -54
- package/.docs/raw/server-db/middleware.mdx +11 -7
- package/.docs/raw/server-db/production-server.mdx +5 -7
- package/.docs/raw/server-db/runtime-context.mdx +41 -38
- package/.docs/raw/server-db/storage.mdx +82 -87
- package/.docs/raw/streaming/events.mdx +24 -16
- package/.docs/raw/streaming/overview.mdx +17 -18
- package/.docs/raw/streaming/tool-streaming.mdx +9 -10
- package/.docs/raw/streaming/workflow-streaming.mdx +14 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +92 -102
- package/.docs/raw/tools-mcp/overview.mdx +9 -14
- package/.docs/raw/voice/overview.mdx +273 -250
- package/.docs/raw/voice/speech-to-speech.mdx +14 -12
- package/.docs/raw/voice/speech-to-text.mdx +2 -2
- package/.docs/raw/voice/text-to-speech.mdx +2 -2
- package/.docs/raw/workflows/agents-and-tools.mdx +29 -28
- package/.docs/raw/workflows/control-flow.mdx +24 -24
- package/.docs/raw/workflows/error-handling.mdx +15 -17
- package/.docs/raw/workflows/human-in-the-loop.mdx +39 -39
- package/.docs/raw/workflows/inngest-workflow.mdx +33 -29
- package/.docs/raw/workflows/input-data-mapping.mdx +9 -9
- package/.docs/raw/workflows/overview.mdx +60 -60
- package/.docs/raw/workflows/snapshots.mdx +54 -36
- package/.docs/raw/workflows/suspend-and-resume.mdx +52 -57
- package/.docs/raw/workflows-legacy/control-flow.mdx +15 -17
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +3 -1
- package/.docs/raw/workflows-legacy/error-handling.mdx +8 -6
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +6 -0
- package/.docs/raw/workflows-legacy/overview.mdx +28 -26
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +4 -2
- package/.docs/raw/workflows-legacy/steps.mdx +5 -3
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +10 -8
- package/.docs/raw/workflows-legacy/variables.mdx +10 -8
- package/CHANGELOG.md +14 -0
- package/package.json +5 -5
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Voice in Mastra | Mastra Docs
|
|
2
|
+
title: "Voice in Mastra | Voice | Mastra Docs"
|
|
3
3
|
description: Overview of voice capabilities in Mastra, including text-to-speech, speech-to-text, and real-time speech-to-speech interactions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
6
|
+
import { AudioPlayback } from "@site/src/components/AudioPlayback";
|
|
7
|
+
import Tabs from "@theme/Tabs";
|
|
8
|
+
import TabItem from "@theme/TabItem";
|
|
8
9
|
|
|
9
10
|
# Voice in Mastra
|
|
10
11
|
|
|
@@ -12,7 +13,7 @@ Mastra's Voice system provides a unified interface for voice interactions, enabl
|
|
|
12
13
|
|
|
13
14
|
## Adding Voice to Agents
|
|
14
15
|
|
|
15
|
-
To learn how to integrate voice capabilities into your agents, check out the [Adding Voice to Agents](
|
|
16
|
+
To learn how to integrate voice capabilities into your agents, check out the [Adding Voice to Agents](/docs/agents/adding-voice) documentation. This section covers how to use both single and multiple voice providers, as well as real-time interactions.
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { Agent } from "@mastra/core/agent";
|
|
@@ -39,58 +40,54 @@ Choose from multiple providers like OpenAI, ElevenLabs, and more.
|
|
|
39
40
|
|
|
40
41
|
For detailed configuration options and advanced features, check out our [Text-to-Speech guide](./text-to-speech).
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Each tab shows how to set up and use a specific TTS provider (OpenAI, Azure, ElevenLabs, etc.) with Mastra agents.
|
|
45
|
-
The tabs help users compare different TTS providers and choose the one that best fits their needs.
|
|
46
|
-
Each tab includes complete code examples showing agent setup, text generation, and audio playback.
|
|
47
|
-
The providers include OpenAI, Azure, ElevenLabs, PlayAI, Google, Cloudflare, Deepgram, Speechify, Sarvam, and Murf.
|
|
48
|
-
*/}
|
|
43
|
+
<Tabs>
|
|
44
|
+
<TabItem value="openai" label="OpenAI">
|
|
49
45
|
|
|
50
|
-
<Tabs items={["OpenAI", "Azure", "ElevenLabs", "PlayAI", "Google", "Cloudflare", "Deepgram", "Speechify", "Sarvam", "Murf"]}>
|
|
51
|
-
<Tabs.Tab>
|
|
52
46
|
```typescript
|
|
53
|
-
import { Agent } from
|
|
54
|
-
import { openai } from
|
|
47
|
+
import { Agent } from "@mastra/core/agent";
|
|
48
|
+
import { openai } from "@ai-sdk/openai";
|
|
55
49
|
import { OpenAIVoice } from "@mastra/voice-openai";
|
|
56
50
|
import { playAudio } from "@mastra/node-audio";
|
|
57
51
|
|
|
58
52
|
const voiceAgent = new Agent({
|
|
59
|
-
name: "Voice Agent",
|
|
60
|
-
instructions:
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
name: "Voice Agent",
|
|
54
|
+
instructions:
|
|
55
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
56
|
+
model: openai("gpt-4o"),
|
|
57
|
+
voice: new OpenAIVoice(),
|
|
63
58
|
});
|
|
64
59
|
|
|
65
|
-
const { text } = await voiceAgent.generate(
|
|
60
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
66
61
|
|
|
67
62
|
// Convert text to speech to an Audio Stream
|
|
68
63
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
69
|
-
speaker: "default", // Optional: specify a speaker
|
|
70
|
-
responseFormat: "wav", // Optional: specify a response format
|
|
64
|
+
speaker: "default", // Optional: specify a speaker
|
|
65
|
+
responseFormat: "wav", // Optional: specify a response format
|
|
71
66
|
});
|
|
72
67
|
|
|
73
68
|
playAudio(audioStream);
|
|
74
|
-
|
|
75
|
-
````
|
|
69
|
+
```
|
|
76
70
|
|
|
77
71
|
Visit the [OpenAI Voice Reference](/reference/voice/openai) for more information on the OpenAI voice provider.
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
|
|
73
|
+
</TabItem>
|
|
74
|
+
<TabItem value="azure" label="Azure">
|
|
75
|
+
|
|
80
76
|
```typescript
|
|
81
|
-
import { Agent } from
|
|
82
|
-
import { openai } from
|
|
77
|
+
import { Agent } from "@mastra/core/agent";
|
|
78
|
+
import { openai } from "@ai-sdk/openai";
|
|
83
79
|
import { AzureVoice } from "@mastra/voice-azure";
|
|
84
80
|
import { playAudio } from "@mastra/node-audio";
|
|
85
81
|
|
|
86
82
|
const voiceAgent = new Agent({
|
|
87
83
|
name: "Voice Agent",
|
|
88
|
-
instructions:
|
|
84
|
+
instructions:
|
|
85
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
89
86
|
model: openai("gpt-4o"),
|
|
90
87
|
voice: new AzureVoice(),
|
|
91
88
|
});
|
|
92
89
|
|
|
93
|
-
const { text } = await voiceAgent.generate(
|
|
90
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
94
91
|
|
|
95
92
|
// Convert text to speech to an Audio Stream
|
|
96
93
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
@@ -98,53 +95,57 @@ const audioStream = await voiceAgent.voice.speak(text, {
|
|
|
98
95
|
});
|
|
99
96
|
|
|
100
97
|
playAudio(audioStream);
|
|
101
|
-
|
|
98
|
+
```
|
|
102
99
|
|
|
103
100
|
Visit the [Azure Voice Reference](/reference/voice/azure) for more information on the Azure voice provider.
|
|
104
101
|
|
|
105
|
-
</
|
|
106
|
-
<
|
|
102
|
+
</TabItem>
|
|
103
|
+
<TabItem value="elevenlabs" label="ElevenLabs">
|
|
104
|
+
|
|
107
105
|
```typescript
|
|
108
|
-
import { Agent } from
|
|
109
|
-
import { openai } from
|
|
106
|
+
import { Agent } from "@mastra/core/agent";
|
|
107
|
+
import { openai } from "@ai-sdk/openai";
|
|
110
108
|
import { ElevenLabsVoice } from "@mastra/voice-elevenlabs";
|
|
111
109
|
import { playAudio } from "@mastra/node-audio";
|
|
112
110
|
|
|
113
111
|
const voiceAgent = new Agent({
|
|
114
|
-
name: "Voice Agent",
|
|
115
|
-
instructions:
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
name: "Voice Agent",
|
|
113
|
+
instructions:
|
|
114
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
115
|
+
model: openai("gpt-4o"),
|
|
116
|
+
voice: new ElevenLabsVoice(),
|
|
118
117
|
});
|
|
119
118
|
|
|
120
|
-
const { text } = await voiceAgent.generate(
|
|
119
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
121
120
|
|
|
122
121
|
// Convert text to speech to an Audio Stream
|
|
123
122
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
124
|
-
speaker: "default", // Optional: specify a speaker
|
|
123
|
+
speaker: "default", // Optional: specify a speaker
|
|
125
124
|
});
|
|
126
125
|
|
|
127
126
|
playAudio(audioStream);
|
|
128
|
-
|
|
129
|
-
````
|
|
127
|
+
```
|
|
130
128
|
|
|
131
129
|
Visit the [ElevenLabs Voice Reference](/reference/voice/elevenlabs) for more information on the ElevenLabs voice provider.
|
|
132
|
-
|
|
133
|
-
|
|
130
|
+
|
|
131
|
+
</TabItem>
|
|
132
|
+
<TabItem value="playai" label="PlayAI">
|
|
133
|
+
|
|
134
134
|
```typescript
|
|
135
|
-
import { Agent } from
|
|
136
|
-
import { openai } from
|
|
135
|
+
import { Agent } from "@mastra/core/agent";
|
|
136
|
+
import { openai } from "@ai-sdk/openai";
|
|
137
137
|
import { PlayAIVoice } from "@mastra/voice-playai";
|
|
138
138
|
import { playAudio } from "@mastra/node-audio";
|
|
139
139
|
|
|
140
140
|
const voiceAgent = new Agent({
|
|
141
141
|
name: "Voice Agent",
|
|
142
|
-
instructions:
|
|
142
|
+
instructions:
|
|
143
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
143
144
|
model: openai("gpt-4o"),
|
|
144
145
|
voice: new PlayAIVoice(),
|
|
145
146
|
});
|
|
146
147
|
|
|
147
|
-
const { text } = await voiceAgent.generate(
|
|
148
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
148
149
|
|
|
149
150
|
// Convert text to speech to an Audio Stream
|
|
150
151
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
@@ -152,53 +153,57 @@ const audioStream = await voiceAgent.voice.speak(text, {
|
|
|
152
153
|
});
|
|
153
154
|
|
|
154
155
|
playAudio(audioStream);
|
|
155
|
-
|
|
156
|
+
```
|
|
156
157
|
|
|
157
158
|
Visit the [PlayAI Voice Reference](/reference/voice/playai) for more information on the PlayAI voice provider.
|
|
158
159
|
|
|
159
|
-
</
|
|
160
|
-
<
|
|
160
|
+
</TabItem>
|
|
161
|
+
<TabItem value="google" label="Google">
|
|
162
|
+
|
|
161
163
|
```typescript
|
|
162
|
-
import { Agent } from
|
|
163
|
-
import { openai } from
|
|
164
|
+
import { Agent } from "@mastra/core/agent";
|
|
165
|
+
import { openai } from "@ai-sdk/openai";
|
|
164
166
|
import { GoogleVoice } from "@mastra/voice-google";
|
|
165
167
|
import { playAudio } from "@mastra/node-audio";
|
|
166
168
|
|
|
167
169
|
const voiceAgent = new Agent({
|
|
168
|
-
name: "Voice Agent",
|
|
169
|
-
instructions:
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
name: "Voice Agent",
|
|
171
|
+
instructions:
|
|
172
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
173
|
+
model: openai("gpt-4o"),
|
|
174
|
+
voice: new GoogleVoice(),
|
|
172
175
|
});
|
|
173
176
|
|
|
174
|
-
const { text } = await voiceAgent.generate(
|
|
177
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
175
178
|
|
|
176
179
|
// Convert text to speech to an Audio Stream
|
|
177
180
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
178
|
-
speaker: "en-US-Studio-O", // Optional: specify a speaker
|
|
181
|
+
speaker: "en-US-Studio-O", // Optional: specify a speaker
|
|
179
182
|
});
|
|
180
183
|
|
|
181
184
|
playAudio(audioStream);
|
|
182
|
-
|
|
183
|
-
````
|
|
185
|
+
```
|
|
184
186
|
|
|
185
187
|
Visit the [Google Voice Reference](/reference/voice/google) for more information on the Google voice provider.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
+
|
|
189
|
+
</TabItem>
|
|
190
|
+
<TabItem value="cloudflare" label="Cloudflare">
|
|
191
|
+
|
|
188
192
|
```typescript
|
|
189
|
-
import { Agent } from
|
|
190
|
-
import { openai } from
|
|
193
|
+
import { Agent } from "@mastra/core/agent";
|
|
194
|
+
import { openai } from "@ai-sdk/openai";
|
|
191
195
|
import { CloudflareVoice } from "@mastra/voice-cloudflare";
|
|
192
196
|
import { playAudio } from "@mastra/node-audio";
|
|
193
197
|
|
|
194
198
|
const voiceAgent = new Agent({
|
|
195
199
|
name: "Voice Agent",
|
|
196
|
-
instructions:
|
|
200
|
+
instructions:
|
|
201
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
197
202
|
model: openai("gpt-4o"),
|
|
198
203
|
voice: new CloudflareVoice(),
|
|
199
204
|
});
|
|
200
205
|
|
|
201
|
-
const { text } = await voiceAgent.generate(
|
|
206
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
202
207
|
|
|
203
208
|
// Convert text to speech to an Audio Stream
|
|
204
209
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
@@ -206,53 +211,57 @@ const audioStream = await voiceAgent.voice.speak(text, {
|
|
|
206
211
|
});
|
|
207
212
|
|
|
208
213
|
playAudio(audioStream);
|
|
209
|
-
|
|
214
|
+
```
|
|
210
215
|
|
|
211
216
|
Visit the [Cloudflare Voice Reference](/reference/voice/cloudflare) for more information on the Cloudflare voice provider.
|
|
212
217
|
|
|
213
|
-
</
|
|
214
|
-
<
|
|
218
|
+
</TabItem>
|
|
219
|
+
<TabItem value="deepgram" label="Deepgram">
|
|
220
|
+
|
|
215
221
|
```typescript
|
|
216
|
-
import { Agent } from
|
|
217
|
-
import { openai } from
|
|
222
|
+
import { Agent } from "@mastra/core/agent";
|
|
223
|
+
import { openai } from "@ai-sdk/openai";
|
|
218
224
|
import { DeepgramVoice } from "@mastra/voice-deepgram";
|
|
219
225
|
import { playAudio } from "@mastra/node-audio";
|
|
220
226
|
|
|
221
227
|
const voiceAgent = new Agent({
|
|
222
|
-
name: "Voice Agent",
|
|
223
|
-
instructions:
|
|
224
|
-
|
|
225
|
-
|
|
228
|
+
name: "Voice Agent",
|
|
229
|
+
instructions:
|
|
230
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
231
|
+
model: openai("gpt-4o"),
|
|
232
|
+
voice: new DeepgramVoice(),
|
|
226
233
|
});
|
|
227
234
|
|
|
228
|
-
const { text } = await voiceAgent.generate(
|
|
235
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
229
236
|
|
|
230
237
|
// Convert text to speech to an Audio Stream
|
|
231
238
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
232
|
-
speaker: "aura-english-us", // Optional: specify a speaker
|
|
239
|
+
speaker: "aura-english-us", // Optional: specify a speaker
|
|
233
240
|
});
|
|
234
241
|
|
|
235
242
|
playAudio(audioStream);
|
|
236
|
-
|
|
237
|
-
````
|
|
243
|
+
```
|
|
238
244
|
|
|
239
245
|
Visit the [Deepgram Voice Reference](/reference/voice/deepgram) for more information on the Deepgram voice provider.
|
|
240
|
-
|
|
241
|
-
|
|
246
|
+
|
|
247
|
+
</TabItem>
|
|
248
|
+
<TabItem value="speechify" label="Speechify">
|
|
249
|
+
|
|
242
250
|
```typescript
|
|
243
|
-
import { Agent } from
|
|
244
|
-
import { openai } from
|
|
251
|
+
import { Agent } from "@mastra/core/agent";
|
|
252
|
+
import { openai } from "@ai-sdk/openai";
|
|
245
253
|
import { SpeechifyVoice } from "@mastra/voice-speechify";
|
|
246
254
|
import { playAudio } from "@mastra/node-audio";
|
|
247
255
|
|
|
248
256
|
const voiceAgent = new Agent({
|
|
249
257
|
name: "Voice Agent",
|
|
250
|
-
instructions:
|
|
258
|
+
instructions:
|
|
259
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
251
260
|
model: openai("gpt-4o"),
|
|
252
261
|
voice: new SpeechifyVoice(),
|
|
253
262
|
});
|
|
254
263
|
|
|
255
|
-
const { text } = await voiceAgent.generate(
|
|
264
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
256
265
|
|
|
257
266
|
// Convert text to speech to an Audio Stream
|
|
258
267
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
@@ -260,53 +269,57 @@ const audioStream = await voiceAgent.voice.speak(text, {
|
|
|
260
269
|
});
|
|
261
270
|
|
|
262
271
|
playAudio(audioStream);
|
|
263
|
-
|
|
272
|
+
```
|
|
264
273
|
|
|
265
274
|
Visit the [Speechify Voice Reference](/reference/voice/speechify) for more information on the Speechify voice provider.
|
|
266
275
|
|
|
267
|
-
</
|
|
268
|
-
<
|
|
276
|
+
</TabItem>
|
|
277
|
+
<TabItem value="sarvam" label="Sarvam">
|
|
278
|
+
|
|
269
279
|
```typescript
|
|
270
|
-
import { Agent } from
|
|
271
|
-
import { openai } from
|
|
280
|
+
import { Agent } from "@mastra/core/agent";
|
|
281
|
+
import { openai } from "@ai-sdk/openai";
|
|
272
282
|
import { SarvamVoice } from "@mastra/voice-sarvam";
|
|
273
283
|
import { playAudio } from "@mastra/node-audio";
|
|
274
284
|
|
|
275
285
|
const voiceAgent = new Agent({
|
|
276
|
-
name: "Voice Agent",
|
|
277
|
-
instructions:
|
|
278
|
-
|
|
279
|
-
|
|
286
|
+
name: "Voice Agent",
|
|
287
|
+
instructions:
|
|
288
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
289
|
+
model: openai("gpt-4o"),
|
|
290
|
+
voice: new SarvamVoice(),
|
|
280
291
|
});
|
|
281
292
|
|
|
282
|
-
const { text } = await voiceAgent.generate(
|
|
293
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
283
294
|
|
|
284
295
|
// Convert text to speech to an Audio Stream
|
|
285
296
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
286
|
-
speaker: "default", // Optional: specify a speaker
|
|
297
|
+
speaker: "default", // Optional: specify a speaker
|
|
287
298
|
});
|
|
288
299
|
|
|
289
300
|
playAudio(audioStream);
|
|
290
|
-
|
|
291
|
-
````
|
|
301
|
+
```
|
|
292
302
|
|
|
293
303
|
Visit the [Sarvam Voice Reference](/reference/voice/sarvam) for more information on the Sarvam voice provider.
|
|
294
|
-
|
|
295
|
-
|
|
304
|
+
|
|
305
|
+
</TabItem>
|
|
306
|
+
<TabItem value="murf" label="Murf">
|
|
307
|
+
|
|
296
308
|
```typescript
|
|
297
|
-
import { Agent } from
|
|
298
|
-
import { openai } from
|
|
309
|
+
import { Agent } from "@mastra/core/agent";
|
|
310
|
+
import { openai } from "@ai-sdk/openai";
|
|
299
311
|
import { MurfVoice } from "@mastra/voice-murf";
|
|
300
312
|
import { playAudio } from "@mastra/node-audio";
|
|
301
313
|
|
|
302
314
|
const voiceAgent = new Agent({
|
|
303
315
|
name: "Voice Agent",
|
|
304
|
-
instructions:
|
|
316
|
+
instructions:
|
|
317
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
305
318
|
model: openai("gpt-4o"),
|
|
306
319
|
voice: new MurfVoice(),
|
|
307
320
|
});
|
|
308
321
|
|
|
309
|
-
const { text } = await voiceAgent.generate(
|
|
322
|
+
const { text } = await voiceAgent.generate("What color is the sky?");
|
|
310
323
|
|
|
311
324
|
// Convert text to speech to an Audio Stream
|
|
312
325
|
const audioStream = await voiceAgent.voice.speak(text, {
|
|
@@ -314,11 +327,11 @@ const audioStream = await voiceAgent.voice.speak(text, {
|
|
|
314
327
|
});
|
|
315
328
|
|
|
316
329
|
playAudio(audioStream);
|
|
317
|
-
|
|
330
|
+
```
|
|
318
331
|
|
|
319
332
|
Visit the [Murf Voice Reference](/reference/voice/murf) for more information on the Murf voice provider.
|
|
320
333
|
|
|
321
|
-
</
|
|
334
|
+
</TabItem>
|
|
322
335
|
</Tabs>
|
|
323
336
|
|
|
324
337
|
### Speech to Text (STT)
|
|
@@ -330,26 +343,21 @@ You can download a sample audio file from [here](https://github.com/mastra-ai/re
|
|
|
330
343
|
<br />
|
|
331
344
|
<AudioPlayback audio="https://github.com/mastra-ai/realtime-voice-demo/raw/refs/heads/main/how_can_i_help_you.mp3" />
|
|
332
345
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
Each tab shows how to set up and use a specific STT provider for transcribing audio to text.
|
|
336
|
-
The tabs help users understand how to implement speech recognition with different providers.
|
|
337
|
-
Each tab includes code examples showing audio file handling, transcription, and response generation.
|
|
338
|
-
*/}
|
|
346
|
+
<Tabs>
|
|
347
|
+
<TabItem value="openai" label="OpenAI">
|
|
339
348
|
|
|
340
|
-
<Tabs items={["OpenAI", "Azure", "ElevenLabs", "Google", "Cloudflare", "Deepgram", "Sarvam"]}>
|
|
341
|
-
<Tabs.Tab>
|
|
342
349
|
```typescript
|
|
343
|
-
import { Agent } from
|
|
344
|
-
import { openai } from
|
|
350
|
+
import { Agent } from "@mastra/core/agent";
|
|
351
|
+
import { openai } from "@ai-sdk/openai";
|
|
345
352
|
import { OpenAIVoice } from "@mastra/voice-openai";
|
|
346
|
-
import { createReadStream } from
|
|
353
|
+
import { createReadStream } from "fs";
|
|
347
354
|
|
|
348
355
|
const voiceAgent = new Agent({
|
|
349
|
-
name: "Voice Agent",
|
|
350
|
-
instructions:
|
|
351
|
-
|
|
352
|
-
|
|
356
|
+
name: "Voice Agent",
|
|
357
|
+
instructions:
|
|
358
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
359
|
+
model: openai("gpt-4o"),
|
|
360
|
+
voice: new OpenAIVoice(),
|
|
353
361
|
});
|
|
354
362
|
|
|
355
363
|
// Use an audio file from a URL
|
|
@@ -361,22 +369,24 @@ console.log(`User said: ${transcript}`);
|
|
|
361
369
|
|
|
362
370
|
// Generate a response based on the transcript
|
|
363
371
|
const { text } = await voiceAgent.generate(transcript);
|
|
364
|
-
|
|
365
|
-
````
|
|
372
|
+
```
|
|
366
373
|
|
|
367
374
|
Visit the [OpenAI Voice Reference](/reference/voice/openai) for more information on the OpenAI voice provider.
|
|
368
|
-
|
|
369
|
-
|
|
375
|
+
|
|
376
|
+
</TabItem>
|
|
377
|
+
<TabItem value="azure" label="Azure">
|
|
378
|
+
|
|
370
379
|
```typescript
|
|
371
|
-
import { createReadStream } from
|
|
372
|
-
import { Agent } from
|
|
373
|
-
import { openai } from
|
|
380
|
+
import { createReadStream } from "fs";
|
|
381
|
+
import { Agent } from "@mastra/core/agent";
|
|
382
|
+
import { openai } from "@ai-sdk/openai";
|
|
374
383
|
import { AzureVoice } from "@mastra/voice-azure";
|
|
375
|
-
import { createReadStream } from
|
|
384
|
+
import { createReadStream } from "fs";
|
|
376
385
|
|
|
377
386
|
const voiceAgent = new Agent({
|
|
378
387
|
name: "Voice Agent",
|
|
379
|
-
instructions:
|
|
388
|
+
instructions:
|
|
389
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
380
390
|
model: openai("gpt-4o"),
|
|
381
391
|
voice: new AzureVoice(),
|
|
382
392
|
});
|
|
@@ -390,23 +400,25 @@ console.log(`User said: ${transcript}`);
|
|
|
390
400
|
|
|
391
401
|
// Generate a response based on the transcript
|
|
392
402
|
const { text } = await voiceAgent.generate(transcript);
|
|
393
|
-
|
|
403
|
+
```
|
|
394
404
|
|
|
395
405
|
Visit the [Azure Voice Reference](/reference/voice/azure) for more information on the Azure voice provider.
|
|
396
406
|
|
|
397
|
-
</
|
|
398
|
-
<
|
|
407
|
+
</TabItem>
|
|
408
|
+
<TabItem value="elevenlabs" label="ElevenLabs">
|
|
409
|
+
|
|
399
410
|
```typescript
|
|
400
|
-
import { Agent } from
|
|
401
|
-
import { openai } from
|
|
411
|
+
import { Agent } from "@mastra/core/agent";
|
|
412
|
+
import { openai } from "@ai-sdk/openai";
|
|
402
413
|
import { ElevenLabsVoice } from "@mastra/voice-elevenlabs";
|
|
403
|
-
import { createReadStream } from
|
|
414
|
+
import { createReadStream } from "fs";
|
|
404
415
|
|
|
405
416
|
const voiceAgent = new Agent({
|
|
406
|
-
name: "Voice Agent",
|
|
407
|
-
instructions:
|
|
408
|
-
|
|
409
|
-
|
|
417
|
+
name: "Voice Agent",
|
|
418
|
+
instructions:
|
|
419
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
420
|
+
model: openai("gpt-4o"),
|
|
421
|
+
voice: new ElevenLabsVoice(),
|
|
410
422
|
});
|
|
411
423
|
|
|
412
424
|
// Use an audio file from a URL
|
|
@@ -418,21 +430,23 @@ console.log(`User said: ${transcript}`);
|
|
|
418
430
|
|
|
419
431
|
// Generate a response based on the transcript
|
|
420
432
|
const { text } = await voiceAgent.generate(transcript);
|
|
421
|
-
|
|
422
|
-
````
|
|
433
|
+
```
|
|
423
434
|
|
|
424
435
|
Visit the [ElevenLabs Voice Reference](/reference/voice/elevenlabs) for more information on the ElevenLabs voice provider.
|
|
425
|
-
|
|
426
|
-
|
|
436
|
+
|
|
437
|
+
</TabItem>
|
|
438
|
+
<TabItem value="google" label="Google">
|
|
439
|
+
|
|
427
440
|
```typescript
|
|
428
|
-
import { Agent } from
|
|
429
|
-
import { openai } from
|
|
441
|
+
import { Agent } from "@mastra/core/agent";
|
|
442
|
+
import { openai } from "@ai-sdk/openai";
|
|
430
443
|
import { GoogleVoice } from "@mastra/voice-google";
|
|
431
|
-
import { createReadStream } from
|
|
444
|
+
import { createReadStream } from "fs";
|
|
432
445
|
|
|
433
446
|
const voiceAgent = new Agent({
|
|
434
447
|
name: "Voice Agent",
|
|
435
|
-
instructions:
|
|
448
|
+
instructions:
|
|
449
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
436
450
|
model: openai("gpt-4o"),
|
|
437
451
|
voice: new GoogleVoice(),
|
|
438
452
|
});
|
|
@@ -446,23 +460,25 @@ console.log(`User said: ${transcript}`);
|
|
|
446
460
|
|
|
447
461
|
// Generate a response based on the transcript
|
|
448
462
|
const { text } = await voiceAgent.generate(transcript);
|
|
449
|
-
|
|
463
|
+
```
|
|
450
464
|
|
|
451
465
|
Visit the [Google Voice Reference](/reference/voice/google) for more information on the Google voice provider.
|
|
452
466
|
|
|
453
|
-
</
|
|
454
|
-
<
|
|
467
|
+
</TabItem>
|
|
468
|
+
<TabItem value="cloudflare" label="Cloudflare">
|
|
469
|
+
|
|
455
470
|
```typescript
|
|
456
|
-
import { Agent } from
|
|
457
|
-
import { openai } from
|
|
471
|
+
import { Agent } from "@mastra/core/agent";
|
|
472
|
+
import { openai } from "@ai-sdk/openai";
|
|
458
473
|
import { CloudflareVoice } from "@mastra/voice-cloudflare";
|
|
459
|
-
import { createReadStream } from
|
|
474
|
+
import { createReadStream } from "fs";
|
|
460
475
|
|
|
461
476
|
const voiceAgent = new Agent({
|
|
462
|
-
name: "Voice Agent",
|
|
463
|
-
instructions:
|
|
464
|
-
|
|
465
|
-
|
|
477
|
+
name: "Voice Agent",
|
|
478
|
+
instructions:
|
|
479
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
480
|
+
model: openai("gpt-4o"),
|
|
481
|
+
voice: new CloudflareVoice(),
|
|
466
482
|
});
|
|
467
483
|
|
|
468
484
|
// Use an audio file from a URL
|
|
@@ -474,21 +490,23 @@ console.log(`User said: ${transcript}`);
|
|
|
474
490
|
|
|
475
491
|
// Generate a response based on the transcript
|
|
476
492
|
const { text } = await voiceAgent.generate(transcript);
|
|
477
|
-
|
|
478
|
-
````
|
|
493
|
+
```
|
|
479
494
|
|
|
480
495
|
Visit the [Cloudflare Voice Reference](/reference/voice/cloudflare) for more information on the Cloudflare voice provider.
|
|
481
|
-
|
|
482
|
-
|
|
496
|
+
|
|
497
|
+
</TabItem>
|
|
498
|
+
<TabItem value="deepgram" label="Deepgram">
|
|
499
|
+
|
|
483
500
|
```typescript
|
|
484
|
-
import { Agent } from
|
|
485
|
-
import { openai } from
|
|
501
|
+
import { Agent } from "@mastra/core/agent";
|
|
502
|
+
import { openai } from "@ai-sdk/openai";
|
|
486
503
|
import { DeepgramVoice } from "@mastra/voice-deepgram";
|
|
487
|
-
import { createReadStream } from
|
|
504
|
+
import { createReadStream } from "fs";
|
|
488
505
|
|
|
489
506
|
const voiceAgent = new Agent({
|
|
490
507
|
name: "Voice Agent",
|
|
491
|
-
instructions:
|
|
508
|
+
instructions:
|
|
509
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
492
510
|
model: openai("gpt-4o"),
|
|
493
511
|
voice: new DeepgramVoice(),
|
|
494
512
|
});
|
|
@@ -502,23 +520,25 @@ console.log(`User said: ${transcript}`);
|
|
|
502
520
|
|
|
503
521
|
// Generate a response based on the transcript
|
|
504
522
|
const { text } = await voiceAgent.generate(transcript);
|
|
505
|
-
|
|
523
|
+
```
|
|
506
524
|
|
|
507
525
|
Visit the [Deepgram Voice Reference](/reference/voice/deepgram) for more information on the Deepgram voice provider.
|
|
508
526
|
|
|
509
|
-
</
|
|
510
|
-
<
|
|
527
|
+
</TabItem>
|
|
528
|
+
<TabItem value="sarvam" label="Sarvam">
|
|
529
|
+
|
|
511
530
|
```typescript
|
|
512
|
-
import { Agent } from
|
|
513
|
-
import { openai } from
|
|
531
|
+
import { Agent } from "@mastra/core/agent";
|
|
532
|
+
import { openai } from "@ai-sdk/openai";
|
|
514
533
|
import { SarvamVoice } from "@mastra/voice-sarvam";
|
|
515
|
-
import { createReadStream } from
|
|
534
|
+
import { createReadStream } from "fs";
|
|
516
535
|
|
|
517
536
|
const voiceAgent = new Agent({
|
|
518
|
-
name: "Voice Agent",
|
|
519
|
-
instructions:
|
|
520
|
-
|
|
521
|
-
|
|
537
|
+
name: "Voice Agent",
|
|
538
|
+
instructions:
|
|
539
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
540
|
+
model: openai("gpt-4o"),
|
|
541
|
+
voice: new SarvamVoice(),
|
|
522
542
|
});
|
|
523
543
|
|
|
524
544
|
// Use an audio file from a URL
|
|
@@ -530,11 +550,11 @@ console.log(`User said: ${transcript}`);
|
|
|
530
550
|
|
|
531
551
|
// Generate a response based on the transcript
|
|
532
552
|
const { text } = await voiceAgent.generate(transcript);
|
|
533
|
-
|
|
534
|
-
````
|
|
553
|
+
```
|
|
535
554
|
|
|
536
555
|
Visit the [Sarvam Voice Reference](/reference/voice/sarvam) for more information on the Sarvam voice provider.
|
|
537
|
-
|
|
556
|
+
|
|
557
|
+
</TabItem>
|
|
538
558
|
</Tabs>
|
|
539
559
|
|
|
540
560
|
### Speech to Speech (STS)
|
|
@@ -542,59 +562,57 @@ Visit the [Sarvam Voice Reference](/reference/voice/sarvam) for more information
|
|
|
542
562
|
Create conversational experiences with speech-to-speech capabilities. The unified API enables real-time voice interactions between users and AI agents.
|
|
543
563
|
For detailed configuration options and advanced features, check out [Speech to Speech](./speech-to-speech).
|
|
544
564
|
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
<Tabs.Tab>
|
|
553
|
-
```typescript
|
|
554
|
-
import { Agent } from '@mastra/core/agent';
|
|
555
|
-
import { openai } from '@ai-sdk/openai';
|
|
556
|
-
import { playAudio, getMicrophoneStream } from '@mastra/node-audio';
|
|
565
|
+
<Tabs>
|
|
566
|
+
<TabItem value="openai" label="OpenAI">
|
|
567
|
+
|
|
568
|
+
```typescript
|
|
569
|
+
import { Agent } from "@mastra/core/agent";
|
|
570
|
+
import { openai } from "@ai-sdk/openai";
|
|
571
|
+
import { playAudio, getMicrophoneStream } from "@mastra/node-audio";
|
|
557
572
|
import { OpenAIRealtimeVoice } from "@mastra/voice-openai-realtime";
|
|
558
573
|
|
|
559
574
|
const voiceAgent = new Agent({
|
|
560
575
|
name: "Voice Agent",
|
|
561
|
-
instructions:
|
|
576
|
+
instructions:
|
|
577
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
562
578
|
model: openai("gpt-4o"),
|
|
563
579
|
voice: new OpenAIRealtimeVoice(),
|
|
564
580
|
});
|
|
565
581
|
|
|
566
582
|
// Listen for agent audio responses
|
|
567
|
-
voiceAgent.voice.on(
|
|
583
|
+
voiceAgent.voice.on("speaker", ({ audio }) => {
|
|
568
584
|
playAudio(audio);
|
|
569
585
|
});
|
|
570
586
|
|
|
571
587
|
// Initiate the conversation
|
|
572
|
-
await voiceAgent.voice.speak(
|
|
588
|
+
await voiceAgent.voice.speak("How can I help you today?");
|
|
573
589
|
|
|
574
590
|
// Send continuous audio from the microphone
|
|
575
591
|
const micStream = getMicrophoneStream();
|
|
576
592
|
await voiceAgent.voice.send(micStream);
|
|
577
|
-
|
|
593
|
+
```
|
|
578
594
|
|
|
579
595
|
Visit the [OpenAI Voice Reference](/reference/voice/openai-realtime) for more information on the OpenAI voice provider.
|
|
580
596
|
|
|
581
|
-
</
|
|
582
|
-
<
|
|
597
|
+
</TabItem>
|
|
598
|
+
<TabItem value="google" label="Google">
|
|
599
|
+
|
|
583
600
|
```typescript
|
|
584
|
-
import { Agent } from
|
|
585
|
-
import { openai } from
|
|
586
|
-
import { playAudio, getMicrophoneStream } from
|
|
601
|
+
import { Agent } from "@mastra/core/agent";
|
|
602
|
+
import { openai } from "@ai-sdk/openai";
|
|
603
|
+
import { playAudio, getMicrophoneStream } from "@mastra/node-audio";
|
|
587
604
|
import { GeminiLiveVoice } from "@mastra/voice-google-gemini-live";
|
|
588
605
|
|
|
589
606
|
const voiceAgent = new Agent({
|
|
590
607
|
name: "Voice Agent",
|
|
591
|
-
instructions:
|
|
608
|
+
instructions:
|
|
609
|
+
"You are a voice assistant that can help users with their tasks.",
|
|
592
610
|
model: openai("gpt-4o"),
|
|
593
611
|
voice: new GeminiLiveVoice({
|
|
594
612
|
// Live API mode
|
|
595
613
|
apiKey: process.env.GOOGLE_API_KEY,
|
|
596
|
-
model:
|
|
597
|
-
speaker:
|
|
614
|
+
model: "gemini-2.0-flash-exp",
|
|
615
|
+
speaker: "Puck",
|
|
598
616
|
debug: true,
|
|
599
617
|
// Vertex AI alternative:
|
|
600
618
|
// vertexAI: true,
|
|
@@ -608,17 +626,17 @@ const voiceAgent = new Agent({
|
|
|
608
626
|
await voiceAgent.voice.connect();
|
|
609
627
|
|
|
610
628
|
// Listen for agent audio responses
|
|
611
|
-
voiceAgent.voice.on(
|
|
629
|
+
voiceAgent.voice.on("speaker", ({ audio }) => {
|
|
612
630
|
playAudio(audio);
|
|
613
631
|
});
|
|
614
632
|
|
|
615
633
|
// Listen for text responses and transcriptions
|
|
616
|
-
voiceAgent.voice.on(
|
|
634
|
+
voiceAgent.voice.on("writing", ({ text, role }) => {
|
|
617
635
|
console.log(`${role}: ${text}`);
|
|
618
636
|
});
|
|
619
637
|
|
|
620
638
|
// Initiate the conversation
|
|
621
|
-
await voiceAgent.voice.speak(
|
|
639
|
+
await voiceAgent.voice.speak("How can I help you today?");
|
|
622
640
|
|
|
623
641
|
// Send continuous audio from the microphone
|
|
624
642
|
const micStream = getMicrophoneStream();
|
|
@@ -627,22 +645,16 @@ await voiceAgent.voice.send(micStream);
|
|
|
627
645
|
|
|
628
646
|
Visit the [Google Gemini Live Reference](/reference/voice/google-gemini-live) for more information on the Google Gemini Live voice provider.
|
|
629
647
|
|
|
630
|
-
</
|
|
648
|
+
</TabItem>
|
|
631
649
|
</Tabs>
|
|
632
650
|
|
|
633
651
|
## Voice Configuration
|
|
634
652
|
|
|
635
653
|
Each voice provider can be configured with different models and options. Below are the detailed configuration options for all supported providers:
|
|
636
654
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
Each tab demonstrates how to configure a specific voice provider with all available options and settings.
|
|
640
|
-
The tabs help users understand the full configuration capabilities of each provider including models, languages, and advanced settings.
|
|
641
|
-
Each tab shows both speech and listening model configurations where applicable.
|
|
642
|
-
*/}
|
|
655
|
+
<Tabs>
|
|
656
|
+
<TabItem value="openai" label="OpenAI">
|
|
643
657
|
|
|
644
|
-
<Tabs items={["OpenAI", "Azure", "ElevenLabs", "PlayAI", "Google", "Cloudflare", "Deepgram", "Speechify", "Sarvam", "Murf", "OpenAI Realtime", "Google Gemini Live"]}>
|
|
645
|
-
<Tabs.Tab>
|
|
646
658
|
```typescript
|
|
647
659
|
// OpenAI Voice Configuration
|
|
648
660
|
const voice = new OpenAIVoice({
|
|
@@ -664,8 +676,9 @@ const voice = new OpenAIVoice({
|
|
|
664
676
|
|
|
665
677
|
Visit the [OpenAI Voice Reference](/reference/voice/openai) for more information on the OpenAI voice provider.
|
|
666
678
|
|
|
667
|
-
</
|
|
668
|
-
<
|
|
679
|
+
</TabItem>
|
|
680
|
+
<TabItem value="azure" label="Azure">
|
|
681
|
+
|
|
669
682
|
```typescript
|
|
670
683
|
// Azure Voice Configuration
|
|
671
684
|
const voice = new AzureVoice({
|
|
@@ -689,8 +702,9 @@ const voice = new AzureVoice({
|
|
|
689
702
|
|
|
690
703
|
Visit the [Azure Voice Reference](/reference/voice/azure) for more information on the Azure voice provider.
|
|
691
704
|
|
|
692
|
-
</
|
|
693
|
-
<
|
|
705
|
+
</TabItem>
|
|
706
|
+
<TabItem value="elevenlabs" label="ElevenLabs">
|
|
707
|
+
|
|
694
708
|
```typescript
|
|
695
709
|
// ElevenLabs Voice Configuration
|
|
696
710
|
const voice = new ElevenLabsVoice({
|
|
@@ -707,8 +721,9 @@ const voice = new ElevenLabsVoice({
|
|
|
707
721
|
|
|
708
722
|
Visit the [ElevenLabs Voice Reference](/reference/voice/elevenlabs) for more information on the ElevenLabs voice provider.
|
|
709
723
|
|
|
710
|
-
</
|
|
711
|
-
<
|
|
724
|
+
</TabItem>
|
|
725
|
+
<TabItem value="playai" label="PlayAI">
|
|
726
|
+
|
|
712
727
|
```typescript
|
|
713
728
|
// PlayAI Voice Configuration
|
|
714
729
|
const voice = new PlayAIVoice({
|
|
@@ -725,8 +740,9 @@ const voice = new PlayAIVoice({
|
|
|
725
740
|
|
|
726
741
|
Visit the [PlayAI Voice Reference](/reference/voice/playai) for more information on the PlayAI voice provider.
|
|
727
742
|
|
|
728
|
-
</
|
|
729
|
-
<
|
|
743
|
+
</TabItem>
|
|
744
|
+
<TabItem value="google" label="Google">
|
|
745
|
+
|
|
730
746
|
```typescript
|
|
731
747
|
// Google Voice Configuration
|
|
732
748
|
const voice = new GoogleVoice({
|
|
@@ -746,8 +762,9 @@ const voice = new GoogleVoice({
|
|
|
746
762
|
|
|
747
763
|
Visit the [Google Voice Reference](/reference/voice/google) for more information on the Google voice provider.
|
|
748
764
|
|
|
749
|
-
</
|
|
750
|
-
<
|
|
765
|
+
</TabItem>
|
|
766
|
+
<TabItem value="cloudflare" label="Cloudflare">
|
|
767
|
+
|
|
751
768
|
```typescript
|
|
752
769
|
// Cloudflare Voice Configuration
|
|
753
770
|
const voice = new CloudflareVoice({
|
|
@@ -764,8 +781,9 @@ const voice = new CloudflareVoice({
|
|
|
764
781
|
|
|
765
782
|
Visit the [Cloudflare Voice Reference](/reference/voice/cloudflare) for more information on the Cloudflare voice provider.
|
|
766
783
|
|
|
767
|
-
</
|
|
768
|
-
<
|
|
784
|
+
</TabItem>
|
|
785
|
+
<TabItem value="deepgram" label="Deepgram">
|
|
786
|
+
|
|
769
787
|
```typescript
|
|
770
788
|
// Deepgram Voice Configuration
|
|
771
789
|
const voice = new DeepgramVoice({
|
|
@@ -785,8 +803,9 @@ const voice = new DeepgramVoice({
|
|
|
785
803
|
|
|
786
804
|
Visit the [Deepgram Voice Reference](/reference/voice/deepgram) for more information on the Deepgram voice provider.
|
|
787
805
|
|
|
788
|
-
</
|
|
789
|
-
<
|
|
806
|
+
</TabItem>
|
|
807
|
+
<TabItem value="speechify" label="Speechify">
|
|
808
|
+
|
|
790
809
|
```typescript
|
|
791
810
|
// Speechify Voice Configuration
|
|
792
811
|
const voice = new SpeechifyVoice({
|
|
@@ -803,8 +822,9 @@ const voice = new SpeechifyVoice({
|
|
|
803
822
|
|
|
804
823
|
Visit the [Speechify Voice Reference](/reference/voice/speechify) for more information on the Speechify voice provider.
|
|
805
824
|
|
|
806
|
-
</
|
|
807
|
-
<
|
|
825
|
+
</TabItem>
|
|
826
|
+
<TabItem value="sarvam" label="Sarvam">
|
|
827
|
+
|
|
808
828
|
```typescript
|
|
809
829
|
// Sarvam Voice Configuration
|
|
810
830
|
const voice = new SarvamVoice({
|
|
@@ -820,8 +840,9 @@ const voice = new SarvamVoice({
|
|
|
820
840
|
|
|
821
841
|
Visit the [Sarvam Voice Reference](/reference/voice/sarvam) for more information on the Sarvam voice provider.
|
|
822
842
|
|
|
823
|
-
</
|
|
824
|
-
<
|
|
843
|
+
</TabItem>
|
|
844
|
+
<TabItem value="murf" label="Murf">
|
|
845
|
+
|
|
825
846
|
```typescript
|
|
826
847
|
// Murf Voice Configuration
|
|
827
848
|
const voice = new MurfVoice({
|
|
@@ -837,8 +858,9 @@ const voice = new MurfVoice({
|
|
|
837
858
|
|
|
838
859
|
Visit the [Murf Voice Reference](/reference/voice/murf) for more information on the Murf voice provider.
|
|
839
860
|
|
|
840
|
-
</
|
|
841
|
-
<
|
|
861
|
+
</TabItem>
|
|
862
|
+
<TabItem value="openai-realtime" label="OpenAI Realtime">
|
|
863
|
+
|
|
842
864
|
```typescript
|
|
843
865
|
// OpenAI Realtime Voice Configuration
|
|
844
866
|
const voice = new OpenAIRealtimeVoice({
|
|
@@ -858,8 +880,9 @@ const voice = new OpenAIRealtimeVoice({
|
|
|
858
880
|
|
|
859
881
|
For more information on the OpenAI Realtime voice provider, refer to the [OpenAI Realtime Voice Reference](/reference/voice/openai-realtime).
|
|
860
882
|
|
|
861
|
-
</
|
|
862
|
-
<
|
|
883
|
+
</TabItem>
|
|
884
|
+
<TabItem value="google-gemini-live" label="Google Gemini Live">
|
|
885
|
+
|
|
863
886
|
```typescript
|
|
864
887
|
// Google Gemini Live Voice Configuration
|
|
865
888
|
const voice = new GeminiLiveVoice({
|
|
@@ -874,7 +897,7 @@ const voice = new GeminiLiveVoice({
|
|
|
874
897
|
|
|
875
898
|
Visit the [Google Gemini Live Reference](/reference/voice/google-gemini-live) for more information on the Google Gemini Live voice provider.
|
|
876
899
|
|
|
877
|
-
</
|
|
900
|
+
</TabItem>
|
|
878
901
|
</Tabs>
|
|
879
902
|
|
|
880
903
|
### Using Multiple Voice Providers
|
|
@@ -932,13 +955,13 @@ For more information on the CompositeVoice, refer to the [CompositeVoice Referen
|
|
|
932
955
|
|
|
933
956
|
## More Resources
|
|
934
957
|
|
|
935
|
-
- [CompositeVoice](
|
|
936
|
-
- [MastraVoice](
|
|
937
|
-
- [OpenAI Voice](
|
|
938
|
-
- [OpenAI Realtime Voice](
|
|
939
|
-
- [Azure Voice](
|
|
940
|
-
- [Google Voice](
|
|
941
|
-
- [Google Gemini Live Voice](
|
|
942
|
-
- [Deepgram Voice](
|
|
943
|
-
- [PlayAI Voice](
|
|
944
|
-
- [Voice Examples](
|
|
958
|
+
- [CompositeVoice](/reference/voice/composite-voice)
|
|
959
|
+
- [MastraVoice](/reference/voice/mastra-voice)
|
|
960
|
+
- [OpenAI Voice](/reference/voice/openai)
|
|
961
|
+
- [OpenAI Realtime Voice](/reference/voice/openai-realtime)
|
|
962
|
+
- [Azure Voice](/reference/voice/azure)
|
|
963
|
+
- [Google Voice](/reference/voice/google)
|
|
964
|
+
- [Google Gemini Live Voice](/reference/voice/google-gemini-live)
|
|
965
|
+
- [Deepgram Voice](/reference/voice/deepgram)
|
|
966
|
+
- [PlayAI Voice](/reference/voice/playai)
|
|
967
|
+
- [Voice Examples](/examples/voice/text-to-speech)
|