@mastra/voice-murf 0.10.6 → 0.10.7-alpha.0

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/dist/index.cjs CHANGED
@@ -253,3 +253,5 @@ var MurfVoice = class extends voice.MastraVoice {
253
253
  };
254
254
 
255
255
  exports.MurfVoice = MurfVoice;
256
+ //# sourceMappingURL=index.cjs.map
257
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/voices.ts","../src/index.ts"],"names":["MastraVoice","ky","stream","PassThrough"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * List of available voices for Murf TTS\n */\nexport const MURF_VOICES = [\n 'en-UK-hazel',\n 'en-US-cooper',\n 'en-US-imani',\n 'it-IT-giorgio',\n 'en-US-wayne',\n 'en-IN-shivani',\n 'en-US-daniel',\n 'bn-IN-anwesha',\n 'es-MX-alejandro',\n 'en-AU-joyce',\n 'en-US-zion',\n 'en-IN-isha',\n 'en-US-riley',\n 'ko-KR-hwan',\n 'fr-FR-adélie',\n 'en-US-carter',\n 'en-UK-gabriel',\n 'en-UK-juliet',\n 'en-IN-arohi',\n 'fr-FR-maxime',\n 'de-DE-josephine',\n 'en-UK-hugo',\n 'en-US-samantha',\n 'de-DE-erna',\n 'zh-CN-baolin',\n 'pt-BR-isadora',\n 'it-IT-vincenzo',\n 'en-US-terrell',\n 'en-US-denzel',\n 'en-UK-heidi',\n 'en-US-miles',\n 'en-US-abigail',\n 'fr-FR-justine',\n 'it-IT-greta',\n 'en-AU-shane',\n 'en-UK-peter',\n 'nl-NL-famke',\n 'en-AU-ivy',\n 'nl-NL-dirk',\n 'fr-FR-axel',\n 'es-ES-carla',\n 'en-US-claire',\n 'ko-KR-jangmi',\n 'ko-KR-sanghoon',\n 'it-IT-vera',\n 'hi-IN-rahul',\n 'es-ES-elvira',\n 'es-ES-enrique',\n 'en-UK-aiden',\n 'en-US-ronnie',\n 'en-UK-amber',\n 'hi-IN-shweta',\n 'hi-IN-amit',\n 'en-AU-jimm',\n 'en-UK-pearl',\n 'pt-BR-benício',\n 'en-UK-freddie',\n 'en-US-ryan',\n 'pt-BR-eloa',\n 'en-US-charlotte',\n 'de-DE-lia',\n 'en-US-natalie',\n 'en-US-michelle',\n 'en-US-phoebe',\n 'es-ES-carmen',\n 'en-US-caleb',\n 'en-US-iris',\n 'en-UK-harrison',\n 'en-US-marcus',\n 'en-US-josie',\n 'en-US-daisy',\n 'en-US-charles',\n 'en-UK-reggie',\n 'en-US-julia',\n 'en-SCOTT-emily',\n 'en-US-dylan',\n 'es-MX-valeria',\n 'en-IN-eashwar',\n 'en-AU-evelyn',\n 'de-DE-lara',\n 'en-US-evander',\n 'en-SCOTT-rory',\n 'ta-IN-iniya',\n 'en-AU-leyton',\n 'fr-FR-louise',\n 'zh-CN-wei',\n 'ko-KR-gyeong',\n 'de-DE-matthias',\n 'en-IN-rohan',\n 'en-US-delilah',\n 'bn-IN-abhik',\n 'en-US-angela',\n 'en-US-naomi',\n 'es-MX-carlos',\n 'nl-NL-merel',\n 'en-US-alicia',\n 'en-IN-alia',\n 'zh-CN-jiao',\n 'en-US-june',\n 'en-AU-ashton',\n 'en-UK-finley',\n 'pl-PL-blazej',\n 'zh-CN-zhang',\n 'en-AU-kylie',\n 'en-US-jayden',\n 'en-IN-aarav',\n 'de-DE-björn',\n 'bn-IN-ishani',\n 'zh-CN-yuxan',\n 'fr-FR-louis',\n 'ko-KR-jong-su',\n 'en-AU-harper',\n 'en-UK-ruby',\n 'en-US-ken',\n 'ta-IN-mani',\n 'de-DE-ralf',\n 'en-UK-jaxon',\n 'en-US-river',\n 'en-IN-priya',\n 'en-UK-theo',\n 'en-UK-katie',\n 'pl-PL-jacek',\n 'it-IT-lorenzo',\n 'hi-IN-shaan',\n 'en-US-amara',\n 'en-UK-mason',\n 'en-IN-surya',\n 'en-US-finn',\n 'pt-BR-gustavo',\n 'hi-IN-kabir',\n 'es-ES-javier',\n 'en-AU-mitch',\n 'pt-BR-heitor',\n 'en-US-edmund',\n 'hi-IN-ayushi',\n 'pl-PL-kasia',\n 'es-MX-luisa',\n 'zh-CN-tao',\n 'en-US-molly',\n] as const;\n\nexport type MurfVoiceId = (typeof MURF_VOICES)[number];\n","import { PassThrough } from 'stream';\n\nimport { MastraVoice } from '@mastra/core/voice';\nimport ky from 'ky';\n\nimport { MURF_VOICES } from './voices';\nimport type { MurfVoiceId } from './voices';\n\ntype MurfConfig = {\n name: 'GEN1' | 'GEN2';\n apiKey?: string;\n properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;\n};\n\ntype SpeechCreateParams = {\n voiceId: MurfVoiceId;\n text: string;\n modelVersion: 'GEN1' | 'GEN2';\n style?: string;\n rate?: number;\n pitch?: number;\n sampleRate?: 8000 | 24000 | 44100 | 48000;\n format?: 'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW';\n channelType?: 'STEREO' | 'MONO';\n pronunciationDictionary?: Record<string, string>;\n encodeAsBase64?: boolean;\n variation?: number;\n audioDuration?: number;\n multiNativeLocale?: string;\n};\n\ntype SpeechCreateResponse = {\n audioFile: string;\n audioLengthInSeconds: number;\n consumedCharacterCount: number;\n encodedAudio: string;\n remainingCharacterCount: number;\n warning: string;\n wordDurations: {\n endMs: number;\n pitchScaleMaximum: number;\n pitchScaleMinimum: number;\n sourceWordIndex: number;\n startMs: number;\n word: string;\n }[];\n};\n\nexport class MurfVoice extends MastraVoice {\n private client: typeof ky;\n private defaultVoice: MurfVoiceId;\n private properties: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;\n\n constructor({ speechModel, speaker }: { speechModel?: MurfConfig; speaker?: string } = {}) {\n super({\n speechModel: {\n name: speechModel?.name ?? 'GEN2',\n apiKey: speechModel?.apiKey ?? process.env.MURF_API_KEY,\n },\n speaker: speaker ?? MURF_VOICES[0],\n });\n\n const apiKey = this.speechModel?.apiKey;\n if (!apiKey) {\n throw new Error('MURF_API_KEY is not set');\n }\n\n this.properties = {\n ...speechModel?.properties,\n };\n\n this.client = ky.create({\n prefixUrl: 'https://api.murf.ai',\n headers: {\n 'api-key': apiKey,\n },\n });\n\n this.defaultVoice = (speaker as MurfVoiceId) ?? MURF_VOICES[0];\n }\n\n private async streamToString(stream: NodeJS.ReadableStream): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n if (typeof chunk === 'string') {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n }\n return Buffer.concat(chunks).toString('utf-8');\n }\n\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: { speaker?: string; properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'> },\n ): Promise<NodeJS.ReadableStream> {\n const text = typeof input === 'string' ? input : await this.streamToString(input);\n\n return this.traced(async () => {\n const response = await this.client\n .post('v1/speech/generate', {\n json: {\n voiceId: (options?.speaker || this.defaultVoice) as MurfVoiceId,\n text,\n modelVersion: this.speechModel?.name,\n ...this.properties,\n ...options?.properties,\n },\n })\n .json<SpeechCreateResponse>();\n\n // Create a PassThrough stream for the audio\n const stream = new PassThrough();\n\n // Get the audio file as a stream\n const audioResponse = await fetch(response.audioFile);\n if (!audioResponse.body) {\n throw new Error('No response body received');\n }\n\n // Process the stream\n const reader = audioResponse.body.getReader();\n (async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n stream.end();\n break;\n }\n stream.write(value);\n }\n } catch (error) {\n stream.destroy(error as Error);\n }\n })().catch(error => {\n stream.destroy(error as Error);\n });\n\n return stream;\n }, 'voice.murf.speak')();\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: false };\n }\n\n async listen(\n _input: NodeJS.ReadableStream,\n _options?: Record<string, unknown>,\n ): Promise<string | NodeJS.ReadableStream> {\n throw new Error('Murf does not support speech recognition');\n }\n\n async getSpeakers() {\n return this.traced(async () => {\n return MURF_VOICES.map(voice => ({\n voiceId: voice,\n name: voice,\n language: voice.split('-')[0],\n gender: 'neutral',\n }));\n }, 'voice.murf.getSpeakers')();\n }\n}\n\nexport type { MurfConfig, MurfVoiceId };\n"]}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,54 @@
1
- export { MurfVoice } from './_tsup-dts-rollup.js';
2
- export { MurfConfig } from './_tsup-dts-rollup.js';
3
- export { MurfVoiceId } from './_tsup-dts-rollup.js';
1
+ import { MastraVoice } from '@mastra/core/voice';
2
+ import type { MurfVoiceId } from './voices';
3
+ type MurfConfig = {
4
+ name: 'GEN1' | 'GEN2';
5
+ apiKey?: string;
6
+ properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;
7
+ };
8
+ type SpeechCreateParams = {
9
+ voiceId: MurfVoiceId;
10
+ text: string;
11
+ modelVersion: 'GEN1' | 'GEN2';
12
+ style?: string;
13
+ rate?: number;
14
+ pitch?: number;
15
+ sampleRate?: 8000 | 24000 | 44100 | 48000;
16
+ format?: 'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW';
17
+ channelType?: 'STEREO' | 'MONO';
18
+ pronunciationDictionary?: Record<string, string>;
19
+ encodeAsBase64?: boolean;
20
+ variation?: number;
21
+ audioDuration?: number;
22
+ multiNativeLocale?: string;
23
+ };
24
+ export declare class MurfVoice extends MastraVoice {
25
+ private client;
26
+ private defaultVoice;
27
+ private properties;
28
+ constructor({ speechModel, speaker }?: {
29
+ speechModel?: MurfConfig;
30
+ speaker?: string;
31
+ });
32
+ private streamToString;
33
+ speak(input: string | NodeJS.ReadableStream, options?: {
34
+ speaker?: string;
35
+ properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;
36
+ }): Promise<NodeJS.ReadableStream>;
37
+ /**
38
+ * Checks if listening capabilities are enabled.
39
+ *
40
+ * @returns {Promise<{ enabled: boolean }>}
41
+ */
42
+ getListener(): Promise<{
43
+ enabled: boolean;
44
+ }>;
45
+ listen(_input: NodeJS.ReadableStream, _options?: Record<string, unknown>): Promise<string | NodeJS.ReadableStream>;
46
+ getSpeakers(): Promise<{
47
+ voiceId: "en-UK-hazel" | "en-US-cooper" | "en-US-imani" | "it-IT-giorgio" | "en-US-wayne" | "en-IN-shivani" | "en-US-daniel" | "bn-IN-anwesha" | "es-MX-alejandro" | "en-AU-joyce" | "en-US-zion" | "en-IN-isha" | "en-US-riley" | "ko-KR-hwan" | "fr-FR-adélie" | "en-US-carter" | "en-UK-gabriel" | "en-UK-juliet" | "en-IN-arohi" | "fr-FR-maxime" | "de-DE-josephine" | "en-UK-hugo" | "en-US-samantha" | "de-DE-erna" | "zh-CN-baolin" | "pt-BR-isadora" | "it-IT-vincenzo" | "en-US-terrell" | "en-US-denzel" | "en-UK-heidi" | "en-US-miles" | "en-US-abigail" | "fr-FR-justine" | "it-IT-greta" | "en-AU-shane" | "en-UK-peter" | "nl-NL-famke" | "en-AU-ivy" | "nl-NL-dirk" | "fr-FR-axel" | "es-ES-carla" | "en-US-claire" | "ko-KR-jangmi" | "ko-KR-sanghoon" | "it-IT-vera" | "hi-IN-rahul" | "es-ES-elvira" | "es-ES-enrique" | "en-UK-aiden" | "en-US-ronnie" | "en-UK-amber" | "hi-IN-shweta" | "hi-IN-amit" | "en-AU-jimm" | "en-UK-pearl" | "pt-BR-benício" | "en-UK-freddie" | "en-US-ryan" | "pt-BR-eloa" | "en-US-charlotte" | "de-DE-lia" | "en-US-natalie" | "en-US-michelle" | "en-US-phoebe" | "es-ES-carmen" | "en-US-caleb" | "en-US-iris" | "en-UK-harrison" | "en-US-marcus" | "en-US-josie" | "en-US-daisy" | "en-US-charles" | "en-UK-reggie" | "en-US-julia" | "en-SCOTT-emily" | "en-US-dylan" | "es-MX-valeria" | "en-IN-eashwar" | "en-AU-evelyn" | "de-DE-lara" | "en-US-evander" | "en-SCOTT-rory" | "ta-IN-iniya" | "en-AU-leyton" | "fr-FR-louise" | "zh-CN-wei" | "ko-KR-gyeong" | "de-DE-matthias" | "en-IN-rohan" | "en-US-delilah" | "bn-IN-abhik" | "en-US-angela" | "en-US-naomi" | "es-MX-carlos" | "nl-NL-merel" | "en-US-alicia" | "en-IN-alia" | "zh-CN-jiao" | "en-US-june" | "en-AU-ashton" | "en-UK-finley" | "pl-PL-blazej" | "zh-CN-zhang" | "en-AU-kylie" | "en-US-jayden" | "en-IN-aarav" | "de-DE-björn" | "bn-IN-ishani" | "zh-CN-yuxan" | "fr-FR-louis" | "ko-KR-jong-su" | "en-AU-harper" | "en-UK-ruby" | "en-US-ken" | "ta-IN-mani" | "de-DE-ralf" | "en-UK-jaxon" | "en-US-river" | "en-IN-priya" | "en-UK-theo" | "en-UK-katie" | "pl-PL-jacek" | "it-IT-lorenzo" | "hi-IN-shaan" | "en-US-amara" | "en-UK-mason" | "en-IN-surya" | "en-US-finn" | "pt-BR-gustavo" | "hi-IN-kabir" | "es-ES-javier" | "en-AU-mitch" | "pt-BR-heitor" | "en-US-edmund" | "hi-IN-ayushi" | "pl-PL-kasia" | "es-MX-luisa" | "zh-CN-tao" | "en-US-molly";
48
+ name: "en-UK-hazel" | "en-US-cooper" | "en-US-imani" | "it-IT-giorgio" | "en-US-wayne" | "en-IN-shivani" | "en-US-daniel" | "bn-IN-anwesha" | "es-MX-alejandro" | "en-AU-joyce" | "en-US-zion" | "en-IN-isha" | "en-US-riley" | "ko-KR-hwan" | "fr-FR-adélie" | "en-US-carter" | "en-UK-gabriel" | "en-UK-juliet" | "en-IN-arohi" | "fr-FR-maxime" | "de-DE-josephine" | "en-UK-hugo" | "en-US-samantha" | "de-DE-erna" | "zh-CN-baolin" | "pt-BR-isadora" | "it-IT-vincenzo" | "en-US-terrell" | "en-US-denzel" | "en-UK-heidi" | "en-US-miles" | "en-US-abigail" | "fr-FR-justine" | "it-IT-greta" | "en-AU-shane" | "en-UK-peter" | "nl-NL-famke" | "en-AU-ivy" | "nl-NL-dirk" | "fr-FR-axel" | "es-ES-carla" | "en-US-claire" | "ko-KR-jangmi" | "ko-KR-sanghoon" | "it-IT-vera" | "hi-IN-rahul" | "es-ES-elvira" | "es-ES-enrique" | "en-UK-aiden" | "en-US-ronnie" | "en-UK-amber" | "hi-IN-shweta" | "hi-IN-amit" | "en-AU-jimm" | "en-UK-pearl" | "pt-BR-benício" | "en-UK-freddie" | "en-US-ryan" | "pt-BR-eloa" | "en-US-charlotte" | "de-DE-lia" | "en-US-natalie" | "en-US-michelle" | "en-US-phoebe" | "es-ES-carmen" | "en-US-caleb" | "en-US-iris" | "en-UK-harrison" | "en-US-marcus" | "en-US-josie" | "en-US-daisy" | "en-US-charles" | "en-UK-reggie" | "en-US-julia" | "en-SCOTT-emily" | "en-US-dylan" | "es-MX-valeria" | "en-IN-eashwar" | "en-AU-evelyn" | "de-DE-lara" | "en-US-evander" | "en-SCOTT-rory" | "ta-IN-iniya" | "en-AU-leyton" | "fr-FR-louise" | "zh-CN-wei" | "ko-KR-gyeong" | "de-DE-matthias" | "en-IN-rohan" | "en-US-delilah" | "bn-IN-abhik" | "en-US-angela" | "en-US-naomi" | "es-MX-carlos" | "nl-NL-merel" | "en-US-alicia" | "en-IN-alia" | "zh-CN-jiao" | "en-US-june" | "en-AU-ashton" | "en-UK-finley" | "pl-PL-blazej" | "zh-CN-zhang" | "en-AU-kylie" | "en-US-jayden" | "en-IN-aarav" | "de-DE-björn" | "bn-IN-ishani" | "zh-CN-yuxan" | "fr-FR-louis" | "ko-KR-jong-su" | "en-AU-harper" | "en-UK-ruby" | "en-US-ken" | "ta-IN-mani" | "de-DE-ralf" | "en-UK-jaxon" | "en-US-river" | "en-IN-priya" | "en-UK-theo" | "en-UK-katie" | "pl-PL-jacek" | "it-IT-lorenzo" | "hi-IN-shaan" | "en-US-amara" | "en-UK-mason" | "en-IN-surya" | "en-US-finn" | "pt-BR-gustavo" | "hi-IN-kabir" | "es-ES-javier" | "en-AU-mitch" | "pt-BR-heitor" | "en-US-edmund" | "hi-IN-ayushi" | "pl-PL-kasia" | "es-MX-luisa" | "zh-CN-tao" | "en-US-molly";
49
+ language: string | undefined;
50
+ gender: string;
51
+ }[]>;
52
+ }
53
+ export type { MurfConfig, MurfVoiceId };
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;CAC5E,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC1C,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClD,WAAW,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAmBF,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,UAAU,CAAgE;gBAEtE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAE;QAAE,WAAW,CAAC,EAAE,UAAU,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;YA4B3E,cAAc;IAYtB,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,EACrC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,CAAA;KAAE,GACzG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IAgDjC;;;;OAIG;IACG,WAAW;;;IAIX,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IAIpC,WAAW;;;;;;CAUlB;AAED,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -247,3 +247,5 @@ var MurfVoice = class extends MastraVoice {
247
247
  };
