@mastra/mcp-docs-server 0.0.1-alpha.1

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.
Files changed (246) hide show
  1. package/.docs/organized/changelogs/%40mastra%2Fastra.md +302 -0
  2. package/.docs/organized/changelogs/%40mastra%2Fchroma.md +302 -0
  3. package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +302 -0
  4. package/.docs/organized/changelogs/%40mastra%2Fcomposio.md +302 -0
  5. package/.docs/organized/changelogs/%40mastra%2Fcore.md +302 -0
  6. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +302 -0
  7. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +302 -0
  8. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +302 -0
  9. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +302 -0
  10. package/.docs/organized/changelogs/%40mastra%2Fevals.md +302 -0
  11. package/.docs/organized/changelogs/%40mastra%2Ffirecrawl.md +302 -0
  12. package/.docs/organized/changelogs/%40mastra%2Fgithub.md +302 -0
  13. package/.docs/organized/changelogs/%40mastra%2Floggers.md +302 -0
  14. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +11 -0
  15. package/.docs/organized/changelogs/%40mastra%2Fmcp.md +302 -0
  16. package/.docs/organized/changelogs/%40mastra%2Fmemory.md +302 -0
  17. package/.docs/organized/changelogs/%40mastra%2Fpg.md +302 -0
  18. package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +302 -0
  19. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +302 -0
  20. package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +302 -0
  21. package/.docs/organized/changelogs/%40mastra%2Frag.md +302 -0
  22. package/.docs/organized/changelogs/%40mastra%2Fragie.md +302 -0
  23. package/.docs/organized/changelogs/%40mastra%2Fspeech-azure.md +302 -0
  24. package/.docs/organized/changelogs/%40mastra%2Fspeech-deepgram.md +302 -0
  25. package/.docs/organized/changelogs/%40mastra%2Fspeech-elevenlabs.md +302 -0
  26. package/.docs/organized/changelogs/%40mastra%2Fspeech-google.md +302 -0
  27. package/.docs/organized/changelogs/%40mastra%2Fspeech-ibm.md +302 -0
  28. package/.docs/organized/changelogs/%40mastra%2Fspeech-murf.md +302 -0
  29. package/.docs/organized/changelogs/%40mastra%2Fspeech-openai.md +302 -0
  30. package/.docs/organized/changelogs/%40mastra%2Fspeech-playai.md +302 -0
  31. package/.docs/organized/changelogs/%40mastra%2Fspeech-replicate.md +302 -0
  32. package/.docs/organized/changelogs/%40mastra%2Fspeech-speechify.md +302 -0
  33. package/.docs/organized/changelogs/%40mastra%2Fstabilityai.md +302 -0
  34. package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +59 -0
  35. package/.docs/organized/changelogs/%40mastra%2Fupstash.md +302 -0
  36. package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +302 -0
  37. package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +302 -0
  38. package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +302 -0
  39. package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +302 -0
  40. package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +302 -0
  41. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +24 -0
  42. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +302 -0
  43. package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +302 -0
  44. package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +12 -0
  45. package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +302 -0
  46. package/.docs/organized/changelogs/create-mastra.md +302 -0
  47. package/.docs/organized/changelogs/mastra.md +302 -0
  48. package/.docs/organized/code-examples/agent.md +385 -0
  49. package/.docs/organized/code-examples/ai-sdk-useChat.md +377 -0
  50. package/.docs/organized/code-examples/assistant-ui.md +37 -0
  51. package/.docs/organized/code-examples/bird-checker-with-express.md +235 -0
  52. package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +360 -0
  53. package/.docs/organized/code-examples/bird-checker-with-nextjs.md +250 -0
  54. package/.docs/organized/code-examples/crypto-chatbot.md +96 -0
  55. package/.docs/organized/code-examples/fireworks-r1.md +159 -0
  56. package/.docs/organized/code-examples/integrations.md +184 -0
  57. package/.docs/organized/code-examples/mcp-configuration.md +341 -0
  58. package/.docs/organized/code-examples/memory-todo-agent.md +161 -0
  59. package/.docs/organized/code-examples/memory-with-context.md +167 -0
  60. package/.docs/organized/code-examples/memory-with-libsql.md +204 -0
  61. package/.docs/organized/code-examples/memory-with-pg.md +224 -0
  62. package/.docs/organized/code-examples/memory-with-upstash.md +268 -0
  63. package/.docs/organized/code-examples/quick-start.md +127 -0
  64. package/.docs/organized/code-examples/stock-price-tool.md +124 -0
  65. package/.docs/organized/code-examples/weather-agent.md +352 -0
  66. package/.docs/organized/code-examples/workflow-ai-recruiter.md +159 -0
  67. package/.docs/organized/code-examples/workflow-with-inline-steps.md +111 -0
  68. package/.docs/organized/code-examples/workflow-with-memory.md +393 -0
  69. package/.docs/organized/code-examples/workflow-with-separate-steps.md +131 -0
  70. package/.docs/raw/agents/00-overview.mdx +185 -0
  71. package/.docs/raw/agents/01-agent-memory.mdx +610 -0
  72. package/.docs/raw/agents/02-adding-tools.mdx +224 -0
  73. package/.docs/raw/agents/03-adding-voice.mdx +170 -0
  74. package/.docs/raw/deployment/deployment.mdx +156 -0
  75. package/.docs/raw/deployment/logging-and-tracing.mdx +242 -0
  76. package/.docs/raw/deployment/server.mdx +114 -0
  77. package/.docs/raw/evals/00-overview.mdx +106 -0
  78. package/.docs/raw/evals/01-supported-evals.mdx +31 -0
  79. package/.docs/raw/evals/02-custom-eval.mdx +187 -0
  80. package/.docs/raw/faq/index.mdx +63 -0
  81. package/.docs/raw/frameworks/01-next-js.mdx +238 -0
  82. package/.docs/raw/frameworks/02-ai-sdk.mdx +218 -0
  83. package/.docs/raw/getting-started/installation.mdx +436 -0
  84. package/.docs/raw/getting-started/project-structure.mdx +80 -0
  85. package/.docs/raw/guides/01-chef-michel.mdx +242 -0
  86. package/.docs/raw/guides/02-stock-agent.mdx +182 -0
  87. package/.docs/raw/guides/03-recruiter.mdx +187 -0
  88. package/.docs/raw/index.mdx +22 -0
  89. package/.docs/raw/local-dev/creating-projects.mdx +74 -0
  90. package/.docs/raw/local-dev/integrations.mdx +127 -0
  91. package/.docs/raw/local-dev/mastra-dev.mdx +65 -0
  92. package/.docs/raw/rag/chunking-and-embedding.mdx +128 -0
  93. package/.docs/raw/rag/overview.mdx +85 -0
  94. package/.docs/raw/rag/retrieval.mdx +362 -0
  95. package/.docs/raw/rag/vector-databases.mdx +271 -0
  96. package/.docs/raw/reference/agents/createTool.mdx +190 -0
  97. package/.docs/raw/reference/agents/generate.mdx +327 -0
  98. package/.docs/raw/reference/agents/getAgent.mdx +54 -0
  99. package/.docs/raw/reference/agents/stream.mdx +361 -0
  100. package/.docs/raw/reference/cli/build.mdx +48 -0
  101. package/.docs/raw/reference/cli/deploy.mdx +22 -0
  102. package/.docs/raw/reference/cli/dev.mdx +97 -0
  103. package/.docs/raw/reference/cli/init.mdx +43 -0
  104. package/.docs/raw/reference/client-js/agents.mdx +90 -0
  105. package/.docs/raw/reference/client-js/error-handling.mdx +38 -0
  106. package/.docs/raw/reference/client-js/index.mdx +127 -0
  107. package/.docs/raw/reference/client-js/logs.mdx +24 -0
  108. package/.docs/raw/reference/client-js/memory.mdx +94 -0
  109. package/.docs/raw/reference/client-js/telemetry.mdx +20 -0
  110. package/.docs/raw/reference/client-js/tools.mdx +44 -0
  111. package/.docs/raw/reference/client-js/vectors.mdx +79 -0
  112. package/.docs/raw/reference/client-js/workflows.mdx +137 -0
  113. package/.docs/raw/reference/core/mastra-class.mdx +232 -0
  114. package/.docs/raw/reference/deployer/cloudflare.mdx +176 -0
  115. package/.docs/raw/reference/deployer/deployer.mdx +159 -0
  116. package/.docs/raw/reference/deployer/netlify.mdx +88 -0
  117. package/.docs/raw/reference/deployer/vercel.mdx +97 -0
  118. package/.docs/raw/reference/evals/answer-relevancy.mdx +186 -0
  119. package/.docs/raw/reference/evals/bias.mdx +186 -0
  120. package/.docs/raw/reference/evals/completeness.mdx +174 -0
  121. package/.docs/raw/reference/evals/content-similarity.mdx +183 -0
  122. package/.docs/raw/reference/evals/context-position.mdx +190 -0
  123. package/.docs/raw/reference/evals/context-precision.mdx +189 -0
  124. package/.docs/raw/reference/evals/context-relevancy.mdx +188 -0
  125. package/.docs/raw/reference/evals/contextual-recall.mdx +191 -0
  126. package/.docs/raw/reference/evals/faithfulness.mdx +193 -0
  127. package/.docs/raw/reference/evals/hallucination.mdx +219 -0
  128. package/.docs/raw/reference/evals/keyword-coverage.mdx +176 -0
  129. package/.docs/raw/reference/evals/prompt-alignment.mdx +238 -0
  130. package/.docs/raw/reference/evals/summarization.mdx +205 -0
  131. package/.docs/raw/reference/evals/textual-difference.mdx +161 -0
  132. package/.docs/raw/reference/evals/tone-consistency.mdx +181 -0
  133. package/.docs/raw/reference/evals/toxicity.mdx +165 -0
  134. package/.docs/raw/reference/index.mdx +8 -0
  135. package/.docs/raw/reference/memory/Memory.mdx +186 -0
  136. package/.docs/raw/reference/memory/createThread.mdx +93 -0
  137. package/.docs/raw/reference/memory/getThreadById.mdx +43 -0
  138. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +45 -0
  139. package/.docs/raw/reference/memory/query.mdx +164 -0
  140. package/.docs/raw/reference/observability/create-logger.mdx +106 -0
  141. package/.docs/raw/reference/observability/logger.mdx +55 -0
  142. package/.docs/raw/reference/observability/otel-config.mdx +120 -0
  143. package/.docs/raw/reference/observability/providers/braintrust.mdx +40 -0
  144. package/.docs/raw/reference/observability/providers/index.mdx +15 -0
  145. package/.docs/raw/reference/observability/providers/laminar.mdx +41 -0
  146. package/.docs/raw/reference/observability/providers/langfuse.mdx +51 -0
  147. package/.docs/raw/reference/observability/providers/langsmith.mdx +46 -0
  148. package/.docs/raw/reference/observability/providers/langwatch.mdx +45 -0
  149. package/.docs/raw/reference/observability/providers/new-relic.mdx +40 -0
  150. package/.docs/raw/reference/observability/providers/signoz.mdx +40 -0
  151. package/.docs/raw/reference/observability/providers/traceloop.mdx +40 -0
  152. package/.docs/raw/reference/rag/astra.mdx +258 -0
  153. package/.docs/raw/reference/rag/chroma.mdx +281 -0
  154. package/.docs/raw/reference/rag/chunk.mdx +237 -0
  155. package/.docs/raw/reference/rag/document.mdx +129 -0
  156. package/.docs/raw/reference/rag/embeddings.mdx +160 -0
  157. package/.docs/raw/reference/rag/extract-params.mdx +72 -0
  158. package/.docs/raw/reference/rag/graph-rag.mdx +182 -0
  159. package/.docs/raw/reference/rag/libsql.mdx +357 -0
  160. package/.docs/raw/reference/rag/metadata-filters.mdx +298 -0
  161. package/.docs/raw/reference/rag/pg.mdx +477 -0
  162. package/.docs/raw/reference/rag/pinecone.mdx +249 -0
  163. package/.docs/raw/reference/rag/qdrant.mdx +236 -0
  164. package/.docs/raw/reference/rag/rerank.mdx +212 -0
  165. package/.docs/raw/reference/rag/turbopuffer.mdx +249 -0
  166. package/.docs/raw/reference/rag/upstash.mdx +198 -0
  167. package/.docs/raw/reference/rag/vectorize.mdx +253 -0
  168. package/.docs/raw/reference/storage/libsql.mdx +74 -0
  169. package/.docs/raw/reference/storage/postgresql.mdx +48 -0
  170. package/.docs/raw/reference/storage/upstash.mdx +86 -0
  171. package/.docs/raw/reference/tools/client.mdx +180 -0
  172. package/.docs/raw/reference/tools/document-chunker-tool.mdx +141 -0
  173. package/.docs/raw/reference/tools/graph-rag-tool.mdx +154 -0
  174. package/.docs/raw/reference/tools/mcp-configuration.mdx +206 -0
  175. package/.docs/raw/reference/tools/vector-query-tool.mdx +212 -0
  176. package/.docs/raw/reference/voice/composite-voice.mdx +140 -0
  177. package/.docs/raw/reference/voice/deepgram.mdx +164 -0
  178. package/.docs/raw/reference/voice/elevenlabs.mdx +216 -0
  179. package/.docs/raw/reference/voice/google.mdx +198 -0
  180. package/.docs/raw/reference/voice/mastra-voice.mdx +394 -0
  181. package/.docs/raw/reference/voice/murf.mdx +251 -0
  182. package/.docs/raw/reference/voice/openai-realtime.mdx +431 -0
  183. package/.docs/raw/reference/voice/openai.mdx +168 -0
  184. package/.docs/raw/reference/voice/playai.mdx +159 -0
  185. package/.docs/raw/reference/voice/speechify.mdx +145 -0
  186. package/.docs/raw/reference/workflows/after.mdx +88 -0
  187. package/.docs/raw/reference/workflows/commit.mdx +37 -0
  188. package/.docs/raw/reference/workflows/createRun.mdx +77 -0
  189. package/.docs/raw/reference/workflows/else.mdx +72 -0
  190. package/.docs/raw/reference/workflows/execute.mdx +110 -0
  191. package/.docs/raw/reference/workflows/if.mdx +107 -0
  192. package/.docs/raw/reference/workflows/resume.mdx +155 -0
  193. package/.docs/raw/reference/workflows/start.mdx +84 -0
  194. package/.docs/raw/reference/workflows/step-class.mdx +100 -0
  195. package/.docs/raw/reference/workflows/step-condition.mdx +134 -0
  196. package/.docs/raw/reference/workflows/step-function.mdx +92 -0
  197. package/.docs/raw/reference/workflows/step-options.mdx +69 -0
  198. package/.docs/raw/reference/workflows/suspend.mdx +80 -0
  199. package/.docs/raw/reference/workflows/then.mdx +74 -0
  200. package/.docs/raw/reference/workflows/until.mdx +165 -0
  201. package/.docs/raw/reference/workflows/watch.mdx +118 -0
  202. package/.docs/raw/reference/workflows/while.mdx +168 -0
  203. package/.docs/raw/reference/workflows/workflow.mdx +233 -0
  204. package/.docs/raw/workflows/00-overview.mdx +168 -0
  205. package/.docs/raw/workflows/control-flow.mdx +712 -0
  206. package/.docs/raw/workflows/dynamic-workflows.mdx +232 -0
  207. package/.docs/raw/workflows/steps.mdx +98 -0
  208. package/.docs/raw/workflows/suspend-and-resume.mdx +196 -0
  209. package/.docs/raw/workflows/variables.mdx +248 -0
  210. package/LICENSE +44 -0
  211. package/README.md +129 -0
  212. package/dist/index.d.ts +3 -0
  213. package/dist/index.js +19 -0
  214. package/dist/prepare-docs/code-examples.d.ts +4 -0
  215. package/dist/prepare-docs/code-examples.js +91 -0
  216. package/dist/prepare-docs/copy-raw.d.ts +1 -0
  217. package/dist/prepare-docs/copy-raw.js +41 -0
  218. package/dist/prepare-docs/index.d.ts +1 -0
  219. package/dist/prepare-docs/index.js +8 -0
  220. package/dist/prepare-docs/package-changes.d.ts +4 -0
  221. package/dist/prepare-docs/package-changes.js +92 -0
  222. package/dist/prepare-docs/prepare.d.ts +1 -0
  223. package/dist/prepare-docs/prepare.js +13 -0
  224. package/dist/sse.d.ts +1 -0
  225. package/dist/sse.js +9 -0
  226. package/dist/stdio.d.ts +1 -0
  227. package/dist/stdio.js +8 -0
  228. package/dist/tools/__tests__/blog.test.d.ts +1 -0
  229. package/dist/tools/__tests__/blog.test.js +48 -0
  230. package/dist/tools/__tests__/changes.test.d.ts +1 -0
  231. package/dist/tools/__tests__/changes.test.js +36 -0
  232. package/dist/tools/__tests__/docs.test.d.ts +1 -0
  233. package/dist/tools/__tests__/docs.test.js +46 -0
  234. package/dist/tools/__tests__/examples.test.d.ts +1 -0
  235. package/dist/tools/__tests__/examples.test.js +52 -0
  236. package/dist/tools/blog.d.ts +15 -0
  237. package/dist/tools/blog.js +73 -0
  238. package/dist/tools/changes.d.ts +11 -0
  239. package/dist/tools/changes.js +69 -0
  240. package/dist/tools/docs.d.ts +11 -0
  241. package/dist/tools/docs.js +176 -0
  242. package/dist/tools/examples.d.ts +11 -0
  243. package/dist/tools/examples.js +61 -0
  244. package/dist/utils.d.ts +6 -0
  245. package/dist/utils.js +9 -0
  246. package/package.json +66 -0