248
248
 
249
249
  export { MurfVoice };
250
+ //# sourceMappingURL=index.js.map
251
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/voices.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * List of available voices for Murf TTS\n */\nexport const MURF_VOICES = [\n 'en-UK-hazel',\n 'en-US-cooper',\n 'en-US-imani',\n 'it-IT-giorgio',\n 'en-US-wayne',\n 'en-IN-shivani',\n 'en-US-daniel',\n 'bn-IN-anwesha',\n 'es-MX-alejandro',\n 'en-AU-joyce',\n 'en-US-zion',\n 'en-IN-isha',\n 'en-US-riley',\n 'ko-KR-hwan',\n 'fr-FR-adélie',\n 'en-US-carter',\n 'en-UK-gabriel',\n 'en-UK-juliet',\n 'en-IN-arohi',\n 'fr-FR-maxime',\n 'de-DE-josephine',\n 'en-UK-hugo',\n 'en-US-samantha',\n 'de-DE-erna',\n 'zh-CN-baolin',\n 'pt-BR-isadora',\n 'it-IT-vincenzo',\n 'en-US-terrell',\n 'en-US-denzel',\n 'en-UK-heidi',\n 'en-US-miles',\n 'en-US-abigail',\n 'fr-FR-justine',\n 'it-IT-greta',\n 'en-AU-shane',\n 'en-UK-peter',\n 'nl-NL-famke',\n 'en-AU-ivy',\n 'nl-NL-dirk',\n 'fr-FR-axel',\n 'es-ES-carla',\n 'en-US-claire',\n 'ko-KR-jangmi',\n 'ko-KR-sanghoon',\n 'it-IT-vera',\n 'hi-IN-rahul',\n 'es-ES-elvira',\n 'es-ES-enrique',\n 'en-UK-aiden',\n 'en-US-ronnie',\n 'en-UK-amber',\n 'hi-IN-shweta',\n 'hi-IN-amit',\n 'en-AU-jimm',\n 'en-UK-pearl',\n 'pt-BR-benício',\n 'en-UK-freddie',\n 'en-US-ryan',\n 'pt-BR-eloa',\n 'en-US-charlotte',\n 'de-DE-lia',\n 'en-US-natalie',\n 'en-US-michelle',\n 'en-US-phoebe',\n 'es-ES-carmen',\n 'en-US-caleb',\n 'en-US-iris',\n 'en-UK-harrison',\n 'en-US-marcus',\n 'en-US-josie',\n 'en-US-daisy',\n 'en-US-charles',\n 'en-UK-reggie',\n 'en-US-julia',\n 'en-SCOTT-emily',\n 'en-US-dylan',\n 'es-MX-valeria',\n 'en-IN-eashwar',\n 'en-AU-evelyn',\n 'de-DE-lara',\n 'en-US-evander',\n 'en-SCOTT-rory',\n 'ta-IN-iniya',\n 'en-AU-leyton',\n 'fr-FR-louise',\n 'zh-CN-wei',\n 'ko-KR-gyeong',\n 'de-DE-matthias',\n 'en-IN-rohan',\n 'en-US-delilah',\n 'bn-IN-abhik',\n 'en-US-angela',\n 'en-US-naomi',\n 'es-MX-carlos',\n 'nl-NL-merel',\n 'en-US-alicia',\n 'en-IN-alia',\n 'zh-CN-jiao',\n 'en-US-june',\n 'en-AU-ashton',\n 'en-UK-finley',\n 'pl-PL-blazej',\n 'zh-CN-zhang',\n 'en-AU-kylie',\n 'en-US-jayden',\n 'en-IN-aarav',\n 'de-DE-björn',\n 'bn-IN-ishani',\n 'zh-CN-yuxan',\n 'fr-FR-louis',\n 'ko-KR-jong-su',\n 'en-AU-harper',\n 'en-UK-ruby',\n 'en-US-ken',\n 'ta-IN-mani',\n 'de-DE-ralf',\n 'en-UK-jaxon',\n 'en-US-river',\n 'en-IN-priya',\n 'en-UK-theo',\n 'en-UK-katie',\n 'pl-PL-jacek',\n 'it-IT-lorenzo',\n 'hi-IN-shaan',\n 'en-US-amara',\n 'en-UK-mason',\n 'en-IN-surya',\n 'en-US-finn',\n 'pt-BR-gustavo',\n 'hi-IN-kabir',\n 'es-ES-javier',\n 'en-AU-mitch',\n 'pt-BR-heitor',\n 'en-US-edmund',\n 'hi-IN-ayushi',\n 'pl-PL-kasia',\n 'es-MX-luisa',\n 'zh-CN-tao',\n 'en-US-molly',\n] as const;\n\nexport type MurfVoiceId = (typeof MURF_VOICES)[number];\n","import { PassThrough } from 'stream';\n\nimport { MastraVoice } from '@mastra/core/voice';\nimport ky from 'ky';\n\nimport { MURF_VOICES } from './voices';\nimport type { MurfVoiceId } from './voices';\n\ntype MurfConfig = {\n name: 'GEN1' | 'GEN2';\n apiKey?: string;\n properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;\n};\n\ntype SpeechCreateParams = {\n voiceId: MurfVoiceId;\n text: string;\n modelVersion: 'GEN1' | 'GEN2';\n style?: string;\n rate?: number;\n pitch?: number;\n sampleRate?: 8000 | 24000 | 44100 | 48000;\n format?: 'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW';\n channelType?: 'STEREO' | 'MONO';\n pronunciationDictionary?: Record<string, string>;\n encodeAsBase64?: boolean;\n variation?: number;\n audioDuration?: number;\n multiNativeLocale?: string;\n};\n\ntype SpeechCreateResponse = {\n audioFile: string;\n audioLengthInSeconds: number;\n consumedCharacterCount: number;\n encodedAudio: string;\n remainingCharacterCount: number;\n warning: string;\n wordDurations: {\n endMs: number;\n pitchScaleMaximum: number;\n pitchScaleMinimum: number;\n sourceWordIndex: number;\n startMs: number;\n word: string;\n }[];\n};\n\nexport class MurfVoice extends MastraVoice {\n private client: typeof ky;\n private defaultVoice: MurfVoiceId;\n private properties: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;\n\n constructor({ speechModel, speaker }: { speechModel?: MurfConfig; speaker?: string } = {}) {\n super({\n speechModel: {\n name: speechModel?.name ?? 'GEN2',\n apiKey: speechModel?.apiKey ?? process.env.MURF_API_KEY,\n },\n speaker: speaker ?? MURF_VOICES[0],\n });\n\n const apiKey = this.speechModel?.apiKey;\n if (!apiKey) {\n throw new Error('MURF_API_KEY is not set');\n }\n\n this.properties = {\n ...speechModel?.properties,\n };\n\n this.client = ky.create({\n prefixUrl: 'https://api.murf.ai',\n headers: {\n 'api-key': apiKey,\n },\n });\n\n this.defaultVoice = (speaker as MurfVoiceId) ?? MURF_VOICES[0];\n }\n\n private async streamToString(stream: NodeJS.ReadableStream): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n if (typeof chunk === 'string') {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n }\n return Buffer.concat(chunks).toString('utf-8');\n }\n\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: { speaker?: string; properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'> },\n ): Promise<NodeJS.ReadableStream> {\n const text = typeof input === 'string' ? input : await this.streamToString(input);\n\n return this.traced(async () => {\n const response = await this.client\n .post('v1/speech/generate', {\n json: {\n voiceId: (options?.speaker || this.defaultVoice) as MurfVoiceId,\n text,\n modelVersion: this.speechModel?.name,\n ...this.properties,\n ...options?.properties,\n },\n })\n .json<SpeechCreateResponse>();\n\n // Create a PassThrough stream for the audio\n const stream = new PassThrough();\n\n // Get the audio file as a stream\n const audioResponse = await fetch(response.audioFile);\n if (!audioResponse.body) {\n throw new Error('No response body received');\n }\n\n // Process the stream\n const reader = audioResponse.body.getReader();\n (async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n stream.end();\n break;\n }\n stream.write(value);\n }\n } catch (error) {\n stream.destroy(error as Error);\n }\n })().catch(error => {\n stream.destroy(error as Error);\n });\n\n return stream;\n }, 'voice.murf.speak')();\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: false };\n }\n\n async listen(\n _input: NodeJS.ReadableStream,\n _options?: Record<string, unknown>,\n ): Promise<string | NodeJS.ReadableStream> {\n throw new Error('Murf does not support speech recognition');\n }\n\n async getSpeakers() {\n return this.traced(async () => {\n return MURF_VOICES.map(voice => ({\n voiceId: voice,\n name: voice,\n language: voice.split('-')[0],\n gender: 'neutral',\n }));\n }, 'voice.murf.getSpeakers')();\n }\n}\n\nexport type { MurfConfig, MurfVoiceId };\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * List of available voices for Murf TTS
3
+ */
4
+ export declare const MURF_VOICES: readonly ["en-UK-hazel", "en-US-cooper", "en-US-imani", "it-IT-giorgio", "en-US-wayne", "en-IN-shivani", "en-US-daniel", "bn-IN-anwesha", "es-MX-alejandro", "en-AU-joyce", "en-US-zion", "en-IN-isha", "en-US-riley", "ko-KR-hwan", "fr-FR-adélie", "en-US-carter", "en-UK-gabriel", "en-UK-juliet", "en-IN-arohi", "fr-FR-maxime", "de-DE-josephine", "en-UK-hugo", "en-US-samantha", "de-DE-erna", "zh-CN-baolin", "pt-BR-isadora", "it-IT-vincenzo", "en-US-terrell", "en-US-denzel", "en-UK-heidi", "en-US-miles", "en-US-abigail", "fr-FR-justine", "it-IT-greta", "en-AU-shane", "en-UK-peter", "nl-NL-famke", "en-AU-ivy", "nl-NL-dirk", "fr-FR-axel", "es-ES-carla", "en-US-claire", "ko-KR-jangmi", "ko-KR-sanghoon", "it-IT-vera", "hi-IN-rahul", "es-ES-elvira", "es-ES-enrique", "en-UK-aiden", "en-US-ronnie", "en-UK-amber", "hi-IN-shweta", "hi-IN-amit", "en-AU-jimm", "en-UK-pearl", "pt-BR-benício", "en-UK-freddie", "en-US-ryan", "pt-BR-eloa", "en-US-charlotte", "de-DE-lia", "en-US-natalie", "en-US-michelle", "en-US-phoebe", "es-ES-carmen", "en-US-caleb", "en-US-iris", "en-UK-harrison", "en-US-marcus", "en-US-josie", "en-US-daisy", "en-US-charles", "en-UK-reggie", "en-US-julia", "en-SCOTT-emily", "en-US-dylan", "es-MX-valeria", "en-IN-eashwar", "en-AU-evelyn", "de-DE-lara", "en-US-evander", "en-SCOTT-rory", "ta-IN-iniya", "en-AU-leyton", "fr-FR-louise", "zh-CN-wei", "ko-KR-gyeong", "de-DE-matthias", "en-IN-rohan", "en-US-delilah", "bn-IN-abhik", "en-US-angela", "en-US-naomi", "es-MX-carlos", "nl-NL-merel", "en-US-alicia", "en-IN-alia", "zh-CN-jiao", "en-US-june", "en-AU-ashton", "en-UK-finley", "pl-PL-blazej", "zh-CN-zhang", "en-AU-kylie", "en-US-jayden", "en-IN-aarav", "de-DE-björn", "bn-IN-ishani", "zh-CN-yuxan", "fr-FR-louis", "ko-KR-jong-su", "en-AU-harper", "en-UK-ruby", "en-US-ken", "ta-IN-mani", "de-DE-ralf", "en-UK-jaxon", "en-US-river", "en-IN-priya", "en-UK-theo", "en-UK-katie", "pl-PL-jacek", "it-IT-lorenzo", "hi-IN-shaan", "en-US-amara", "en-UK-mason", "en-IN-surya", "en-US-finn", "pt-BR-gustavo", "hi-IN-kabir", "es-ES-javier", "en-AU-mitch", "pt-BR-heitor", "en-US-edmund", "hi-IN-ayushi", "pl-PL-kasia", "es-MX-luisa", "zh-CN-tao", "en-US-molly"];
5
+ export type MurfVoiceId = (typeof MURF_VOICES)[number];
6
+ //# sourceMappingURL=voices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../src/voices.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW,6nEA4Id,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/voice-murf",
3
- "version": "0.10.6",
3
+ "version": "0.10.7-alpha.0",
4
4
  "description": "Mastra Murf voice integration",
5
5
  "type": "module",
6
6
  "files": [
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "license": "Apache-2.0",
25
25
  "dependencies": {
26
- "ky": "^1.8.1",
26
+ "ky": "^1.8.2",
27
27
  "zod": "^3.25.67"
28
28
  },
29
29
  "devDependencies": {
@@ -34,14 +34,14 @@
34
34
  "typescript": "^5.8.3",
35
35
  "vitest": "^3.2.4",
36
36
  "@internal/lint": "0.0.24",
37
- "@mastra/core": "0.12.0"
37
+ "@mastra/core": "0.12.1-alpha.0"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@mastra/core": ">=0.10.7-0 <0.13.0-0"
41
41
  },
42
42
  "scripts": {
43
- "build": "tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake=smallest --splitting",
44
- "build:watch": "pnpm build --watch",
43
+ "build": "tsup --silent --config tsup.config.ts",
44
+ "build:watch": "tsup --watch --silent --config tsup.config.ts",
45
45
  "test": "vitest run",
46
46
  "lint": "eslint ."
47
47
  }
@@ -1,65 +0,0 @@
1
- import { MastraVoice } from '@mastra/core/voice';
2
-
3
- /**
4
- * List of available voices for Murf TTS
5
- */
6
- export declare const MURF_VOICES: readonly ["en-UK-hazel", "en-US-cooper", "en-US-imani", "it-IT-giorgio", "en-US-wayne", "en-IN-shivani", "en-US-daniel", "bn-IN-anwesha", "es-MX-alejandro", "en-AU-joyce", "en-US-zion", "en-IN-isha", "en-US-riley", "ko-KR-hwan", "fr-FR-adélie", "en-US-carter", "en-UK-gabriel", "en-UK-juliet", "en-IN-arohi", "fr-FR-maxime", "de-DE-josephine", "en-UK-hugo", "en-US-samantha", "de-DE-erna", "zh-CN-baolin", "pt-BR-isadora", "it-IT-vincenzo", "en-US-terrell", "en-US-denzel", "en-UK-heidi", "en-US-miles", "en-US-abigail", "fr-FR-justine", "it-IT-greta", "en-AU-shane", "en-UK-peter", "nl-NL-famke", "en-AU-ivy", "nl-NL-dirk", "fr-FR-axel", "es-ES-carla", "en-US-claire", "ko-KR-jangmi", "ko-KR-sanghoon", "it-IT-vera", "hi-IN-rahul", "es-ES-elvira", "es-ES-enrique", "en-UK-aiden", "en-US-ronnie", "en-UK-amber", "hi-IN-shweta", "hi-IN-amit", "en-AU-jimm", "en-UK-pearl", "pt-BR-benício", "en-UK-freddie", "en-US-ryan", "pt-BR-eloa", "en-US-charlotte", "de-DE-lia", "en-US-natalie", "en-US-michelle", "en-US-phoebe", "es-ES-carmen", "en-US-caleb", "en-US-iris", "en-UK-harrison", "en-US-marcus", "en-US-josie", "en-US-daisy", "en-US-charles", "en-UK-reggie", "en-US-julia", "en-SCOTT-emily", "en-US-dylan", "es-MX-valeria", "en-IN-eashwar", "en-AU-evelyn", "de-DE-lara", "en-US-evander", "en-SCOTT-rory", "ta-IN-iniya", "en-AU-leyton", "fr-FR-louise", "zh-CN-wei", "ko-KR-gyeong", "de-DE-matthias", "en-IN-rohan", "en-US-delilah", "bn-IN-abhik", "en-US-angela", "en-US-naomi", "es-MX-carlos", "nl-NL-merel", "en-US-alicia", "en-IN-alia", "zh-CN-jiao", "en-US-june", "en-AU-ashton", "en-UK-finley", "pl-PL-blazej", "zh-CN-zhang", "en-AU-kylie", "en-US-jayden", "en-IN-aarav", "de-DE-björn", "bn-IN-ishani", "zh-CN-yuxan", "fr-FR-louis", "ko-KR-jong-su", "en-AU-harper", "en-UK-ruby", "en-US-ken", "ta-IN-mani", "de-DE-ralf", "en-UK-jaxon", "en-US-river", "en-IN-priya", "en-UK-theo", "en-UK-katie", "pl-PL-jacek", "it-IT-lorenzo", "hi-IN-shaan", "en-US-amara", "en-UK-mason", "en-IN-surya", "en-US-finn", "pt-BR-gustavo", "hi-IN-kabir", "es-ES-javier", "en-AU-mitch", "pt-BR-heitor", "en-US-edmund", "hi-IN-ayushi", "pl-PL-kasia", "es-MX-luisa", "zh-CN-tao", "en-US-molly"];
7
-
8
- export declare type MurfConfig = {
9
- name: 'GEN1' | 'GEN2';
10
- apiKey?: string;
11
- properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;
12
- };
13
-
14
- export declare class MurfVoice extends MastraVoice {
15
- private client;
16
- private defaultVoice;
17
- private properties;
18
- constructor({ speechModel, speaker }?: {
19
- speechModel?: MurfConfig;
20
- speaker?: string;
21
- });
22
- private streamToString;
23
- speak(input: string | NodeJS.ReadableStream, options?: {
24
- speaker?: string;
25
- properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;
26
- }): Promise<NodeJS.ReadableStream>;
27
- /**
28
- * Checks if listening capabilities are enabled.
29
- *
30
- * @returns {Promise<{ enabled: boolean }>}
31
- */
32
- getListener(): Promise<{
33
- enabled: boolean;
34
- }>;
35
- listen(_input: NodeJS.ReadableStream, _options?: Record<string, unknown>): Promise<string | NodeJS.ReadableStream>;
36
- getSpeakers(): Promise<{
37
- voiceId: "en-UK-hazel" | "en-US-cooper" | "en-US-imani" | "it-IT-giorgio" | "en-US-wayne" | "en-IN-shivani" | "en-US-daniel" | "bn-IN-anwesha" | "es-MX-alejandro" | "en-AU-joyce" | "en-US-zion" | "en-IN-isha" | "en-US-riley" | "ko-KR-hwan" | "fr-FR-adélie" | "en-US-carter" | "en-UK-gabriel" | "en-UK-juliet" | "en-IN-arohi" | "fr-FR-maxime" | "de-DE-josephine" | "en-UK-hugo" | "en-US-samantha" | "de-DE-erna" | "zh-CN-baolin" | "pt-BR-isadora" | "it-IT-vincenzo" | "en-US-terrell" | "en-US-denzel" | "en-UK-heidi" | "en-US-miles" | "en-US-abigail" | "fr-FR-justine" | "it-IT-greta" | "en-AU-shane" | "en-UK-peter" | "nl-NL-famke" | "en-AU-ivy" | "nl-NL-dirk" | "fr-FR-axel" | "es-ES-carla" | "en-US-claire" | "ko-KR-jangmi" | "ko-KR-sanghoon" | "it-IT-vera" | "hi-IN-rahul" | "es-ES-elvira" | "es-ES-enrique" | "en-UK-aiden" | "en-US-ronnie" | "en-UK-amber" | "hi-IN-shweta" | "hi-IN-amit" | "en-AU-jimm" | "en-UK-pearl" | "pt-BR-benício" | "en-UK-freddie" | "en-US-ryan" | "pt-BR-eloa" | "en-US-charlotte" | "de-DE-lia" | "en-US-natalie" | "en-US-michelle" | "en-US-phoebe" | "es-ES-carmen" | "en-US-caleb" | "en-US-iris" | "en-UK-harrison" | "en-US-marcus" | "en-US-josie" | "en-US-daisy" | "en-US-charles" | "en-UK-reggie" | "en-US-julia" | "en-SCOTT-emily" | "en-US-dylan" | "es-MX-valeria" | "en-IN-eashwar" | "en-AU-evelyn" | "de-DE-lara" | "en-US-evander" | "en-SCOTT-rory" | "ta-IN-iniya" | "en-AU-leyton" | "fr-FR-louise" | "zh-CN-wei" | "ko-KR-gyeong" | "de-DE-matthias" | "en-IN-rohan" | "en-US-delilah" | "bn-IN-abhik" | "en-US-angela" | "en-US-naomi" | "es-MX-carlos" | "nl-NL-merel" | "en-US-alicia" | "en-IN-alia" | "zh-CN-jiao" | "en-US-june" | "en-AU-ashton" | "en-UK-finley" | "pl-PL-blazej" | "zh-CN-zhang" | "en-AU-kylie" | "en-US-jayden" | "en-IN-aarav" | "de-DE-björn" | "bn-IN-ishani" | "zh-CN-yuxan" | "fr-FR-louis" | "ko-KR-jong-su" | "en-AU-harper" | "en-UK-ruby" | "en-US-ken" | "ta-IN-mani" | "de-DE-ralf" | "en-UK-jaxon" | "en-US-river" | "en-IN-priya" | "en-UK-theo" | "en-UK-katie" | "pl-PL-jacek" | "it-IT-lorenzo" | "hi-IN-shaan" | "en-US-amara" | "en-UK-mason" | "en-IN-surya" | "en-US-finn" | "pt-BR-gustavo" | "hi-IN-kabir" | "es-ES-javier" | "en-AU-mitch" | "pt-BR-heitor" | "en-US-edmund" | "hi-IN-ayushi" | "pl-PL-kasia" | "es-MX-luisa" | "zh-CN-tao" | "en-US-molly";
38
- name: "en-UK-hazel" | "en-US-cooper" | "en-US-imani" | "it-IT-giorgio" | "en-US-wayne" | "en-IN-shivani" | "en-US-daniel" | "bn-IN-anwesha" | "es-MX-alejandro" | "en-AU-joyce" | "en-US-zion" | "en-IN-isha" | "en-US-riley" | "ko-KR-hwan" | "fr-FR-adélie" | "en-US-carter" | "en-UK-gabriel" | "en-UK-juliet" | "en-IN-arohi" | "fr-FR-maxime" | "de-DE-josephine" | "en-UK-hugo" | "en-US-samantha" | "de-DE-erna" | "zh-CN-baolin" | "pt-BR-isadora" | "it-IT-vincenzo" | "en-US-terrell" | "en-US-denzel" | "en-UK-heidi" | "en-US-miles" | "en-US-abigail" | "fr-FR-justine" | "it-IT-greta" | "en-AU-shane" | "en-UK-peter" | "nl-NL-famke" | "en-AU-ivy" | "nl-NL-dirk" | "fr-FR-axel" | "es-ES-carla" | "en-US-claire" | "ko-KR-jangmi" | "ko-KR-sanghoon" | "it-IT-vera" | "hi-IN-rahul" | "es-ES-elvira" | "es-ES-enrique" | "en-UK-aiden" | "en-US-ronnie" | "en-UK-amber" | "hi-IN-shweta" | "hi-IN-amit" | "en-AU-jimm" | "en-UK-pearl" | "pt-BR-benício" | "en-UK-freddie" | "en-US-ryan" | "pt-BR-eloa" | "en-US-charlotte" | "de-DE-lia" | "en-US-natalie" | "en-US-michelle" | "en-US-phoebe" | "es-ES-carmen" | "en-US-caleb" | "en-US-iris" | "en-UK-harrison" | "en-US-marcus" | "en-US-josie" | "en-US-daisy" | "en-US-charles" | "en-UK-reggie" | "en-US-julia" | "en-SCOTT-emily" | "en-US-dylan" | "es-MX-valeria" | "en-IN-eashwar" | "en-AU-evelyn" | "de-DE-lara" | "en-US-evander" | "en-SCOTT-rory" | "ta-IN-iniya" | "en-AU-leyton" | "fr-FR-louise" | "zh-CN-wei" | "ko-KR-gyeong" | "de-DE-matthias" | "en-IN-rohan" | "en-US-delilah" | "bn-IN-abhik" | "en-US-angela" | "en-US-naomi" | "es-MX-carlos" | "nl-NL-merel" | "en-US-alicia" | "en-IN-alia" | "zh-CN-jiao" | "en-US-june" | "en-AU-ashton" | "en-UK-finley" | "pl-PL-blazej" | "zh-CN-zhang" | "en-AU-kylie" | "en-US-jayden" | "en-IN-aarav" | "de-DE-björn" | "bn-IN-ishani" | "zh-CN-yuxan" | "fr-FR-louis" | "ko-KR-jong-su" | "en-AU-harper" | "en-UK-ruby" | "en-US-ken" | "ta-IN-mani" | "de-DE-ralf" | "en-UK-jaxon" | "en-US-river" | "en-IN-priya" | "en-UK-theo" | "en-UK-katie" | "pl-PL-jacek" | "it-IT-lorenzo" | "hi-IN-shaan" | "en-US-amara" | "en-UK-mason" | "en-IN-surya" | "en-US-finn" | "pt-BR-gustavo" | "hi-IN-kabir" | "es-ES-javier" | "en-AU-mitch" | "pt-BR-heitor" | "en-US-edmund" | "hi-IN-ayushi" | "pl-PL-kasia" | "es-MX-luisa" | "zh-CN-tao" | "en-US-molly";
39
- language: string | undefined;
40
- gender: string;
41
- }[]>;
42
- }
43
-
44
- declare type MurfVoiceId = (typeof MURF_VOICES)[number];
45
- export { MurfVoiceId }
46
- export { MurfVoiceId as MurfVoiceId_alias_1 }
47
-
48
- declare type SpeechCreateParams = {
49
- voiceId: MurfVoiceId;
50
- text: string;
51
- modelVersion: 'GEN1' | 'GEN2';
52
- style?: string;
53
- rate?: number;
54
- pitch?: number;
55
- sampleRate?: 8000 | 24000 | 44100 | 48000;
56
- format?: 'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW';
57
- channelType?: 'STEREO' | 'MONO';
58
- pronunciationDictionary?: Record<string, string>;
59
- encodeAsBase64?: boolean;
60
- variation?: number;
61
- audioDuration?: number;
62
- multiNativeLocale?: string;
63
- };
64
-
65
- export { }
@@ -1,65 +0,0 @@
1
- import { MastraVoice } from '@mastra/core/voice';
2
-
3
- /**
4
- * List of available voices for Murf TTS
5
- */
6
- export declare const MURF_VOICES: readonly ["en-UK-hazel", "en-US-cooper", "en-US-imani", "it-IT-giorgio", "en-US-wayne", "en-IN-shivani", "en-US-daniel", "bn-IN-anwesha", "es-MX-alejandro", "en-AU-joyce", "en-US-zion", "en-IN-isha", "en-US-riley", "ko-KR-hwan", "fr-FR-adélie", "en-US-carter", "en-UK-gabriel", "en-UK-juliet", "en-IN-arohi", "fr-FR-maxime", "de-DE-josephine", "en-UK-hugo", "en-US-samantha", "de-DE-erna", "zh-CN-baolin", "pt-BR-isadora", "it-IT-vincenzo", "en-US-terrell", "en-US-denzel", "en-UK-heidi", "en-US-miles", "en-US-abigail", "fr-FR-justine", "it-IT-greta", "en-AU-shane", "en-UK-peter", "nl-NL-famke", "en-AU-ivy", "nl-NL-dirk", "fr-FR-axel", "es-ES-carla", "en-US-claire", "ko-KR-jangmi", "ko-KR-sanghoon", "it-IT-vera", "hi-IN-rahul", "es-ES-elvira", "es-ES-enrique", "en-UK-aiden", "en-US-ronnie", "en-UK-amber", "hi-IN-shweta", "hi-IN-amit", "en-AU-jimm", "en-UK-pearl", "pt-BR-benício", "en-UK-freddie", "en-US-ryan", "pt-BR-eloa", "en-US-charlotte", "de-DE-lia", "en-US-natalie", "en-US-michelle", "en-US-phoebe", "es-ES-carmen", "en-US-caleb", "en-US-iris", "en-UK-harrison", "en-US-marcus", "en-US-josie", "en-US-daisy", "en-US-charles", "en-UK-reggie", "en-US-julia", "en-SCOTT-emily", "en-US-dylan", "es-MX-valeria", "en-IN-eashwar", "en-AU-evelyn", "de-DE-lara", "en-US-evander", "en-SCOTT-rory", "ta-IN-iniya", "en-AU-leyton", "fr-FR-louise", "zh-CN-wei", "ko-KR-gyeong", "de-DE-matthias", "en-IN-rohan", "en-US-delilah", "bn-IN-abhik", "en-US-angela", "en-US-naomi", "es-MX-carlos", "nl-NL-merel", "en-US-alicia", "en-IN-alia", "zh-CN-jiao", "en-US-june", "en-AU-ashton", "en-UK-finley", "pl-PL-blazej", "zh-CN-zhang", "en-AU-kylie", "en-US-jayden", "en-IN-aarav", "de-DE-björn", "bn-IN-ishani", "zh-CN-yuxan", "fr-FR-louis", "ko-KR-jong-su", "en-AU-harper", "en-UK-ruby", "en-US-ken", "ta-IN-mani", "de-DE-ralf", "en-UK-jaxon", "en-US-river", "en-IN-priya", "en-UK-theo", "en-UK-katie", "pl-PL-jacek", "it-IT-lorenzo", "hi-IN-shaan", "en-US-amara", "en-UK-mason", "en-IN-surya", "en-US-finn", "pt-BR-gustavo", "hi-IN-kabir", "es-ES-javier", "en-AU-mitch", "pt-BR-heitor", "en-US-edmund", "hi-IN-ayushi", "pl-PL-kasia", "es-MX-luisa", "zh-CN-tao", "en-US-molly"];
7
-
8
- export declare type MurfConfig = {
9
- name: 'GEN1' | 'GEN2';
10
- apiKey?: string;
11
- properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;
12
- };
13
-
14
- export declare class MurfVoice extends MastraVoice {
15
- private client;
16
- private defaultVoice;
17
- private properties;
18
- constructor({ speechModel, speaker }?: {
19
- speechModel?: MurfConfig;
20
- speaker?: string;
21
- });
22
- private streamToString;
23
- speak(input: string | NodeJS.ReadableStream, options?: {
24
- speaker?: string;
25
- properties?: Omit<SpeechCreateParams, 'modelVersion' | 'voiceId' | 'text'>;
26
- }): Promise<NodeJS.ReadableStream>;
27
- /**
28
- * Checks if listening capabilities are enabled.
29
- *
30
- * @returns {Promise<{ enabled: boolean }>}
31
- */
32
- getListener(): Promise<{
33
- enabled: boolean;
34
- }>;
35
- listen(_input: NodeJS.ReadableStream, _options?: Record<string, unknown>): Promise<string | NodeJS.ReadableStream>;
36
- getSpeakers(): Promise<{
37
- voiceId: "en-UK-hazel" | "en-US-cooper" | "en-US-imani" | "it-IT-giorgio" | "en-US-wayne" | "en-IN-shivani" | "en-US-daniel" | "bn-IN-anwesha" | "es-MX-alejandro" | "en-AU-joyce" | "en-US-zion" | "en-IN-isha" | "en-US-riley" | "ko-KR-hwan" | "fr-FR-adélie" | "en-US-carter" | "en-UK-gabriel" | "en-UK-juliet" | "en-IN-arohi" | "fr-FR-maxime" | "de-DE-josephine" | "en-UK-hugo" | "en-US-samantha" | "de-DE-erna" | "zh-CN-baolin" | "pt-BR-isadora" | "it-IT-vincenzo" | "en-US-terrell" | "en-US-denzel" | "en-UK-heidi" | "en-US-miles" | "en-US-abigail" | "fr-FR-justine" | "it-IT-greta" | "en-AU-shane" | "en-UK-peter" | "nl-NL-famke" | "en-AU-ivy" | "nl-NL-dirk" | "fr-FR-axel" | "es-ES-carla" | "en-US-claire" | "ko-KR-jangmi" | "ko-KR-sanghoon" | "it-IT-vera" | "hi-IN-rahul" | "es-ES-elvira" | "es-ES-enrique" | "en-UK-aiden" | "en-US-ronnie" | "en-UK-amber" | "hi-IN-shweta" | "hi-IN-amit" | "en-AU-jimm" | "en-UK-pearl" | "pt-BR-benício" | "en-UK-freddie" | "en-US-ryan" | "pt-BR-eloa" | "en-US-charlotte" | "de-DE-lia" | "en-US-natalie" | "en-US-michelle" | "en-US-phoebe" | "es-ES-carmen" | "en-US-caleb" | "en-US-iris" | "en-UK-harrison" | "en-US-marcus" | "en-US-josie" | "en-US-daisy" | "en-US-charles" | "en-UK-reggie" | "en-US-julia" | "en-SCOTT-emily" | "en-US-dylan" | "es-MX-valeria" | "en-IN-eashwar" | "en-AU-evelyn" | "de-DE-lara" | "en-US-evander" | "en-SCOTT-rory" | "ta-IN-iniya" | "en-AU-leyton" | "fr-FR-louise" | "zh-CN-wei" | "ko-KR-gyeong" | "de-DE-matthias" | "en-IN-rohan" | "en-US-delilah" | "bn-IN-abhik" | "en-US-angela" | "en-US-naomi" | "es-MX-carlos" | "nl-NL-merel" | "en-US-alicia" | "en-IN-alia" | "zh-CN-jiao" | "en-US-june" | "en-AU-ashton" | "en-UK-finley" | "pl-PL-blazej" | "zh-CN-zhang" | "en-AU-kylie" | "en-US-jayden" | "en-IN-aarav" | "de-DE-björn" | "bn-IN-ishani" | "zh-CN-yuxan" | "fr-FR-louis" | "ko-KR-jong-su" | "en-AU-harper" | "en-UK-ruby" | "en-US-ken" | "ta-IN-mani" | "de-DE-ralf" | "en-UK-jaxon" | "en-US-river" | "en-IN-priya" | "en-UK-theo" | "en-UK-katie" | "pl-PL-jacek" | "it-IT-lorenzo" | "hi-IN-shaan" | "en-US-amara" | "en-UK-mason" | "en-IN-surya" | "en-US-finn" | "pt-BR-gustavo" | "hi-IN-kabir" | "es-ES-javier" | "en-AU-mitch" | "pt-BR-heitor" | "en-US-edmund" | "hi-IN-ayushi" | "pl-PL-kasia" | "es-MX-luisa" | "zh-CN-tao" | "en-US-molly";
38
- name: "en-UK-hazel" | "en-US-cooper" | "en-US-imani" | "it-IT-giorgio" | "en-US-wayne" | "en-IN-shivani" | "en-US-daniel" | "bn-IN-anwesha" | "es-MX-alejandro" | "en-AU-joyce" | "en-US-zion" | "en-IN-isha" | "en-US-riley" | "ko-KR-hwan" | "fr-FR-adélie" | "en-US-carter" | "en-UK-gabriel" | "en-UK-juliet" | "en-IN-arohi" | "fr-FR-maxime" | "de-DE-josephine" | "en-UK-hugo" | "en-US-samantha" | "de-DE-erna" | "zh-CN-baolin" | "pt-BR-isadora" | "it-IT-vincenzo" | "en-US-terrell" | "en-US-denzel" | "en-UK-heidi" | "en-US-miles" | "en-US-abigail" | "fr-FR-justine" | "it-IT-greta" | "en-AU-shane" | "en-UK-peter" | "nl-NL-famke" | "en-AU-ivy" | "nl-NL-dirk" | "fr-FR-axel" | "es-ES-carla" | "en-US-claire" | "ko-KR-jangmi" | "ko-KR-sanghoon" | "it-IT-vera" | "hi-IN-rahul" | "es-ES-elvira" | "es-ES-enrique" | "en-UK-aiden" | "en-US-ronnie" | "en-UK-amber" | "hi-IN-shweta" | "hi-IN-amit" | "en-AU-jimm" | "en-UK-pearl" | "pt-BR-benício" | "en-UK-freddie" | "en-US-ryan" | "pt-BR-eloa" | "en-US-charlotte" | "de-DE-lia" | "en-US-natalie" | "en-US-michelle" | "en-US-phoebe" | "es-ES-carmen" | "en-US-caleb" | "en-US-iris" | "en-UK-harrison" | "en-US-marcus" | "en-US-josie" | "en-US-daisy" | "en-US-charles" | "en-UK-reggie" | "en-US-julia" | "en-SCOTT-emily" | "en-US-dylan" | "es-MX-valeria" | "en-IN-eashwar" | "en-AU-evelyn" | "de-DE-lara" | "en-US-evander" | "en-SCOTT-rory" | "ta-IN-iniya" | "en-AU-leyton" | "fr-FR-louise" | "zh-CN-wei" | "ko-KR-gyeong" | "de-DE-matthias" | "en-IN-rohan" | "en-US-delilah" | "bn-IN-abhik" | "en-US-angela" | "en-US-naomi" | "es-MX-carlos" | "nl-NL-merel" | "en-US-alicia" | "en-IN-alia" | "zh-CN-jiao" | "en-US-june" | "en-AU-ashton" | "en-UK-finley" | "pl-PL-blazej" | "zh-CN-zhang" | "en-AU-kylie" | "en-US-jayden" | "en-IN-aarav" | "de-DE-björn" | "bn-IN-ishani" | "zh-CN-yuxan" | "fr-FR-louis" | "ko-KR-jong-su" | "en-AU-harper" | "en-UK-ruby" | "en-US-ken" | "ta-IN-mani" | "de-DE-ralf" | "en-UK-jaxon" | "en-US-river" | "en-IN-priya" | "en-UK-theo" | "en-UK-katie" | "pl-PL-jacek" | "it-IT-lorenzo" | "hi-IN-shaan" | "en-US-amara" | "en-UK-mason" | "en-IN-surya" | "en-US-finn" | "pt-BR-gustavo" | "hi-IN-kabir" | "es-ES-javier" | "en-AU-mitch" | "pt-BR-heitor" | "en-US-edmund" | "hi-IN-ayushi" | "pl-PL-kasia" | "es-MX-luisa" | "zh-CN-tao" | "en-US-molly";
39
- language: string | undefined;
40
- gender: string;
41
- }[]>;
42
- }
43
-
44
- declare type MurfVoiceId = (typeof MURF_VOICES)[number];
45
- export { MurfVoiceId }
46
- export { MurfVoiceId as MurfVoiceId_alias_1 }
47
-
48
- declare type SpeechCreateParams = {
49
- voiceId: MurfVoiceId;
50
- text: string;
51
- modelVersion: 'GEN1' | 'GEN2';
52
- style?: string;
53
- rate?: number;
54
- pitch?: number;
55
- sampleRate?: 8000 | 24000 | 44100 | 48000;
56
- format?: 'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW';
57
- channelType?: 'STEREO' | 'MONO';
58
- pronunciationDictionary?: Record<string, string>;
59
- encodeAsBase64?: boolean;
60
- variation?: number;
61
- audioDuration?: number;
62
- multiNativeLocale?: string;
63
- };
64
-
65
- export { }
package/dist/index.d.cts DELETED
@@ -1,3 +0,0 @@
1
- export { MurfVoice } from './_tsup-dts-rollup.cjs';
2
- export { MurfConfig } from './_tsup-dts-rollup.cjs';
3
- export { MurfVoiceId } from './_tsup-dts-rollup.cjs';