@@ -0,0 +1,394 @@
1
+ ---
2
+ title: "Reference: MastraVoice | Voice Providers | Mastra Docs"
3
+ description: "Documentation for the MastraVoice abstract base class, which defines the core interface for all voice services in Mastra, including speech-to-speech capabilities."
4
+ ---
5
+
6
+ # MastraVoice
7
+
8
+ The MastraVoice class is an abstract base class that defines the core interface for voice services in Mastra. All voice provider implementations (like OpenAI, Deepgram, PlayAI, Speechify) extend this class to provide their specific functionality. The class now includes support for real-time speech-to-speech capabilities through WebSocket connections.
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { MastraVoice } from "@mastra/core/voice";
14
+
15
+ // Create a voice provider implementation
16
+ class MyVoiceProvider extends MastraVoice {
17
+ constructor(config: {
18
+ speechModel?: BuiltInModelConfig;
19
+ listeningModel?: BuiltInModelConfig;
20
+ speaker?: string;
21
+ realtimeConfig?: {
22
+ model?: string;
23
+ apiKey?: string;
24
+ options?: unknown;
25
+ };
26
+ }) {
27
+ super({
28
+ speechModel: config.speechModel,
29
+ listeningModel: config.listeningModel,
30
+ speaker: config.speaker,
31
+ realtimeConfig: config.realtimeConfig
32
+ });
33
+ }
34
+
35
+ // Implement required abstract methods
36
+ async speak(input: string | NodeJS.ReadableStream, options?: { speaker?: string }): Promise<NodeJS.ReadableStream | void> {
37
+ // Implement text-to-speech conversion
38
+ }
39
+
40
+ async listen(audioStream: NodeJS.ReadableStream, options?: unknown): Promise<string | NodeJS.ReadableStream | void> {
41
+ // Implement speech-to-text conversion
42
+ }
43
+
44
+ async getSpeakers(): Promise<Array<{ voiceId: string; [key: string]: unknown }>> {
45
+ // Return list of available voices
46
+ }
47
+
48
+ // Optional speech-to-speech methods
49
+ async connect(): Promise<void> {
50
+ // Establish WebSocket connection for speech-to-speech communication
51
+ }
52
+
53
+ async send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void> {
54
+ // Stream audio data in speech-to-speech
55
+ }
56
+
57
+ async answer(): Promise<void> {
58
+ // Trigger voice provider to respond
59
+ }
60
+
61
+ addTools(tools: Array<unknown>): void {
62
+ // Add tools for the voice provider to use
63
+ }
64
+
65
+ close(): void {
66
+ // Close WebSocket connection
67
+ }
68
+
69
+ on(event: string, callback: (data: unknown) => void): void {
70
+ // Register event listener
71
+ }
72
+
73
+ off(event: string, callback: (data: unknown) => void): void {
74
+ // Remove event listener
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## Constructor Parameters
80
+
81
+ <PropertiesTable
82
+ content={[
83
+ {
84
+ name: "config",
85
+ type: "VoiceConfig",
86
+ description: "Configuration object for the voice service",
87
+ isOptional: true,
88
+ },
89
+ {
90
+ name: "config.speechModel",
91
+ type: "BuiltInModelConfig",
92
+ description: "Configuration for the text-to-speech model",
93
+ isOptional: true,
94
+ },
95
+ {
96
+ name: "config.listeningModel",
97
+ type: "BuiltInModelConfig",
98
+ description: "Configuration for the speech-to-text model",
99
+ isOptional: true,
100
+ },
101
+ {
102
+ name: "config.speaker",
103
+ type: "string",
104
+ description: "Default speaker/voice ID to use",
105
+ isOptional: true,
106
+ },
107
+ {
108
+ name: "config.name",
109
+ type: "string",
110
+ description: "Name for the voice provider instance",
111
+ isOptional: true,
112
+ },
113
+ {
114
+ name: "config.realtimeConfig",
115
+ type: "object",
116
+ description: "Configuration for real-time speech-to-speech capabilities",
117
+ isOptional: true,
118
+ },
119
+ ]}
120
+ />
121
+
122
+ ### BuiltInModelConfig
123
+
124
+ <PropertiesTable
125
+ content={[
126
+ {
127
+ name: "name",
128
+ type: "string",
129
+ description: "Name of the model to use",
130
+ isOptional: false,
131
+ },
132
+ {
133
+ name: "apiKey",
134
+ type: "string",
135
+ description: "API key for the model service",
136
+ isOptional: true,
137
+ },
138
+ ]}
139
+ />
140
+
141
+ ### RealtimeConfig
142
+
143
+ <PropertiesTable
144
+ content={[
145
+ {
146
+ name: "model",
147
+ type: "string",
148
+ description: "Model to use for real-time speech-to-speech capabilities",
149
+ isOptional: true,
150
+ },
151
+ {
152
+ name: "apiKey",
153
+ type: "string",
154
+ description: "API key for the real-time service",
155
+ isOptional: true,
156
+ },
157
+ {
158
+ name: "options",
159
+ type: "unknown",
160
+ description: "Provider-specific options for real-time capabilities",
161
+ isOptional: true,
162
+ },
163
+ ]}
164
+ />
165
+
166
+ ## Abstract Methods
167
+
168
+ These methods must be implemented by unknown class extending MastraVoice.
169
+
170
+ ### speak()
171
+
172
+ Converts text to speech using the configured speech model.
173
+
174
+ ```typescript
175
+ abstract speak(
176
+ input: string | NodeJS.ReadableStream,
177
+ options?: {
178
+ speaker?: string;
179
+ [key: string]: unknown;
180
+ }
181
+ ): Promise<NodeJS.ReadableStream | void>
182
+ ```
183
+
184
+ Purpose:
185
+ - Takes text input and converts it to speech using the provider's text-to-speech service
186
+ - Supports both string and stream input for flexibility
187
+ - Allows overriding the default speaker/voice through options
188
+ - Returns a stream of audio data that can be played or saved
189
+ - May return void if the audio is handled by emitting 'speaking' event
190
+
191
+ ### listen()
192
+
193
+ Converts speech to text using the configured listening model.
194
+
195
+ ```typescript
196
+ abstract listen(
197
+ audioStream: NodeJS.ReadableStream,
198
+ options?: {
199
+ [key: string]: unknown;
200
+ }
201
+ ): Promise<string | NodeJS.ReadableStream | void>
202
+ ```
203
+
204
+ Purpose:
205
+ - Takes an audio stream and converts it to text using the provider's speech-to-text service
206
+ - Supports provider-specific options for transcription configuration
207
+ - Can return either a complete text transcription or a stream of transcribed text
208
+ - Not all providers support this functionality (e.g., PlayAI, Speechify)
209
+ - May return void if the transcription is handled by emitting 'writing' event
210
+
211
+ ### getSpeakers()
212
+
213
+ Returns a list of available voices supported by the provider.
214
+
215
+ ```typescript
216
+ abstract getSpeakers(): Promise<Array<{ voiceId: string; [key: string]: unknown }>>
217
+ ```
218
+
219
+ Purpose:
220
+ - Retrieves the list of available voices/speakers from the provider
221
+ - Each voice must have at least a voiceId property
222
+ - Providers can include additional metadata about each voice
223
+ - Used to discover available voices for text-to-speech conversion
224
+
225
+ ## Optional Methods
226
+
227
+ These methods have default implementations but can be overridden by voice providers that support speech-to-speech capabilities.
228
+
229
+ ### connect()
230
+
231
+ Establishes a WebSocket or WebRTC connection for communication.
232
+
233
+ ```typescript
234
+ connect(config?: unknown): Promise<void>
235
+ ```
236
+
237
+ Purpose:
238
+ - Initializes a connection to the voice service for communication
239
+ - Must be called before using features like send() or answer()
240
+ - Returns a Promise that resolves when the connection is established
241
+ - Configuration is provider-specific
242
+
243
+ ### send()
244
+
245
+ Streams audio data in real-time to the voice provider.
246
+
247
+ ```typescript
248
+ send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void>
249
+ ```
250
+
251
+ Purpose:
252
+ - Sends audio data to the voice provider for real-time processing
253
+ - Useful for continuous audio streaming scenarios like live microphone input
254
+ - Supports both ReadableStream and Int16Array audio formats
255
+ - Must be in connected state before calling this method
256
+
257
+ ### answer()
258
+
259
+ Triggers the voice provider to generate a response.
260
+
261
+ ```typescript
262
+ answer(): Promise<void>
263
+ ```
264
+
265
+ Purpose:
266
+ - Sends a signal to the voice provider to generate a response
267
+ - Used in real-time conversations to prompt the AI to respond
268
+ - Response will be emitted through the event system (e.g., 'speaking' event)
269
+
270
+ ### addTools()
271
+
272
+ Equips the voice provider with tools that can be used during conversations.
273
+
274
+ ```typescript
275
+ addTools(tools: Array<Tool>): void
276
+ ```
277
+
278
+ Purpose:
279
+ - Adds tools that the voice provider can use during conversations
280
+ - Tools can extend the capabilities of the voice provider
281
+ - Implementation is provider-specific
282
+
283
+ ### close()
284
+
285
+ Disconnects from the WebSocket or WebRTC connection.
286
+
287
+ ```typescript
288
+ close(): void
289
+ ```
290
+
291
+ Purpose:
292
+ - Closes the connection to the voice service
293
+ - Cleans up resources and stops any ongoing real-time processing
294
+ - Should be called when you're done with the voice instance
295
+
296
+ ### on()
297
+
298
+ Registers an event listener for voice events.
299
+
300
+ ```typescript
301
+ on<E extends VoiceEventType>(
302
+ event: E,
303
+ callback: (data: E extends keyof VoiceEventMap ? VoiceEventMap[E] : unknown) => void,
304
+ ): void
305
+ ```
306
+
307
+ Purpose:
308
+ - Registers a callback function to be called when the specified event occurs
309
+ - Standard events include 'speaking', 'writing', and 'error'
310
+ - Providers can emit custom events as well
311
+ - Event data structure depends on the event type
312
+
313
+ ### off()
314
+
315
+ Removes an event listener.
316
+
317
+ ```typescript
318
+ off<E extends VoiceEventType>(
319
+ event: E,
320
+ callback: (data: E extends keyof VoiceEventMap ? VoiceEventMap[E] : unknown) => void,
321
+ ): void
322
+ ```
323
+
324
+ Purpose:
325
+ - Removes a previously registered event listener
326
+ - Used to clean up event handlers when they're no longer needed
327
+
328
+ ## Event System
329
+
330
+ The MastraVoice class includes an event system for real-time communication. Standard event types include:
331
+
332
+ <PropertiesTable
333
+ content={[
334
+ {
335
+ name: "speaking",
336
+ type: "{ text: string; audioStream?: NodeJS.ReadableStream; audio?: Int16Array }",
337
+ description: "Emitted when the voice provider is speaking, contains audio data",
338
+ },
339
+ {
340
+ name: "writing",
341
+ type: "{ text: string, role: string }",
342
+ description: "Emitted when text is transcribed from speech",
343
+ },
344
+ {
345
+ name: "error",
346
+ type: "{ message: string; code?: string; details?: unknown }",
347
+ description: "Emitted when an error occurs",
348
+ },
349
+ ]}
350
+ />
351
+
352
+ ## Protected Properties
353
+
354
+ <PropertiesTable
355
+ content={[
356
+ {
357
+ name: "listeningModel",
358
+ type: "BuiltInModelConfig | undefined",
359
+ description: "Configuration for the speech-to-text model",
360
+ isOptional: true,
361
+ },
362
+ {
363
+ name: "speechModel",
364
+ type: "BuiltInModelConfig | undefined",
365
+ description: "Configuration for the text-to-speech model",
366
+ isOptional: true,
367
+ },
368
+ {
369
+ name: "speaker",
370
+ type: "string | undefined",
371
+ description: "Default speaker/voice ID",
372
+ isOptional: true,
373
+ },
374
+ {
375
+ name: "realtimeConfig",
376
+ type: "{ model?: string; apiKey?: string; options?: unknown } | undefined",
377
+ description: "Configuration for real-time speech-to-speech capabilities",
378
+ isOptional: true,
379
+ },
380
+ ]}
381
+ />
382
+
383
+ ## Telemetry Support
384
+
385
+ MastraVoice includes built-in telemetry support through the `traced` method, which wraps method calls with performance tracking and error monitoring.
386
+
387
+ ## Notes
388
+
389
+ - MastraVoice is an abstract class and cannot be instantiated directly
390
+ - Implementations must provide concrete implementations for all abstract methods
391
+ - The class provides a consistent interface across different voice service providers
392
+ - Speech-to-speech capabilities are optional and provider-specific
393
+ - The event system enables asynchronous communication for real-time interactions
394
+ - Telemetry is automatically handled for all method calls
@@ -0,0 +1,251 @@
1
+ ---
2
+ title: "Reference: Murf Voice | Voice Providers | Mastra Docs"
3
+ description: "Documentation for the Murf voice implementation, providing text-to-speech capabilities."
4
+ ---
5
+
6
+ # Murf
7
+
8
+ The Murf voice implementation in Mastra provides text-to-speech (TTS) capabilities using Murf's AI voice service. It supports multiple voices across different languages.
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { MurfVoice } from "@mastra/voice-murf";
14
+
15
+ // Initialize with default configuration (uses MURF_API_KEY environment variable)
16
+ const voice = new MurfVoice();
17
+
18
+ // Initialize with custom configuration
19
+ const voice = new MurfVoice({
20
+ speechModel: {
21
+ name: 'GEN2',
22
+ apiKey: 'your-api-key',
23
+ properties: {
24
+ format: 'MP3',
25
+ rate: 1.0,
26
+ pitch: 1.0,
27
+ sampleRate: 48000,
28
+ channelType: 'STEREO',
29
+ },
30
+ },
31
+ speaker: 'en-US-cooper',
32
+ });
33
+
34
+ // Text-to-Speech with default settings
35
+ const audioStream = await voice.speak("Hello, world!");
36
+
37
+ // Text-to-Speech with custom properties
38
+ const audioStream = await voice.speak("Hello, world!", {
39
+ speaker: 'en-UK-hazel',
40
+ properties: {
41
+ format: 'WAV',
42
+ rate: 1.2,
43
+ style: 'casual',
44
+ },
45
+ });
46
+
47
+ // Get available voices
48
+ const voices = await voice.getSpeakers();
49
+ ```
50
+
51
+ ## Constructor Parameters
52
+
53
+ <PropertiesTable
54
+ content={[
55
+ {
56
+ name: "speechModel",
57
+ type: "MurfConfig",
58
+ description: "Configuration for text-to-speech functionality",
59
+ isOptional: true,
60
+ defaultValue: "{ name: 'GEN2' }",
61
+ },
62
+ {
63
+ name: "speaker",
64
+ type: "string",
65
+ description: "Default voice ID to use for text-to-speech",
66
+ isOptional: true,
67
+ defaultValue: "'en-UK-hazel'",
68
+ },
69
+ ]}
70
+ />
71
+
72
+ ### MurfConfig
73
+
74
+ <PropertiesTable
75
+ content={[
76
+ {
77
+ name: "name",
78
+ type: "'GEN1' | 'GEN2'",
79
+ description: "The Murf model generation to use",
80
+ isOptional: false,
81
+ defaultValue: "'GEN2'",
82
+ },
83
+ {
84
+ name: "apiKey",
85
+ type: "string",
86
+ description: "Murf API key. Falls back to MURF_API_KEY environment variable",
87
+ isOptional: true,
88
+ },
89
+ {
90
+ name: "properties",
91
+ type: "object",
92
+ description: "Default properties for all speech synthesis requests",
93
+ isOptional: true,
94
+ },
95
+ ]}
96
+ />
97
+
98
+ ### Speech Properties
99
+
100
+ <PropertiesTable
101
+ content={[
102
+ {
103
+ name: "style",
104
+ type: "string",
105
+ description: "Speaking style for the voice",
106
+ isOptional: true,
107
+ },
108
+ {
109
+ name: "rate",
110
+ type: "number",
111
+ description: "Speech rate multiplier",
112
+ isOptional: true,
113
+ },
114
+ {
115
+ name: "pitch",
116
+ type: "number",
117
+ description: "Voice pitch adjustment",
118
+ isOptional: true,
119
+ },
120
+ {
121
+ name: "sampleRate",
122
+ type: "8000 | 24000 | 44100 | 48000",
123
+ description: "Audio sample rate in Hz",
124
+ isOptional: true,
125
+ },
126
+ {
127
+ name: "format",
128
+ type: "'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW'",
129
+ description: "Output audio format",
130
+ isOptional: true,
131
+ },
132
+ {
133
+ name: "channelType",
134
+ type: "'STEREO' | 'MONO'",
135
+ description: "Audio channel configuration",
136
+ isOptional: true,
137
+ },
138
+ {
139
+ name: "pronunciationDictionary",
140
+ type: "Record<string, string>",
141
+ description: "Custom pronunciation mappings",
142
+ isOptional: true,
143
+ },
144
+ {
145
+ name: "encodeAsBase64",
146
+ type: "boolean",
147
+ description: "Whether to encode the audio as base64",
148
+ isOptional: true,
149
+ },
150
+ {
151
+ name: "variation",
152
+ type: "number",
153
+ description: "Voice variation parameter",
154
+ isOptional: true,
155
+ },
156
+ {
157
+ name: "audioDuration",
158
+ type: "number",
159
+ description: "Target audio duration in seconds",
160
+ isOptional: true,
161
+ },
162
+ {
163
+ name: "multiNativeLocale",
164
+ type: "string",
165
+ description: "Locale for multilingual support",
166
+ isOptional: true,
167
+ },
168
+ ]}
169
+ />
170
+
171
+ ## Methods
172
+
173
+ ### speak()
174
+
175
+ Converts text to speech using Murf's API.
176
+
177
+ <PropertiesTable
178
+ content={[
179
+ {
180
+ name: "input",
181
+ type: "string | NodeJS.ReadableStream",
182
+ description: "Text to convert to speech. If a stream is provided, it will be converted to text first.",
183
+ isOptional: false,
184
+ },
185
+ {
186
+ name: "options",
187
+ type: "object",
188
+ description: "Speech synthesis options",
189
+ isOptional: true,
190
+ },
191
+ {
192
+ name: "options.speaker",
193
+ type: "string",
194
+ description: "Override the default speaker for this request",
195
+ isOptional: true,
196
+ },
197
+ {
198
+ name: "options.properties",
199
+ type: "object",
200
+ description: "Override default speech properties for this request",
201
+ isOptional: true,
202
+ },
203
+ ]}
204
+ />
205
+
206
+ Returns: `Promise<NodeJS.ReadableStream>`
207
+
208
+ ### getSpeakers()
209
+
210
+ Returns an array of available voice options, where each node contains:
211
+
212
+ <PropertiesTable
213
+ content={[
214
+ {
215
+ name: "voiceId",
216
+ type: "string",
217
+ description: "Unique identifier for the voice",
218
+ isOptional: false,
219
+ },
220
+ {
221
+ name: "name",
222
+ type: "string",
223
+ description: "Display name of the voice",
224
+ isOptional: false,
225
+ },
226
+ {
227
+ name: "language",
228
+ type: "string",
229
+ description: "Language code for the voice",
230
+ isOptional: false,
231
+ },
232
+ {
233
+ name: "gender",
234
+ type: "string",
235
+ description: "Gender of the voice",
236
+ isOptional: false,
237
+ }
238
+ ]}
239
+ />
240
+
241
+ ### listen()
242
+
243
+ This method is not supported by Murf and will throw an error. Murf does not provide speech-to-text functionality.
244
+
245
+ ## Important Notes
246
+
247
+ 1. A Murf API key is required. Set it via the `MURF_API_KEY` environment variable or pass it in the constructor.
248
+ 2. The service uses GEN2 as the default model version.
249
+ 3. Speech properties can be set at the constructor level and overridden per request.
250
+ 4. The service supports extensive audio customization through properties like format, sample rate, and channel type.
251
+ 5. Speech-to-text functionality is not supported.