@mastra/voice-azure 0.10.19 → 0.11.0-beta.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/CHANGELOG.md CHANGED
@@ -1,31 +1,19 @@
1
1
  # @mastra/voice-azure
2
2
 
3
- ## 0.10.19
3
+ ## 0.11.0-beta.0
4
4
 
5
- ### Patch Changes
6
-
7
- - update peerdeps ([`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc))
8
-
9
- - Updated dependencies [[`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc), [`6d7e90d`](https://github.com/mastra-ai/mastra/commit/6d7e90db09713e6250f4d6c3d3cff1b4740e50f9), [`f78b908`](https://github.com/mastra-ai/mastra/commit/f78b9080e11af765969b36b4a619761056030840), [`23c2614`](https://github.com/mastra-ai/mastra/commit/23c26140fdbf04b8c59e8d7d52106d67dad962ec), [`e365eda`](https://github.com/mastra-ai/mastra/commit/e365eda45795b43707310531cac1e2ce4e5a0712)]:
10
- - @mastra/core@0.24.0
11
-
12
- ## 0.10.19-alpha.0
13
-
14
- ### Patch Changes
5
+ ### Minor Changes
15
6
 
16
- - update peerdeps ([`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc))
7
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
17
8
 
18
- - Updated dependencies [[`5ca1cca`](https://github.com/mastra-ai/mastra/commit/5ca1ccac61ffa7141e6d9fa8f22d3ad4d03bf5dc), [`6d7e90d`](https://github.com/mastra-ai/mastra/commit/6d7e90db09713e6250f4d6c3d3cff1b4740e50f9), [`f78b908`](https://github.com/mastra-ai/mastra/commit/f78b9080e11af765969b36b4a619761056030840), [`23c2614`](https://github.com/mastra-ai/mastra/commit/23c26140fdbf04b8c59e8d7d52106d67dad962ec), [`e365eda`](https://github.com/mastra-ai/mastra/commit/e365eda45795b43707310531cac1e2ce4e5a0712)]:
19
- - @mastra/core@0.24.0-alpha.0
9
+ - Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
20
10
 
21
- ## 0.10.18
11
+ - Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
22
12
 
23
13
  ### Patch Changes
24
14
 
25
- - Fix peerdependencies ([`eb7c1c8`](https://github.com/mastra-ai/mastra/commit/eb7c1c8c592d8fb16dfd250e337d9cdc73c8d5de))
26
-
27
- - Updated dependencies []:
28
- - @mastra/core@0.23.1
15
+ - Updated dependencies [[`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
16
+ - @mastra/core@1.0.0-beta.0
29
17
 
30
18
  ## 0.10.17
31
19
 
package/dist/index.cjs CHANGED
@@ -300,13 +300,11 @@ var AzureVoice = class extends voice.MastraVoice {
300
300
  * @returns {Promise<Array<{ voiceId: string; language: string; region: string; }>>} List of available voices
301
301
  */
302
302
  async getSpeakers() {
303
- return this.traced(async () => {
304
- return AZURE_VOICES.map((voice) => ({
305
- voiceId: voice,
306
- language: voice.split("-")[0],
307
- region: voice.split("-")[1]
308
- }));
309
- }, "voice.azure.voices")();
303
+ return AZURE_VOICES.map((voice) => ({
304
+ voiceId: voice,
305
+ language: voice.split("-")[0],
306
+ region: voice.split("-")[1]
307
+ }));
310
308
  }
311
309
  /**
312
310
  * Converts text to speech using Azure's Text-to-Speech service.
@@ -343,16 +341,13 @@ var AzureVoice = class extends voice.MastraVoice {
343
341
  const timeoutPromise = new Promise((_, reject) => {
344
342
  setTimeout(() => reject(new Error("Speech synthesis timed out")), 5e3);
345
343
  });
346
- const synthesisPromise = this.traced(
347
- () => new Promise((resolve, reject) => {
348
- synthesizer.speakTextAsync(
349
- input,
350
- (result2) => result2.errorDetails ? reject(new Error(`Speech synthesis failed: ${result2.errorDetails}`)) : resolve(result2),
351
- (error) => reject(new Error(`Speech synthesis error: ${String(error)}`))
352
- );
353
- }),
354
- "voice.azure.speak"
355
- )();
344
+ const synthesisPromise = new Promise((resolve, reject) => {
345
+ synthesizer.speakTextAsync(
346
+ input,
347
+ (result2) => result2.errorDetails ? reject(new Error(`Speech synthesis failed: ${result2.errorDetails}`)) : resolve(result2),
348
+ (error) => reject(new Error(`Speech synthesis error: ${String(error)}`))
349
+ );
350
+ });
356
351
  const result = await Promise.race([synthesisPromise, timeoutPromise]);
357
352
  synthesizer.close();
358
353
  if (result.reason !== Azure__namespace.ResultReason.SynthesizingAudioCompleted) {
@@ -410,7 +405,7 @@ var AzureVoice = class extends voice.MastraVoice {
410
405
  pushStream.write(chunk.buffer);
411
406
  }
412
407
  pushStream.close();
413
- const text = await this.traced(() => recognitionPromise, "voice.azure.listen")();
408
+ const text = await recognitionPromise;
414
409
  return text;
415
410
  } catch (error) {
416
411
  if (error instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/voices.ts","../src/index.ts"],"names":["MastraVoice","Azure","result","Readable"],"mappings":"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","file":"index.cjs","sourcesContent":["export const AZURE_VOICES = [\n 'af-ZA-AdriNeural',\n 'af-ZA-WillemNeural',\n 'am-ET-MekdesNeural',\n 'am-ET-AmehaNeural',\n 'ar-AE-FatimaNeural',\n 'ar-AE-HamdanNeural',\n 'ar-BH-LailaNeural',\n 'ar-BH-AliNeural',\n 'ar-DZ-AminaNeural',\n 'ar-DZ-IsmaelNeural',\n 'ar-EG-SalmaNeural',\n 'ar-EG-ShakirNeural',\n 'ar-IQ-RanaNeural',\n 'ar-IQ-BasselNeural',\n 'ar-JO-SanaNeural',\n 'ar-JO-TaimNeural',\n 'ar-KW-NouraNeural',\n 'ar-KW-FahedNeural',\n 'ar-LB-LaylaNeural',\n 'ar-LB-RamiNeural',\n 'ar-LY-ImanNeural',\n 'ar-LY-OmarNeural',\n 'ar-MA-MounaNeural',\n 'ar-MA-JamalNeural',\n 'ar-OM-AyshaNeural',\n 'ar-OM-AbdullahNeural',\n 'ar-QA-AmalNeural',\n 'ar-QA-MoazNeural',\n 'ar-SA-ZariyahNeural',\n 'ar-SA-HamedNeural',\n 'ar-SY-AmanyNeural',\n 'ar-SY-LaithNeural',\n 'ar-TN-ReemNeural',\n 'ar-TN-HediNeural',\n 'ar-YE-MaryamNeural',\n 'ar-YE-SalehNeural',\n 'as-IN-YashicaNeural',\n 'as-IN-PriyomNeural',\n 'az-AZ-BanuNeural',\n 'az-AZ-BabekNeural',\n 'bg-BG-KalinaNeural',\n 'bg-BG-BorislavNeural',\n 'bn-BD-NabanitaNeural',\n 'bn-BD-PradeepNeural',\n 'bn-IN-TanishaaNeural',\n 'bn-IN-BashkarNeural',\n 'bs-BA-VesnaNeural',\n 'bs-BA-GoranNeural',\n 'ca-ES-JoanaNeural',\n 'ca-ES-EnricNeural',\n 'ca-ES-AlbaNeural',\n 'cs-CZ-VlastaNeural',\n 'cs-CZ-AntoninNeural',\n 'cy-GB-NiaNeural',\n 'cy-GB-AledNeural',\n 'da-DK-ChristelNeural',\n 'da-DK-JeppeNeural',\n 'de-AT-IngridNeural',\n 'de-AT-JonasNeural',\n 'de-CH-LeniNeural',\n 'de-CH-JanNeural',\n 'de-DE-KatjaNeural',\n 'de-DE-ConradNeural',\n 'de-DE-SeraphinaMultilingualNeural',\n 'de-DE-FlorianMultilingualNeural',\n 'de-DE-AmalaNeural',\n 'de-DE-BerndNeural',\n 'de-DE-ChristophNeural',\n 'de-DE-ElkeNeural',\n 'de-DE-GiselaNeural',\n 'de-DE-KasperNeural',\n 'de-DE-KillianNeural',\n 'de-DE-KlarissaNeural',\n 'de-DE-KlausNeural',\n 'de-DE-LouisaNeural',\n 'de-DE-MajaNeural',\n 'de-DE-RalfNeural',\n 'de-DE-TanjaNeural',\n 'de-DE-Seraphina:DragonHDLatestNeural',\n 'el-GR-AthinaNeural',\n 'el-GR-NestorasNeural',\n 'en-AU-NatashaNeural',\n 'en-AU-WilliamNeural',\n 'en-AU-AnnetteNeural',\n 'en-AU-CarlyNeural',\n 'en-AU-DarrenNeural',\n 'en-AU-DuncanNeural',\n 'en-AU-ElsieNeural',\n 'en-AU-FreyaNeural',\n 'en-AU-JoanneNeural',\n 'en-AU-KenNeural',\n 'en-AU-KimNeural',\n 'en-AU-NeilNeural',\n 'en-AU-TimNeural',\n 'en-AU-TinaNeural',\n 'en-CA-ClaraNeural',\n 'en-CA-LiamNeural',\n 'en-GB-SoniaNeural',\n 'en-GB-RyanNeural',\n 'en-GB-LibbyNeural',\n 'en-GB-AdaMultilingualNeural',\n 'en-GB-OllieMultilingualNeural',\n 'en-GB-AbbiNeural',\n 'en-GB-AlfieNeural',\n 'en-GB-BellaNeural',\n 'en-GB-ElliotNeural',\n 'en-GB-EthanNeural',\n 'en-GB-HollieNeural',\n 'en-GB-MaisieNeural',\n 'en-GB-NoahNeural',\n 'en-GB-OliverNeural',\n 'en-GB-OliviaNeural',\n 'en-GB-ThomasNeural',\n 'en-GB-MiaNeural',\n 'en-HK-YanNeural',\n 'en-HK-SamNeural',\n 'en-IE-EmilyNeural',\n 'en-IE-ConnorNeural',\n 'en-IN-AaravNeural',\n 'en-IN-AashiNeural',\n 'en-IN-AnanyaNeural',\n 'en-IN-KavyaNeural',\n 'en-IN-KunalNeural',\n 'en-IN-NeerjaNeural',\n 'en-IN-PrabhatNeural',\n 'en-IN-RehaanNeural',\n 'en-IN-AartiNeural',\n 'en-IN-ArjunNeural',\n 'en-KE-AsiliaNeural',\n 'en-KE-ChilembaNeural',\n 'en-NG-EzinneNeural',\n 'en-NG-AbeoNeural',\n 'en-NZ-MollyNeural',\n 'en-NZ-MitchellNeural',\n 'en-PH-RosaNeural',\n 'en-PH-JamesNeural',\n 'en-SG-LunaNeural',\n 'en-SG-WayneNeural',\n 'en-TZ-ImaniNeural',\n 'en-TZ-ElimuNeural',\n 'en-US-AvaMultilingualNeural',\n 'en-US-AndrewMultilingualNeural',\n 'en-US-EmmaMultilingualNeural',\n 'en-US-BrianMultilingualNeural',\n 'en-US-AvaNeural',\n 'en-US-AndrewNeural',\n 'en-US-EmmaNeural',\n 'en-US-BrianNeural',\n 'en-US-JennyNeural',\n 'en-US-GuyNeural',\n 'en-US-AriaNeural',\n 'en-US-DavisNeural',\n 'en-US-JaneNeural',\n 'en-US-JasonNeural',\n 'en-US-KaiNeural',\n 'en-US-LunaNeural',\n 'en-US-SaraNeural',\n 'en-US-TonyNeural',\n 'en-US-NancyNeural',\n 'en-US-CoraMultilingualNeural',\n 'en-US-ChristopherMultilingualNeural',\n 'en-US-BrandonMultilingualNeural',\n 'en-US-AmberNeural',\n 'en-US-AnaNeural',\n 'en-US-AshleyNeural',\n 'en-US-BrandonNeural',\n 'en-US-ChristopherNeural',\n 'en-US-CoraNeural',\n 'en-US-ElizabethNeural',\n 'en-US-EricNeural',\n 'en-US-JacobNeural',\n 'en-US-JennyMultilingualNeural',\n 'en-US-MichelleNeural',\n 'en-US-MonicaNeural',\n 'en-US-RogerNeural',\n 'en-US-RyanMultilingualNeural',\n 'en-US-SteffanNeural',\n 'en-US-AdamMultilingualNeural',\n 'en-US-AIGenerate1Neural',\n 'en-US-AIGenerate2Neural',\n 'en-US-AlloyTurboMultilingualNeural',\n 'en-US-AmandaMultilingualNeural',\n 'en-US-BlueNeural',\n 'en-US-DavisMultilingualNeural',\n 'en-US-DerekMultilingualNeural',\n 'en-US-DustinMultilingualNeural',\n 'en-US-EchoTurboMultilingualNeural',\n 'en-US-EvelynMultilingualNeural',\n 'en-US-FableTurboMultilingualNeural',\n 'en-US-LewisMultilingualNeural',\n 'en-US-LolaMultilingualNeural',\n 'en-US-NancyMultilingualNeural',\n 'en-US-NovaTurboMultilingualNeural',\n 'en-US-OnyxTurboMultilingualNeural',\n 'en-US-PhoebeMultilingualNeural',\n 'en-US-SamuelMultilingualNeural',\n 'en-US-SerenaMultilingualNeural',\n 'en-US-ShimmerTurboMultilingualNeural',\n 'en-US-SteffanMultilingualNeural',\n 'en-US-Andrew:DragonHDLatestNeural',\n 'en-US-Andrew2:DragonHDLatestNeural',\n 'en-US-Aria:DragonHDLatestNeural',\n 'en-US-Ava:DragonHDLatestNeural',\n 'en-US-Brian:DragonHDLatestNeural',\n 'en-US-Davis:DragonHDLatestNeural',\n 'en-US-Emma:DragonHDLatestNeural',\n 'en-US-Emma2:DragonHDLatestNeural',\n 'en-US-Jenny:DragonHDLatestNeural',\n 'en-US-Steffan:DragonHDLatestNeural',\n 'en-ZA-LeahNeural',\n 'en-ZA-LukeNeural',\n] as const;\n\nexport type VoiceId = (typeof AZURE_VOICES)[number];\n","import { Readable } from 'stream';\nimport { MastraVoice } from '@mastra/core/voice';\nimport * as Azure from 'microsoft-cognitiveservices-speech-sdk';\nimport { AZURE_VOICES } from './voices';\nimport type { VoiceId } from './voices';\n\ninterface AzureVoiceConfig {\n apiKey?: string;\n region?: string;\n voiceName?: string;\n language?: string;\n}\n\nexport class AzureVoice extends MastraVoice {\n private speechConfig?: Azure.SpeechConfig;\n private listeningConfig?: Azure.SpeechConfig;\n private speechSynthesizer?: Azure.SpeechSynthesizer;\n private speechRecognizer?: Azure.SpeechRecognizer;\n\n /**\n * Creates a new instance of AzureVoice for text-to-speech and speech-to-text services.\n *\n * @param {Object} config - Configuration options\n * @param {AzureVoiceConfig} [config.speechModel] - Configuration for text-to-speech\n * @param {AzureVoiceConfig} [config.listeningModel] - Configuration for speech-to-text\n * @param {VoiceId} [config.speaker] - Default voice ID for speech synthesis\n */\n constructor({\n speechModel,\n listeningModel,\n speaker,\n }: {\n speechModel?: AzureVoiceConfig;\n listeningModel?: AzureVoiceConfig;\n speaker?: VoiceId;\n } = {}) {\n super({\n speechModel: {\n name: '',\n apiKey: speechModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n listeningModel: {\n name: '',\n apiKey: listeningModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n speaker,\n });\n\n const envApiKey = process.env.AZURE_API_KEY;\n const envRegion = process.env.AZURE_REGION;\n\n // Configure speech synthesis\n if (speechModel) {\n const apiKey = speechModel.apiKey ?? envApiKey;\n const region = speechModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for speech model');\n if (!region) throw new Error('No region provided for speech model');\n\n this.speechConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n this.speechConfig.speechSynthesisVoiceName = speechModel.voiceName || speaker || 'en-US-AriaNeural';\n this.speechSynthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n }\n\n // Configure speech recognition\n if (listeningModel) {\n const apiKey = listeningModel.apiKey ?? envApiKey;\n const region = listeningModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for listening model');\n if (!region) throw new Error('No region provided for listening model');\n\n this.listeningConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n if (listeningModel.language) {\n this.listeningConfig.speechRecognitionLanguage = listeningModel.language;\n }\n this.speechRecognizer = new Azure.SpeechRecognizer(this.listeningConfig);\n }\n }\n\n /**\n * Gets a list of available voices for speech synthesis.\n *\n * @returns {Promise<Array<{ voiceId: string; language: string; region: string; }>>} List of available voices\n */\n async getSpeakers() {\n return this.traced(async () => {\n return AZURE_VOICES.map(voice => ({\n voiceId: voice,\n language: voice.split('-')[0],\n region: voice.split('-')[1],\n }));\n }, 'voice.azure.voices')();\n }\n\n /**\n * Converts text to speech using Azure's Text-to-Speech service.\n *\n * @param {string | NodeJS.ReadableStream} input - Text to convert to speech\n * @param {Object} [options] - Optional parameters\n * @param {string} [options.speaker] - Voice ID to use for synthesis\n * @returns {Promise<NodeJS.ReadableStream>} Stream containing the synthesized audio\n * @throws {Error} If speech model is not configured or synthesis fails\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n [key: string]: any;\n },\n ): Promise<NodeJS.ReadableStream> {\n if (!this.speechConfig) {\n throw new Error('Speech model (Azure) not configured');\n }\n\n // Convert stream input to string if needed\n if (typeof input !== 'string') {\n const chunks: Buffer[] = [];\n try {\n for await (const chunk of input) {\n chunks.push(chunk as Buffer);\n }\n input = Buffer.concat(chunks).toString('utf-8');\n } catch (error) {\n throw new Error(`Failed to read input stream: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n if (!input?.trim()) {\n throw new Error('Input text is empty');\n }\n\n // Update voice if specified\n if (options?.speaker) {\n this.speechConfig.speechSynthesisVoiceName = options.speaker;\n }\n\n const synthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n\n try {\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error('Speech synthesis timed out')), 5000);\n });\n\n const synthesisPromise = this.traced(\n () =>\n new Promise<Azure.SpeechSynthesisResult>((resolve, reject) => {\n synthesizer.speakTextAsync(\n input,\n result =>\n result.errorDetails\n ? reject(new Error(`Speech synthesis failed: ${result.errorDetails}`))\n : resolve(result),\n error => reject(new Error(`Speech synthesis error: ${String(error)}`)),\n );\n }),\n 'voice.azure.speak',\n )();\n\n const result = await Promise.race([synthesisPromise, timeoutPromise]);\n synthesizer.close();\n\n if (result.reason !== Azure.ResultReason.SynthesizingAudioCompleted) {\n throw new Error(`Speech synthesis failed: ${result.errorDetails || result.reason}`);\n }\n\n return Readable.from([Buffer.from(result.audioData)]);\n } catch (error) {\n synthesizer.close();\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: true };\n }\n\n /**\n * Transcribes audio (STT) from a Node.js stream using Azure.\n *\n * @param {NodeJS.ReadableStream} audioStream - The audio to be transcribed, must be in .wav format.\n * @returns {Promise<string>} - The recognized text.\n */\n async listen(audioStream: NodeJS.ReadableStream): Promise<string> {\n if (!this.listeningConfig || !this.speechRecognizer) {\n throw new Error('Listening model (Azure) not configured');\n }\n\n const chunks: Buffer[] = [];\n for await (const chunk of audioStream) {\n chunks.push(chunk as Buffer);\n }\n const audioData = Buffer.concat(chunks);\n\n const pushStream = Azure.AudioInputStream.createPushStream();\n const audioConfig = Azure.AudioConfig.fromStreamInput(pushStream);\n const recognizer = new Azure.SpeechRecognizer(this.listeningConfig, audioConfig);\n\n try {\n const recognitionPromise = new Promise<string>((resolve, reject) => {\n recognizer.recognizeOnceAsync(\n result => {\n if (result.reason === Azure.ResultReason.RecognizedSpeech) {\n resolve(result.text);\n } else {\n const reason = Azure.ResultReason[result.reason] || result.reason;\n reject(new Error(`Speech recognition failed: ${reason} - ${result.errorDetails || ''}`));\n }\n },\n error => reject(new Error(`Speech recognition error: ${String(error)}`)),\n );\n });\n\n const chunkSize = 4096;\n for (let i = 0; i < audioData.length; i += chunkSize) {\n const chunk = audioData.slice(i, i + chunkSize);\n pushStream.write(chunk.buffer);\n }\n pushStream.close();\n\n const text = await this.traced(() => recognitionPromise, 'voice.azure.listen')();\n\n return text;\n } catch (error: unknown) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(String(error));\n } finally {\n recognizer.close();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/voices.ts","../src/index.ts"],"names":["MastraVoice","Azure","result","Readable"],"mappings":"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","file":"index.cjs","sourcesContent":["export const AZURE_VOICES = [\n 'af-ZA-AdriNeural',\n 'af-ZA-WillemNeural',\n 'am-ET-MekdesNeural',\n 'am-ET-AmehaNeural',\n 'ar-AE-FatimaNeural',\n 'ar-AE-HamdanNeural',\n 'ar-BH-LailaNeural',\n 'ar-BH-AliNeural',\n 'ar-DZ-AminaNeural',\n 'ar-DZ-IsmaelNeural',\n 'ar-EG-SalmaNeural',\n 'ar-EG-ShakirNeural',\n 'ar-IQ-RanaNeural',\n 'ar-IQ-BasselNeural',\n 'ar-JO-SanaNeural',\n 'ar-JO-TaimNeural',\n 'ar-KW-NouraNeural',\n 'ar-KW-FahedNeural',\n 'ar-LB-LaylaNeural',\n 'ar-LB-RamiNeural',\n 'ar-LY-ImanNeural',\n 'ar-LY-OmarNeural',\n 'ar-MA-MounaNeural',\n 'ar-MA-JamalNeural',\n 'ar-OM-AyshaNeural',\n 'ar-OM-AbdullahNeural',\n 'ar-QA-AmalNeural',\n 'ar-QA-MoazNeural',\n 'ar-SA-ZariyahNeural',\n 'ar-SA-HamedNeural',\n 'ar-SY-AmanyNeural',\n 'ar-SY-LaithNeural',\n 'ar-TN-ReemNeural',\n 'ar-TN-HediNeural',\n 'ar-YE-MaryamNeural',\n 'ar-YE-SalehNeural',\n 'as-IN-YashicaNeural',\n 'as-IN-PriyomNeural',\n 'az-AZ-BanuNeural',\n 'az-AZ-BabekNeural',\n 'bg-BG-KalinaNeural',\n 'bg-BG-BorislavNeural',\n 'bn-BD-NabanitaNeural',\n 'bn-BD-PradeepNeural',\n 'bn-IN-TanishaaNeural',\n 'bn-IN-BashkarNeural',\n 'bs-BA-VesnaNeural',\n 'bs-BA-GoranNeural',\n 'ca-ES-JoanaNeural',\n 'ca-ES-EnricNeural',\n 'ca-ES-AlbaNeural',\n 'cs-CZ-VlastaNeural',\n 'cs-CZ-AntoninNeural',\n 'cy-GB-NiaNeural',\n 'cy-GB-AledNeural',\n 'da-DK-ChristelNeural',\n 'da-DK-JeppeNeural',\n 'de-AT-IngridNeural',\n 'de-AT-JonasNeural',\n 'de-CH-LeniNeural',\n 'de-CH-JanNeural',\n 'de-DE-KatjaNeural',\n 'de-DE-ConradNeural',\n 'de-DE-SeraphinaMultilingualNeural',\n 'de-DE-FlorianMultilingualNeural',\n 'de-DE-AmalaNeural',\n 'de-DE-BerndNeural',\n 'de-DE-ChristophNeural',\n 'de-DE-ElkeNeural',\n 'de-DE-GiselaNeural',\n 'de-DE-KasperNeural',\n 'de-DE-KillianNeural',\n 'de-DE-KlarissaNeural',\n 'de-DE-KlausNeural',\n 'de-DE-LouisaNeural',\n 'de-DE-MajaNeural',\n 'de-DE-RalfNeural',\n 'de-DE-TanjaNeural',\n 'de-DE-Seraphina:DragonHDLatestNeural',\n 'el-GR-AthinaNeural',\n 'el-GR-NestorasNeural',\n 'en-AU-NatashaNeural',\n 'en-AU-WilliamNeural',\n 'en-AU-AnnetteNeural',\n 'en-AU-CarlyNeural',\n 'en-AU-DarrenNeural',\n 'en-AU-DuncanNeural',\n 'en-AU-ElsieNeural',\n 'en-AU-FreyaNeural',\n 'en-AU-JoanneNeural',\n 'en-AU-KenNeural',\n 'en-AU-KimNeural',\n 'en-AU-NeilNeural',\n 'en-AU-TimNeural',\n 'en-AU-TinaNeural',\n 'en-CA-ClaraNeural',\n 'en-CA-LiamNeural',\n 'en-GB-SoniaNeural',\n 'en-GB-RyanNeural',\n 'en-GB-LibbyNeural',\n 'en-GB-AdaMultilingualNeural',\n 'en-GB-OllieMultilingualNeural',\n 'en-GB-AbbiNeural',\n 'en-GB-AlfieNeural',\n 'en-GB-BellaNeural',\n 'en-GB-ElliotNeural',\n 'en-GB-EthanNeural',\n 'en-GB-HollieNeural',\n 'en-GB-MaisieNeural',\n 'en-GB-NoahNeural',\n 'en-GB-OliverNeural',\n 'en-GB-OliviaNeural',\n 'en-GB-ThomasNeural',\n 'en-GB-MiaNeural',\n 'en-HK-YanNeural',\n 'en-HK-SamNeural',\n 'en-IE-EmilyNeural',\n 'en-IE-ConnorNeural',\n 'en-IN-AaravNeural',\n 'en-IN-AashiNeural',\n 'en-IN-AnanyaNeural',\n 'en-IN-KavyaNeural',\n 'en-IN-KunalNeural',\n 'en-IN-NeerjaNeural',\n 'en-IN-PrabhatNeural',\n 'en-IN-RehaanNeural',\n 'en-IN-AartiNeural',\n 'en-IN-ArjunNeural',\n 'en-KE-AsiliaNeural',\n 'en-KE-ChilembaNeural',\n 'en-NG-EzinneNeural',\n 'en-NG-AbeoNeural',\n 'en-NZ-MollyNeural',\n 'en-NZ-MitchellNeural',\n 'en-PH-RosaNeural',\n 'en-PH-JamesNeural',\n 'en-SG-LunaNeural',\n 'en-SG-WayneNeural',\n 'en-TZ-ImaniNeural',\n 'en-TZ-ElimuNeural',\n 'en-US-AvaMultilingualNeural',\n 'en-US-AndrewMultilingualNeural',\n 'en-US-EmmaMultilingualNeural',\n 'en-US-BrianMultilingualNeural',\n 'en-US-AvaNeural',\n 'en-US-AndrewNeural',\n 'en-US-EmmaNeural',\n 'en-US-BrianNeural',\n 'en-US-JennyNeural',\n 'en-US-GuyNeural',\n 'en-US-AriaNeural',\n 'en-US-DavisNeural',\n 'en-US-JaneNeural',\n 'en-US-JasonNeural',\n 'en-US-KaiNeural',\n 'en-US-LunaNeural',\n 'en-US-SaraNeural',\n 'en-US-TonyNeural',\n 'en-US-NancyNeural',\n 'en-US-CoraMultilingualNeural',\n 'en-US-ChristopherMultilingualNeural',\n 'en-US-BrandonMultilingualNeural',\n 'en-US-AmberNeural',\n 'en-US-AnaNeural',\n 'en-US-AshleyNeural',\n 'en-US-BrandonNeural',\n 'en-US-ChristopherNeural',\n 'en-US-CoraNeural',\n 'en-US-ElizabethNeural',\n 'en-US-EricNeural',\n 'en-US-JacobNeural',\n 'en-US-JennyMultilingualNeural',\n 'en-US-MichelleNeural',\n 'en-US-MonicaNeural',\n 'en-US-RogerNeural',\n 'en-US-RyanMultilingualNeural',\n 'en-US-SteffanNeural',\n 'en-US-AdamMultilingualNeural',\n 'en-US-AIGenerate1Neural',\n 'en-US-AIGenerate2Neural',\n 'en-US-AlloyTurboMultilingualNeural',\n 'en-US-AmandaMultilingualNeural',\n 'en-US-BlueNeural',\n 'en-US-DavisMultilingualNeural',\n 'en-US-DerekMultilingualNeural',\n 'en-US-DustinMultilingualNeural',\n 'en-US-EchoTurboMultilingualNeural',\n 'en-US-EvelynMultilingualNeural',\n 'en-US-FableTurboMultilingualNeural',\n 'en-US-LewisMultilingualNeural',\n 'en-US-LolaMultilingualNeural',\n 'en-US-NancyMultilingualNeural',\n 'en-US-NovaTurboMultilingualNeural',\n 'en-US-OnyxTurboMultilingualNeural',\n 'en-US-PhoebeMultilingualNeural',\n 'en-US-SamuelMultilingualNeural',\n 'en-US-SerenaMultilingualNeural',\n 'en-US-ShimmerTurboMultilingualNeural',\n 'en-US-SteffanMultilingualNeural',\n 'en-US-Andrew:DragonHDLatestNeural',\n 'en-US-Andrew2:DragonHDLatestNeural',\n 'en-US-Aria:DragonHDLatestNeural',\n 'en-US-Ava:DragonHDLatestNeural',\n 'en-US-Brian:DragonHDLatestNeural',\n 'en-US-Davis:DragonHDLatestNeural',\n 'en-US-Emma:DragonHDLatestNeural',\n 'en-US-Emma2:DragonHDLatestNeural',\n 'en-US-Jenny:DragonHDLatestNeural',\n 'en-US-Steffan:DragonHDLatestNeural',\n 'en-ZA-LeahNeural',\n 'en-ZA-LukeNeural',\n] as const;\n\nexport type VoiceId = (typeof AZURE_VOICES)[number];\n","import { Readable } from 'stream';\nimport { MastraVoice } from '@mastra/core/voice';\nimport * as Azure from 'microsoft-cognitiveservices-speech-sdk';\nimport { AZURE_VOICES } from './voices';\nimport type { VoiceId } from './voices';\n\ninterface AzureVoiceConfig {\n apiKey?: string;\n region?: string;\n voiceName?: string;\n language?: string;\n}\n\nexport class AzureVoice extends MastraVoice {\n private speechConfig?: Azure.SpeechConfig;\n private listeningConfig?: Azure.SpeechConfig;\n private speechSynthesizer?: Azure.SpeechSynthesizer;\n private speechRecognizer?: Azure.SpeechRecognizer;\n\n /**\n * Creates a new instance of AzureVoice for text-to-speech and speech-to-text services.\n *\n * @param {Object} config - Configuration options\n * @param {AzureVoiceConfig} [config.speechModel] - Configuration for text-to-speech\n * @param {AzureVoiceConfig} [config.listeningModel] - Configuration for speech-to-text\n * @param {VoiceId} [config.speaker] - Default voice ID for speech synthesis\n */\n constructor({\n speechModel,\n listeningModel,\n speaker,\n }: {\n speechModel?: AzureVoiceConfig;\n listeningModel?: AzureVoiceConfig;\n speaker?: VoiceId;\n } = {}) {\n super({\n speechModel: {\n name: '',\n apiKey: speechModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n listeningModel: {\n name: '',\n apiKey: listeningModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n speaker,\n });\n\n const envApiKey = process.env.AZURE_API_KEY;\n const envRegion = process.env.AZURE_REGION;\n\n // Configure speech synthesis\n if (speechModel) {\n const apiKey = speechModel.apiKey ?? envApiKey;\n const region = speechModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for speech model');\n if (!region) throw new Error('No region provided for speech model');\n\n this.speechConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n this.speechConfig.speechSynthesisVoiceName = speechModel.voiceName || speaker || 'en-US-AriaNeural';\n this.speechSynthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n }\n\n // Configure speech recognition\n if (listeningModel) {\n const apiKey = listeningModel.apiKey ?? envApiKey;\n const region = listeningModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for listening model');\n if (!region) throw new Error('No region provided for listening model');\n\n this.listeningConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n if (listeningModel.language) {\n this.listeningConfig.speechRecognitionLanguage = listeningModel.language;\n }\n this.speechRecognizer = new Azure.SpeechRecognizer(this.listeningConfig);\n }\n }\n\n /**\n * Gets a list of available voices for speech synthesis.\n *\n * @returns {Promise<Array<{ voiceId: string; language: string; region: string; }>>} List of available voices\n */\n async getSpeakers() {\n return AZURE_VOICES.map(voice => ({\n voiceId: voice,\n language: voice.split('-')[0],\n region: voice.split('-')[1],\n }));\n }\n\n /**\n * Converts text to speech using Azure's Text-to-Speech service.\n *\n * @param {string | NodeJS.ReadableStream} input - Text to convert to speech\n * @param {Object} [options] - Optional parameters\n * @param {string} [options.speaker] - Voice ID to use for synthesis\n * @returns {Promise<NodeJS.ReadableStream>} Stream containing the synthesized audio\n * @throws {Error} If speech model is not configured or synthesis fails\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n [key: string]: any;\n },\n ): Promise<NodeJS.ReadableStream> {\n if (!this.speechConfig) {\n throw new Error('Speech model (Azure) not configured');\n }\n\n // Convert stream input to string if needed\n if (typeof input !== 'string') {\n const chunks: Buffer[] = [];\n try {\n for await (const chunk of input) {\n chunks.push(chunk as Buffer);\n }\n input = Buffer.concat(chunks).toString('utf-8');\n } catch (error) {\n throw new Error(`Failed to read input stream: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n if (!input?.trim()) {\n throw new Error('Input text is empty');\n }\n\n // Update voice if specified\n if (options?.speaker) {\n this.speechConfig.speechSynthesisVoiceName = options.speaker;\n }\n\n const synthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n\n try {\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error('Speech synthesis timed out')), 5000);\n });\n\n const synthesisPromise = new Promise<Azure.SpeechSynthesisResult>((resolve, reject) => {\n synthesizer.speakTextAsync(\n input,\n result =>\n result.errorDetails\n ? reject(new Error(`Speech synthesis failed: ${result.errorDetails}`))\n : resolve(result),\n error => reject(new Error(`Speech synthesis error: ${String(error)}`)),\n );\n });\n\n const result = await Promise.race([synthesisPromise, timeoutPromise]);\n synthesizer.close();\n\n if (result.reason !== Azure.ResultReason.SynthesizingAudioCompleted) {\n throw new Error(`Speech synthesis failed: ${result.errorDetails || result.reason}`);\n }\n\n return Readable.from([Buffer.from(result.audioData)]);\n } catch (error) {\n synthesizer.close();\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: true };\n }\n\n /**\n * Transcribes audio (STT) from a Node.js stream using Azure.\n *\n * @param {NodeJS.ReadableStream} audioStream - The audio to be transcribed, must be in .wav format.\n * @returns {Promise<string>} - The recognized text.\n */\n async listen(audioStream: NodeJS.ReadableStream): Promise<string> {\n if (!this.listeningConfig || !this.speechRecognizer) {\n throw new Error('Listening model (Azure) not configured');\n }\n\n const chunks: Buffer[] = [];\n for await (const chunk of audioStream) {\n chunks.push(chunk as Buffer);\n }\n const audioData = Buffer.concat(chunks);\n\n const pushStream = Azure.AudioInputStream.createPushStream();\n const audioConfig = Azure.AudioConfig.fromStreamInput(pushStream);\n const recognizer = new Azure.SpeechRecognizer(this.listeningConfig, audioConfig);\n\n try {\n const recognitionPromise = new Promise<string>((resolve, reject) => {\n recognizer.recognizeOnceAsync(\n result => {\n if (result.reason === Azure.ResultReason.RecognizedSpeech) {\n resolve(result.text);\n } else {\n const reason = Azure.ResultReason[result.reason] || result.reason;\n reject(new Error(`Speech recognition failed: ${reason} - ${result.errorDetails || ''}`));\n }\n },\n error => reject(new Error(`Speech recognition error: ${String(error)}`)),\n );\n });\n\n const chunkSize = 4096;\n for (let i = 0; i < audioData.length; i += chunkSize) {\n const chunk = audioData.slice(i, i + chunkSize);\n pushStream.write(chunk.buffer);\n }\n pushStream.close();\n\n const text = await recognitionPromise;\n\n return text;\n } catch (error: unknown) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(String(error));\n } finally {\n recognizer.close();\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,eAAe,CAAC,CAAqB;IAC7C,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,gBAAgB,CAAC,CAAyB;IAElD;;;;;;;OAOG;gBACS,EACV,WAAW,EACX,cAAc,EACd,OAAO,GACR,GAAE;QACD,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;KACd;IA6CN;;;;OAIG;IACG,WAAW;;;;;IAUjB;;;;;;;;OAQG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,EACrC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,GACA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IA+DjC;;;;OAIG;IACG,WAAW;;;IAIjB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAiDlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,eAAe,CAAC,CAAqB;IAC7C,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,gBAAgB,CAAC,CAAyB;IAElD;;;;;;;OAOG;gBACS,EACV,WAAW,EACX,cAAc,EACd,OAAO,GACR,GAAE;QACD,WAAW,CAAC,EAAE,gBAAgB,CAAC;QAC/B,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;KACd;IA6CN;;;;OAIG;IACG,WAAW;;;;;IAQjB;;;;;;;;OAQG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,EACrC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,GACA,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IA2DjC;;;;OAIG;IACG,WAAW;;;IAIjB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAiDlE"}
package/dist/index.js CHANGED
@@ -278,13 +278,11 @@ var AzureVoice = class extends MastraVoice {
278
278
  * @returns {Promise<Array<{ voiceId: string; language: string; region: string; }>>} List of available voices
279
279
  */
280
280
  async getSpeakers() {
281
- return this.traced(async () => {
282
- return AZURE_VOICES.map((voice) => ({
283
- voiceId: voice,
284
- language: voice.split("-")[0],
285
- region: voice.split("-")[1]
286
- }));
287
- }, "voice.azure.voices")();
281
+ return AZURE_VOICES.map((voice) => ({
282
+ voiceId: voice,
283
+ language: voice.split("-")[0],
284
+ region: voice.split("-")[1]
285
+ }));
288
286
  }
289
287
  /**
290
288
  * Converts text to speech using Azure's Text-to-Speech service.
@@ -321,16 +319,13 @@ var AzureVoice = class extends MastraVoice {
321
319
  const timeoutPromise = new Promise((_, reject) => {
322
320
  setTimeout(() => reject(new Error("Speech synthesis timed out")), 5e3);
323
321
  });
324
- const synthesisPromise = this.traced(
325
- () => new Promise((resolve, reject) => {
326
- synthesizer.speakTextAsync(
327
- input,
328
- (result2) => result2.errorDetails ? reject(new Error(`Speech synthesis failed: ${result2.errorDetails}`)) : resolve(result2),
329
- (error) => reject(new Error(`Speech synthesis error: ${String(error)}`))
330
- );
331
- }),
332
- "voice.azure.speak"
333
- )();
322
+ const synthesisPromise = new Promise((resolve, reject) => {
323
+ synthesizer.speakTextAsync(
324
+ input,
325
+ (result2) => result2.errorDetails ? reject(new Error(`Speech synthesis failed: ${result2.errorDetails}`)) : resolve(result2),
326
+ (error) => reject(new Error(`Speech synthesis error: ${String(error)}`))
327
+ );
328
+ });
334
329
  const result = await Promise.race([synthesisPromise, timeoutPromise]);
335
330
  synthesizer.close();
336
331
  if (result.reason !== Azure.ResultReason.SynthesizingAudioCompleted) {
@@ -388,7 +383,7 @@ var AzureVoice = class extends MastraVoice {
388
383
  pushStream.write(chunk.buffer);
389
384
  }
390
385
  pushStream.close();
391
- const text = await this.traced(() => recognitionPromise, "voice.azure.listen")();
386
+ const text = await recognitionPromise;
392
387
  return text;
393
388
  } catch (error) {
394
389
  if (error instanceof Error) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/voices.ts","../src/index.ts"],"names":["result"],"mappings":"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","file":"index.js","sourcesContent":["export const AZURE_VOICES = [\n 'af-ZA-AdriNeural',\n 'af-ZA-WillemNeural',\n 'am-ET-MekdesNeural',\n 'am-ET-AmehaNeural',\n 'ar-AE-FatimaNeural',\n 'ar-AE-HamdanNeural',\n 'ar-BH-LailaNeural',\n 'ar-BH-AliNeural',\n 'ar-DZ-AminaNeural',\n 'ar-DZ-IsmaelNeural',\n 'ar-EG-SalmaNeural',\n 'ar-EG-ShakirNeural',\n 'ar-IQ-RanaNeural',\n 'ar-IQ-BasselNeural',\n 'ar-JO-SanaNeural',\n 'ar-JO-TaimNeural',\n 'ar-KW-NouraNeural',\n 'ar-KW-FahedNeural',\n 'ar-LB-LaylaNeural',\n 'ar-LB-RamiNeural',\n 'ar-LY-ImanNeural',\n 'ar-LY-OmarNeural',\n 'ar-MA-MounaNeural',\n 'ar-MA-JamalNeural',\n 'ar-OM-AyshaNeural',\n 'ar-OM-AbdullahNeural',\n 'ar-QA-AmalNeural',\n 'ar-QA-MoazNeural',\n 'ar-SA-ZariyahNeural',\n 'ar-SA-HamedNeural',\n 'ar-SY-AmanyNeural',\n 'ar-SY-LaithNeural',\n 'ar-TN-ReemNeural',\n 'ar-TN-HediNeural',\n 'ar-YE-MaryamNeural',\n 'ar-YE-SalehNeural',\n 'as-IN-YashicaNeural',\n 'as-IN-PriyomNeural',\n 'az-AZ-BanuNeural',\n 'az-AZ-BabekNeural',\n 'bg-BG-KalinaNeural',\n 'bg-BG-BorislavNeural',\n 'bn-BD-NabanitaNeural',\n 'bn-BD-PradeepNeural',\n 'bn-IN-TanishaaNeural',\n 'bn-IN-BashkarNeural',\n 'bs-BA-VesnaNeural',\n 'bs-BA-GoranNeural',\n 'ca-ES-JoanaNeural',\n 'ca-ES-EnricNeural',\n 'ca-ES-AlbaNeural',\n 'cs-CZ-VlastaNeural',\n 'cs-CZ-AntoninNeural',\n 'cy-GB-NiaNeural',\n 'cy-GB-AledNeural',\n 'da-DK-ChristelNeural',\n 'da-DK-JeppeNeural',\n 'de-AT-IngridNeural',\n 'de-AT-JonasNeural',\n 'de-CH-LeniNeural',\n 'de-CH-JanNeural',\n 'de-DE-KatjaNeural',\n 'de-DE-ConradNeural',\n 'de-DE-SeraphinaMultilingualNeural',\n 'de-DE-FlorianMultilingualNeural',\n 'de-DE-AmalaNeural',\n 'de-DE-BerndNeural',\n 'de-DE-ChristophNeural',\n 'de-DE-ElkeNeural',\n 'de-DE-GiselaNeural',\n 'de-DE-KasperNeural',\n 'de-DE-KillianNeural',\n 'de-DE-KlarissaNeural',\n 'de-DE-KlausNeural',\n 'de-DE-LouisaNeural',\n 'de-DE-MajaNeural',\n 'de-DE-RalfNeural',\n 'de-DE-TanjaNeural',\n 'de-DE-Seraphina:DragonHDLatestNeural',\n 'el-GR-AthinaNeural',\n 'el-GR-NestorasNeural',\n 'en-AU-NatashaNeural',\n 'en-AU-WilliamNeural',\n 'en-AU-AnnetteNeural',\n 'en-AU-CarlyNeural',\n 'en-AU-DarrenNeural',\n 'en-AU-DuncanNeural',\n 'en-AU-ElsieNeural',\n 'en-AU-FreyaNeural',\n 'en-AU-JoanneNeural',\n 'en-AU-KenNeural',\n 'en-AU-KimNeural',\n 'en-AU-NeilNeural',\n 'en-AU-TimNeural',\n 'en-AU-TinaNeural',\n 'en-CA-ClaraNeural',\n 'en-CA-LiamNeural',\n 'en-GB-SoniaNeural',\n 'en-GB-RyanNeural',\n 'en-GB-LibbyNeural',\n 'en-GB-AdaMultilingualNeural',\n 'en-GB-OllieMultilingualNeural',\n 'en-GB-AbbiNeural',\n 'en-GB-AlfieNeural',\n 'en-GB-BellaNeural',\n 'en-GB-ElliotNeural',\n 'en-GB-EthanNeural',\n 'en-GB-HollieNeural',\n 'en-GB-MaisieNeural',\n 'en-GB-NoahNeural',\n 'en-GB-OliverNeural',\n 'en-GB-OliviaNeural',\n 'en-GB-ThomasNeural',\n 'en-GB-MiaNeural',\n 'en-HK-YanNeural',\n 'en-HK-SamNeural',\n 'en-IE-EmilyNeural',\n 'en-IE-ConnorNeural',\n 'en-IN-AaravNeural',\n 'en-IN-AashiNeural',\n 'en-IN-AnanyaNeural',\n 'en-IN-KavyaNeural',\n 'en-IN-KunalNeural',\n 'en-IN-NeerjaNeural',\n 'en-IN-PrabhatNeural',\n 'en-IN-RehaanNeural',\n 'en-IN-AartiNeural',\n 'en-IN-ArjunNeural',\n 'en-KE-AsiliaNeural',\n 'en-KE-ChilembaNeural',\n 'en-NG-EzinneNeural',\n 'en-NG-AbeoNeural',\n 'en-NZ-MollyNeural',\n 'en-NZ-MitchellNeural',\n 'en-PH-RosaNeural',\n 'en-PH-JamesNeural',\n 'en-SG-LunaNeural',\n 'en-SG-WayneNeural',\n 'en-TZ-ImaniNeural',\n 'en-TZ-ElimuNeural',\n 'en-US-AvaMultilingualNeural',\n 'en-US-AndrewMultilingualNeural',\n 'en-US-EmmaMultilingualNeural',\n 'en-US-BrianMultilingualNeural',\n 'en-US-AvaNeural',\n 'en-US-AndrewNeural',\n 'en-US-EmmaNeural',\n 'en-US-BrianNeural',\n 'en-US-JennyNeural',\n 'en-US-GuyNeural',\n 'en-US-AriaNeural',\n 'en-US-DavisNeural',\n 'en-US-JaneNeural',\n 'en-US-JasonNeural',\n 'en-US-KaiNeural',\n 'en-US-LunaNeural',\n 'en-US-SaraNeural',\n 'en-US-TonyNeural',\n 'en-US-NancyNeural',\n 'en-US-CoraMultilingualNeural',\n 'en-US-ChristopherMultilingualNeural',\n 'en-US-BrandonMultilingualNeural',\n 'en-US-AmberNeural',\n 'en-US-AnaNeural',\n 'en-US-AshleyNeural',\n 'en-US-BrandonNeural',\n 'en-US-ChristopherNeural',\n 'en-US-CoraNeural',\n 'en-US-ElizabethNeural',\n 'en-US-EricNeural',\n 'en-US-JacobNeural',\n 'en-US-JennyMultilingualNeural',\n 'en-US-MichelleNeural',\n 'en-US-MonicaNeural',\n 'en-US-RogerNeural',\n 'en-US-RyanMultilingualNeural',\n 'en-US-SteffanNeural',\n 'en-US-AdamMultilingualNeural',\n 'en-US-AIGenerate1Neural',\n 'en-US-AIGenerate2Neural',\n 'en-US-AlloyTurboMultilingualNeural',\n 'en-US-AmandaMultilingualNeural',\n 'en-US-BlueNeural',\n 'en-US-DavisMultilingualNeural',\n 'en-US-DerekMultilingualNeural',\n 'en-US-DustinMultilingualNeural',\n 'en-US-EchoTurboMultilingualNeural',\n 'en-US-EvelynMultilingualNeural',\n 'en-US-FableTurboMultilingualNeural',\n 'en-US-LewisMultilingualNeural',\n 'en-US-LolaMultilingualNeural',\n 'en-US-NancyMultilingualNeural',\n 'en-US-NovaTurboMultilingualNeural',\n 'en-US-OnyxTurboMultilingualNeural',\n 'en-US-PhoebeMultilingualNeural',\n 'en-US-SamuelMultilingualNeural',\n 'en-US-SerenaMultilingualNeural',\n 'en-US-ShimmerTurboMultilingualNeural',\n 'en-US-SteffanMultilingualNeural',\n 'en-US-Andrew:DragonHDLatestNeural',\n 'en-US-Andrew2:DragonHDLatestNeural',\n 'en-US-Aria:DragonHDLatestNeural',\n 'en-US-Ava:DragonHDLatestNeural',\n 'en-US-Brian:DragonHDLatestNeural',\n 'en-US-Davis:DragonHDLatestNeural',\n 'en-US-Emma:DragonHDLatestNeural',\n 'en-US-Emma2:DragonHDLatestNeural',\n 'en-US-Jenny:DragonHDLatestNeural',\n 'en-US-Steffan:DragonHDLatestNeural',\n 'en-ZA-LeahNeural',\n 'en-ZA-LukeNeural',\n] as const;\n\nexport type VoiceId = (typeof AZURE_VOICES)[number];\n","import { Readable } from 'stream';\nimport { MastraVoice } from '@mastra/core/voice';\nimport * as Azure from 'microsoft-cognitiveservices-speech-sdk';\nimport { AZURE_VOICES } from './voices';\nimport type { VoiceId } from './voices';\n\ninterface AzureVoiceConfig {\n apiKey?: string;\n region?: string;\n voiceName?: string;\n language?: string;\n}\n\nexport class AzureVoice extends MastraVoice {\n private speechConfig?: Azure.SpeechConfig;\n private listeningConfig?: Azure.SpeechConfig;\n private speechSynthesizer?: Azure.SpeechSynthesizer;\n private speechRecognizer?: Azure.SpeechRecognizer;\n\n /**\n * Creates a new instance of AzureVoice for text-to-speech and speech-to-text services.\n *\n * @param {Object} config - Configuration options\n * @param {AzureVoiceConfig} [config.speechModel] - Configuration for text-to-speech\n * @param {AzureVoiceConfig} [config.listeningModel] - Configuration for speech-to-text\n * @param {VoiceId} [config.speaker] - Default voice ID for speech synthesis\n */\n constructor({\n speechModel,\n listeningModel,\n speaker,\n }: {\n speechModel?: AzureVoiceConfig;\n listeningModel?: AzureVoiceConfig;\n speaker?: VoiceId;\n } = {}) {\n super({\n speechModel: {\n name: '',\n apiKey: speechModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n listeningModel: {\n name: '',\n apiKey: listeningModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n speaker,\n });\n\n const envApiKey = process.env.AZURE_API_KEY;\n const envRegion = process.env.AZURE_REGION;\n\n // Configure speech synthesis\n if (speechModel) {\n const apiKey = speechModel.apiKey ?? envApiKey;\n const region = speechModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for speech model');\n if (!region) throw new Error('No region provided for speech model');\n\n this.speechConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n this.speechConfig.speechSynthesisVoiceName = speechModel.voiceName || speaker || 'en-US-AriaNeural';\n this.speechSynthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n }\n\n // Configure speech recognition\n if (listeningModel) {\n const apiKey = listeningModel.apiKey ?? envApiKey;\n const region = listeningModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for listening model');\n if (!region) throw new Error('No region provided for listening model');\n\n this.listeningConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n if (listeningModel.language) {\n this.listeningConfig.speechRecognitionLanguage = listeningModel.language;\n }\n this.speechRecognizer = new Azure.SpeechRecognizer(this.listeningConfig);\n }\n }\n\n /**\n * Gets a list of available voices for speech synthesis.\n *\n * @returns {Promise<Array<{ voiceId: string; language: string; region: string; }>>} List of available voices\n */\n async getSpeakers() {\n return this.traced(async () => {\n return AZURE_VOICES.map(voice => ({\n voiceId: voice,\n language: voice.split('-')[0],\n region: voice.split('-')[1],\n }));\n }, 'voice.azure.voices')();\n }\n\n /**\n * Converts text to speech using Azure's Text-to-Speech service.\n *\n * @param {string | NodeJS.ReadableStream} input - Text to convert to speech\n * @param {Object} [options] - Optional parameters\n * @param {string} [options.speaker] - Voice ID to use for synthesis\n * @returns {Promise<NodeJS.ReadableStream>} Stream containing the synthesized audio\n * @throws {Error} If speech model is not configured or synthesis fails\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n [key: string]: any;\n },\n ): Promise<NodeJS.ReadableStream> {\n if (!this.speechConfig) {\n throw new Error('Speech model (Azure) not configured');\n }\n\n // Convert stream input to string if needed\n if (typeof input !== 'string') {\n const chunks: Buffer[] = [];\n try {\n for await (const chunk of input) {\n chunks.push(chunk as Buffer);\n }\n input = Buffer.concat(chunks).toString('utf-8');\n } catch (error) {\n throw new Error(`Failed to read input stream: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n if (!input?.trim()) {\n throw new Error('Input text is empty');\n }\n\n // Update voice if specified\n if (options?.speaker) {\n this.speechConfig.speechSynthesisVoiceName = options.speaker;\n }\n\n const synthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n\n try {\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error('Speech synthesis timed out')), 5000);\n });\n\n const synthesisPromise = this.traced(\n () =>\n new Promise<Azure.SpeechSynthesisResult>((resolve, reject) => {\n synthesizer.speakTextAsync(\n input,\n result =>\n result.errorDetails\n ? reject(new Error(`Speech synthesis failed: ${result.errorDetails}`))\n : resolve(result),\n error => reject(new Error(`Speech synthesis error: ${String(error)}`)),\n );\n }),\n 'voice.azure.speak',\n )();\n\n const result = await Promise.race([synthesisPromise, timeoutPromise]);\n synthesizer.close();\n\n if (result.reason !== Azure.ResultReason.SynthesizingAudioCompleted) {\n throw new Error(`Speech synthesis failed: ${result.errorDetails || result.reason}`);\n }\n\n return Readable.from([Buffer.from(result.audioData)]);\n } catch (error) {\n synthesizer.close();\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: true };\n }\n\n /**\n * Transcribes audio (STT) from a Node.js stream using Azure.\n *\n * @param {NodeJS.ReadableStream} audioStream - The audio to be transcribed, must be in .wav format.\n * @returns {Promise<string>} - The recognized text.\n */\n async listen(audioStream: NodeJS.ReadableStream): Promise<string> {\n if (!this.listeningConfig || !this.speechRecognizer) {\n throw new Error('Listening model (Azure) not configured');\n }\n\n const chunks: Buffer[] = [];\n for await (const chunk of audioStream) {\n chunks.push(chunk as Buffer);\n }\n const audioData = Buffer.concat(chunks);\n\n const pushStream = Azure.AudioInputStream.createPushStream();\n const audioConfig = Azure.AudioConfig.fromStreamInput(pushStream);\n const recognizer = new Azure.SpeechRecognizer(this.listeningConfig, audioConfig);\n\n try {\n const recognitionPromise = new Promise<string>((resolve, reject) => {\n recognizer.recognizeOnceAsync(\n result => {\n if (result.reason === Azure.ResultReason.RecognizedSpeech) {\n resolve(result.text);\n } else {\n const reason = Azure.ResultReason[result.reason] || result.reason;\n reject(new Error(`Speech recognition failed: ${reason} - ${result.errorDetails || ''}`));\n }\n },\n error => reject(new Error(`Speech recognition error: ${String(error)}`)),\n );\n });\n\n const chunkSize = 4096;\n for (let i = 0; i < audioData.length; i += chunkSize) {\n const chunk = audioData.slice(i, i + chunkSize);\n pushStream.write(chunk.buffer);\n }\n pushStream.close();\n\n const text = await this.traced(() => recognitionPromise, 'voice.azure.listen')();\n\n return text;\n } catch (error: unknown) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(String(error));\n } finally {\n recognizer.close();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/voices.ts","../src/index.ts"],"names":["result"],"mappings":";;;;;;;AAAO,IAAM,YAAA,GAAe;AAAA,EAC1B,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,sBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mCAAA;AAAA,EACA,iCAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,sBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sCAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,6BAAA;AAAA,EACA,+BAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,6BAAA;AAAA,EACA,gCAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,8BAAA;AAAA,EACA,qCAAA;AAAA,EACA,iCAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,uBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,+BAAA;AAAA,EACA,sBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,8BAAA;AAAA,EACA,qBAAA;AAAA,EACA,8BAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,oCAAA;AAAA,EACA,gCAAA;AAAA,EACA,kBAAA;AAAA,EACA,+BAAA;AAAA,EACA,+BAAA;AAAA,EACA,gCAAA;AAAA,EACA,mCAAA;AAAA,EACA,gCAAA;AAAA,EACA,oCAAA;AAAA,EACA,+BAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA,mCAAA;AAAA,EACA,mCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,sCAAA;AAAA,EACA,iCAAA;AAAA,EACA,mCAAA;AAAA,EACA,oCAAA;AAAA,EACA,iCAAA;AAAA,EACA,gCAAA;AAAA,EACA,kCAAA;AAAA,EACA,kCAAA;AAAA,EACA,iCAAA;AAAA,EACA,kCAAA;AAAA,EACA,kCAAA;AAAA,EACA,oCAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA;;;ACvMO,IAAM,UAAA,GAAN,cAAyB,WAAA,CAAY;AAAA,EAClC,YAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUR,WAAA,CAAY;AAAA,IACV,WAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF,GAII,EAAC,EAAG;AACN,IAAA,KAAA,CAAM;AAAA,MACJ,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,WAAA,EAAa,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI;AAAA,OAC7C;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ,cAAA,EAAgB,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI;AAAA,OAChD;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,QAAQ,GAAA,CAAI,aAAA;AAC9B,IAAA,MAAM,SAAA,GAAY,QAAQ,GAAA,CAAI,YAAA;AAG9B,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,MAAA,GAAS,YAAY,MAAA,IAAU,SAAA;AACrC,MAAA,MAAM,MAAA,GAAS,YAAY,MAAA,IAAU,SAAA;AAErC,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,4CAA4C,CAAA;AACzE,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAElE,MAAA,IAAA,CAAK,YAAA,GAAqB,KAAA,CAAA,YAAA,CAAa,gBAAA,CAAiB,MAAA,EAAQ,MAAM,CAAA;AACtE,MAAA,IAAA,CAAK,YAAA,CAAa,wBAAA,GAA2B,WAAA,CAAY,SAAA,IAAa,OAAA,IAAW,kBAAA;AACjF,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAU,KAAA,CAAA,iBAAA,CAAkB,IAAA,CAAK,YAAY,CAAA;AAAA,IACxE;AAGA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,MAAA,GAAS,eAAe,MAAA,IAAU,SAAA;AACxC,MAAA,MAAM,MAAA,GAAS,eAAe,MAAA,IAAU,SAAA;AAExC,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAC5E,MAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAErE,MAAA,IAAA,CAAK,eAAA,GAAwB,KAAA,CAAA,YAAA,CAAa,gBAAA,CAAiB,MAAA,EAAQ,MAAM,CAAA;AACzE,MAAA,IAAI,eAAe,QAAA,EAAU;AAC3B,QAAA,IAAA,CAAK,eAAA,CAAgB,4BAA4B,cAAA,CAAe,QAAA;AAAA,MAClE;AACA,MAAA,IAAA,CAAK,gBAAA,GAAmB,IAAU,KAAA,CAAA,gBAAA,CAAiB,IAAA,CAAK,eAAe,CAAA;AAAA,IACzE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAA,GAAc;AAClB,IAAA,OAAO,YAAA,CAAa,IAAI,CAAA,KAAA,MAAU;AAAA,MAChC,OAAA,EAAS,KAAA;AAAA,MACT,QAAA,EAAU,KAAA,CAAM,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,MAC5B,MAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,GAAG,EAAE,CAAC;AAAA,KAC5B,CAAE,CAAA;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,KAAA,CACJ,KAAA,EACA,OAAA,EAIgC;AAChC,IAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACtB,MAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,IACvD;AAGA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,MAAM,SAAmB,EAAC;AAC1B,MAAA,IAAI;AACF,QAAA,WAAA,MAAiB,SAAS,KAAA,EAAO;AAC/B,UAAA,MAAA,CAAO,KAAK,KAAe,CAAA;AAAA,QAC7B;AACA,QAAA,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAE,SAAS,OAAO,CAAA;AAAA,MAChD,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,MAC1G;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,KAAA,EAAO,IAAA,EAAK,EAAG;AAClB,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AAGA,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,IAAA,CAAK,YAAA,CAAa,2BAA2B,OAAA,CAAQ,OAAA;AAAA,IACvD;AAEA,IAAA,MAAM,WAAA,GAAc,IAAU,KAAA,CAAA,iBAAA,CAAkB,IAAA,CAAK,YAAY,CAAA;AAEjE,IAAA,IAAI;AACF,MAAA,MAAM,cAAA,GAAiB,IAAI,OAAA,CAAe,CAAC,GAAG,MAAA,KAAW;AACvD,QAAA,UAAA,CAAW,MAAM,MAAA,CAAO,IAAI,MAAM,4BAA4B,CAAC,GAAG,GAAI,CAAA;AAAA,MACxE,CAAC,CAAA;AAED,MAAA,MAAM,gBAAA,GAAmB,IAAI,OAAA,CAAqC,CAAC,SAAS,MAAA,KAAW;AACrF,QAAA,WAAA,CAAY,cAAA;AAAA,UACV,KAAA;AAAA,UACA,CAAAA,OAAAA,KACEA,OAAAA,CAAO,YAAA,GACH,OAAO,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4BA,OAAAA,CAAO,YAAY,CAAA,CAAE,CAAC,CAAA,GACnE,QAAQA,OAAM,CAAA;AAAA,UACpB,CAAA,KAAA,KAAS,OAAO,IAAI,KAAA,CAAM,2BAA2B,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAC;AAAA,SACvE;AAAA,MACF,CAAC,CAAA;AAED,MAAA,MAAM,SAAS,MAAM,OAAA,CAAQ,KAAK,CAAC,gBAAA,EAAkB,cAAc,CAAC,CAAA;AACpE,MAAA,WAAA,CAAY,KAAA,EAAM;AAElB,MAAA,IAAI,MAAA,CAAO,MAAA,KAAiB,KAAA,CAAA,YAAA,CAAa,0BAAA,EAA4B;AACnE,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4B,OAAO,YAAA,IAAgB,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AAAA,MACpF;AAEA,MAAA,OAAO,QAAA,CAAS,KAAK,CAAC,MAAA,CAAO,KAAK,MAAA,CAAO,SAAS,CAAC,CAAC,CAAA;AAAA,IACtD,SAAS,KAAA,EAAO;AACd,MAAA,WAAA,CAAY,KAAA,EAAM;AAClB,MAAA,MAAM,iBAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IAChE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAA,GAAc;AAClB,IAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,OAAO,WAAA,EAAqD;AAChE,IAAA,IAAI,CAAC,IAAA,CAAK,eAAA,IAAmB,CAAC,KAAK,gBAAA,EAAkB;AACnD,MAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,SAAmB,EAAC;AAC1B,IAAA,WAAA,MAAiB,SAAS,WAAA,EAAa;AACrC,MAAA,MAAA,CAAO,KAAK,KAAe,CAAA;AAAA,IAC7B;AACA,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAEtC,IAAA,MAAM,UAAA,GAAmB,uBAAiB,gBAAA,EAAiB;AAC3D,IAAA,MAAM,WAAA,GAAoB,KAAA,CAAA,WAAA,CAAY,eAAA,CAAgB,UAAU,CAAA;AAChE,IAAA,MAAM,UAAA,GAAa,IAAU,KAAA,CAAA,gBAAA,CAAiB,IAAA,CAAK,iBAAiB,WAAW,CAAA;AAE/E,IAAA,IAAI;AACF,MAAA,MAAM,kBAAA,GAAqB,IAAI,OAAA,CAAgB,CAAC,SAAS,MAAA,KAAW;AAClE,QAAA,UAAA,CAAW,kBAAA;AAAA,UACT,CAAA,MAAA,KAAU;AACR,YAAA,IAAI,MAAA,CAAO,MAAA,KAAiB,KAAA,CAAA,YAAA,CAAa,gBAAA,EAAkB;AACzD,cAAA,OAAA,CAAQ,OAAO,IAAI,CAAA;AAAA,YACrB,CAAA,MAAO;AACL,cAAA,MAAM,MAAA,GAAe,KAAA,CAAA,YAAA,CAAa,MAAA,CAAO,MAAM,KAAK,MAAA,CAAO,MAAA;AAC3D,cAAA,MAAA,CAAO,IAAI,MAAM,CAAA,2BAAA,EAA8B,MAAM,MAAM,MAAA,CAAO,YAAA,IAAgB,EAAE,CAAA,CAAE,CAAC,CAAA;AAAA,YACzF;AAAA,UACF,CAAA;AAAA,UACA,CAAA,KAAA,KAAS,OAAO,IAAI,KAAA,CAAM,6BAA6B,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAC;AAAA,SACzE;AAAA,MACF,CAAC,CAAA;AAED,MAAA,MAAM,SAAA,GAAY,IAAA;AAClB,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,MAAA,EAAQ,KAAK,SAAA,EAAW;AACpD,QAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,IAAI,SAAS,CAAA;AAC9C,QAAA,UAAA,CAAW,KAAA,CAAM,MAAM,MAAM,CAAA;AAAA,MAC/B;AACA,MAAA,UAAA,CAAW,KAAA,EAAM;AAEjB,MAAA,MAAM,OAAO,MAAM,kBAAA;AAEnB,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,KAAA,EAAgB;AACvB,MAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,QAAA,MAAM,KAAA;AAAA,MACR;AACA,MAAA,MAAM,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IAC/B,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAA,EAAM;AAAA,IACnB;AAAA,EACF;AACF","file":"index.js","sourcesContent":["export const AZURE_VOICES = [\n 'af-ZA-AdriNeural',\n 'af-ZA-WillemNeural',\n 'am-ET-MekdesNeural',\n 'am-ET-AmehaNeural',\n 'ar-AE-FatimaNeural',\n 'ar-AE-HamdanNeural',\n 'ar-BH-LailaNeural',\n 'ar-BH-AliNeural',\n 'ar-DZ-AminaNeural',\n 'ar-DZ-IsmaelNeural',\n 'ar-EG-SalmaNeural',\n 'ar-EG-ShakirNeural',\n 'ar-IQ-RanaNeural',\n 'ar-IQ-BasselNeural',\n 'ar-JO-SanaNeural',\n 'ar-JO-TaimNeural',\n 'ar-KW-NouraNeural',\n 'ar-KW-FahedNeural',\n 'ar-LB-LaylaNeural',\n 'ar-LB-RamiNeural',\n 'ar-LY-ImanNeural',\n 'ar-LY-OmarNeural',\n 'ar-MA-MounaNeural',\n 'ar-MA-JamalNeural',\n 'ar-OM-AyshaNeural',\n 'ar-OM-AbdullahNeural',\n 'ar-QA-AmalNeural',\n 'ar-QA-MoazNeural',\n 'ar-SA-ZariyahNeural',\n 'ar-SA-HamedNeural',\n 'ar-SY-AmanyNeural',\n 'ar-SY-LaithNeural',\n 'ar-TN-ReemNeural',\n 'ar-TN-HediNeural',\n 'ar-YE-MaryamNeural',\n 'ar-YE-SalehNeural',\n 'as-IN-YashicaNeural',\n 'as-IN-PriyomNeural',\n 'az-AZ-BanuNeural',\n 'az-AZ-BabekNeural',\n 'bg-BG-KalinaNeural',\n 'bg-BG-BorislavNeural',\n 'bn-BD-NabanitaNeural',\n 'bn-BD-PradeepNeural',\n 'bn-IN-TanishaaNeural',\n 'bn-IN-BashkarNeural',\n 'bs-BA-VesnaNeural',\n 'bs-BA-GoranNeural',\n 'ca-ES-JoanaNeural',\n 'ca-ES-EnricNeural',\n 'ca-ES-AlbaNeural',\n 'cs-CZ-VlastaNeural',\n 'cs-CZ-AntoninNeural',\n 'cy-GB-NiaNeural',\n 'cy-GB-AledNeural',\n 'da-DK-ChristelNeural',\n 'da-DK-JeppeNeural',\n 'de-AT-IngridNeural',\n 'de-AT-JonasNeural',\n 'de-CH-LeniNeural',\n 'de-CH-JanNeural',\n 'de-DE-KatjaNeural',\n 'de-DE-ConradNeural',\n 'de-DE-SeraphinaMultilingualNeural',\n 'de-DE-FlorianMultilingualNeural',\n 'de-DE-AmalaNeural',\n 'de-DE-BerndNeural',\n 'de-DE-ChristophNeural',\n 'de-DE-ElkeNeural',\n 'de-DE-GiselaNeural',\n 'de-DE-KasperNeural',\n 'de-DE-KillianNeural',\n 'de-DE-KlarissaNeural',\n 'de-DE-KlausNeural',\n 'de-DE-LouisaNeural',\n 'de-DE-MajaNeural',\n 'de-DE-RalfNeural',\n 'de-DE-TanjaNeural',\n 'de-DE-Seraphina:DragonHDLatestNeural',\n 'el-GR-AthinaNeural',\n 'el-GR-NestorasNeural',\n 'en-AU-NatashaNeural',\n 'en-AU-WilliamNeural',\n 'en-AU-AnnetteNeural',\n 'en-AU-CarlyNeural',\n 'en-AU-DarrenNeural',\n 'en-AU-DuncanNeural',\n 'en-AU-ElsieNeural',\n 'en-AU-FreyaNeural',\n 'en-AU-JoanneNeural',\n 'en-AU-KenNeural',\n 'en-AU-KimNeural',\n 'en-AU-NeilNeural',\n 'en-AU-TimNeural',\n 'en-AU-TinaNeural',\n 'en-CA-ClaraNeural',\n 'en-CA-LiamNeural',\n 'en-GB-SoniaNeural',\n 'en-GB-RyanNeural',\n 'en-GB-LibbyNeural',\n 'en-GB-AdaMultilingualNeural',\n 'en-GB-OllieMultilingualNeural',\n 'en-GB-AbbiNeural',\n 'en-GB-AlfieNeural',\n 'en-GB-BellaNeural',\n 'en-GB-ElliotNeural',\n 'en-GB-EthanNeural',\n 'en-GB-HollieNeural',\n 'en-GB-MaisieNeural',\n 'en-GB-NoahNeural',\n 'en-GB-OliverNeural',\n 'en-GB-OliviaNeural',\n 'en-GB-ThomasNeural',\n 'en-GB-MiaNeural',\n 'en-HK-YanNeural',\n 'en-HK-SamNeural',\n 'en-IE-EmilyNeural',\n 'en-IE-ConnorNeural',\n 'en-IN-AaravNeural',\n 'en-IN-AashiNeural',\n 'en-IN-AnanyaNeural',\n 'en-IN-KavyaNeural',\n 'en-IN-KunalNeural',\n 'en-IN-NeerjaNeural',\n 'en-IN-PrabhatNeural',\n 'en-IN-RehaanNeural',\n 'en-IN-AartiNeural',\n 'en-IN-ArjunNeural',\n 'en-KE-AsiliaNeural',\n 'en-KE-ChilembaNeural',\n 'en-NG-EzinneNeural',\n 'en-NG-AbeoNeural',\n 'en-NZ-MollyNeural',\n 'en-NZ-MitchellNeural',\n 'en-PH-RosaNeural',\n 'en-PH-JamesNeural',\n 'en-SG-LunaNeural',\n 'en-SG-WayneNeural',\n 'en-TZ-ImaniNeural',\n 'en-TZ-ElimuNeural',\n 'en-US-AvaMultilingualNeural',\n 'en-US-AndrewMultilingualNeural',\n 'en-US-EmmaMultilingualNeural',\n 'en-US-BrianMultilingualNeural',\n 'en-US-AvaNeural',\n 'en-US-AndrewNeural',\n 'en-US-EmmaNeural',\n 'en-US-BrianNeural',\n 'en-US-JennyNeural',\n 'en-US-GuyNeural',\n 'en-US-AriaNeural',\n 'en-US-DavisNeural',\n 'en-US-JaneNeural',\n 'en-US-JasonNeural',\n 'en-US-KaiNeural',\n 'en-US-LunaNeural',\n 'en-US-SaraNeural',\n 'en-US-TonyNeural',\n 'en-US-NancyNeural',\n 'en-US-CoraMultilingualNeural',\n 'en-US-ChristopherMultilingualNeural',\n 'en-US-BrandonMultilingualNeural',\n 'en-US-AmberNeural',\n 'en-US-AnaNeural',\n 'en-US-AshleyNeural',\n 'en-US-BrandonNeural',\n 'en-US-ChristopherNeural',\n 'en-US-CoraNeural',\n 'en-US-ElizabethNeural',\n 'en-US-EricNeural',\n 'en-US-JacobNeural',\n 'en-US-JennyMultilingualNeural',\n 'en-US-MichelleNeural',\n 'en-US-MonicaNeural',\n 'en-US-RogerNeural',\n 'en-US-RyanMultilingualNeural',\n 'en-US-SteffanNeural',\n 'en-US-AdamMultilingualNeural',\n 'en-US-AIGenerate1Neural',\n 'en-US-AIGenerate2Neural',\n 'en-US-AlloyTurboMultilingualNeural',\n 'en-US-AmandaMultilingualNeural',\n 'en-US-BlueNeural',\n 'en-US-DavisMultilingualNeural',\n 'en-US-DerekMultilingualNeural',\n 'en-US-DustinMultilingualNeural',\n 'en-US-EchoTurboMultilingualNeural',\n 'en-US-EvelynMultilingualNeural',\n 'en-US-FableTurboMultilingualNeural',\n 'en-US-LewisMultilingualNeural',\n 'en-US-LolaMultilingualNeural',\n 'en-US-NancyMultilingualNeural',\n 'en-US-NovaTurboMultilingualNeural',\n 'en-US-OnyxTurboMultilingualNeural',\n 'en-US-PhoebeMultilingualNeural',\n 'en-US-SamuelMultilingualNeural',\n 'en-US-SerenaMultilingualNeural',\n 'en-US-ShimmerTurboMultilingualNeural',\n 'en-US-SteffanMultilingualNeural',\n 'en-US-Andrew:DragonHDLatestNeural',\n 'en-US-Andrew2:DragonHDLatestNeural',\n 'en-US-Aria:DragonHDLatestNeural',\n 'en-US-Ava:DragonHDLatestNeural',\n 'en-US-Brian:DragonHDLatestNeural',\n 'en-US-Davis:DragonHDLatestNeural',\n 'en-US-Emma:DragonHDLatestNeural',\n 'en-US-Emma2:DragonHDLatestNeural',\n 'en-US-Jenny:DragonHDLatestNeural',\n 'en-US-Steffan:DragonHDLatestNeural',\n 'en-ZA-LeahNeural',\n 'en-ZA-LukeNeural',\n] as const;\n\nexport type VoiceId = (typeof AZURE_VOICES)[number];\n","import { Readable } from 'stream';\nimport { MastraVoice } from '@mastra/core/voice';\nimport * as Azure from 'microsoft-cognitiveservices-speech-sdk';\nimport { AZURE_VOICES } from './voices';\nimport type { VoiceId } from './voices';\n\ninterface AzureVoiceConfig {\n apiKey?: string;\n region?: string;\n voiceName?: string;\n language?: string;\n}\n\nexport class AzureVoice extends MastraVoice {\n private speechConfig?: Azure.SpeechConfig;\n private listeningConfig?: Azure.SpeechConfig;\n private speechSynthesizer?: Azure.SpeechSynthesizer;\n private speechRecognizer?: Azure.SpeechRecognizer;\n\n /**\n * Creates a new instance of AzureVoice for text-to-speech and speech-to-text services.\n *\n * @param {Object} config - Configuration options\n * @param {AzureVoiceConfig} [config.speechModel] - Configuration for text-to-speech\n * @param {AzureVoiceConfig} [config.listeningModel] - Configuration for speech-to-text\n * @param {VoiceId} [config.speaker] - Default voice ID for speech synthesis\n */\n constructor({\n speechModel,\n listeningModel,\n speaker,\n }: {\n speechModel?: AzureVoiceConfig;\n listeningModel?: AzureVoiceConfig;\n speaker?: VoiceId;\n } = {}) {\n super({\n speechModel: {\n name: '',\n apiKey: speechModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n listeningModel: {\n name: '',\n apiKey: listeningModel?.apiKey ?? process.env.AZURE_API_KEY,\n },\n speaker,\n });\n\n const envApiKey = process.env.AZURE_API_KEY;\n const envRegion = process.env.AZURE_REGION;\n\n // Configure speech synthesis\n if (speechModel) {\n const apiKey = speechModel.apiKey ?? envApiKey;\n const region = speechModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for speech model');\n if (!region) throw new Error('No region provided for speech model');\n\n this.speechConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n this.speechConfig.speechSynthesisVoiceName = speechModel.voiceName || speaker || 'en-US-AriaNeural';\n this.speechSynthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n }\n\n // Configure speech recognition\n if (listeningModel) {\n const apiKey = listeningModel.apiKey ?? envApiKey;\n const region = listeningModel.region ?? envRegion;\n\n if (!apiKey) throw new Error('No Azure API key provided for listening model');\n if (!region) throw new Error('No region provided for listening model');\n\n this.listeningConfig = Azure.SpeechConfig.fromSubscription(apiKey, region);\n if (listeningModel.language) {\n this.listeningConfig.speechRecognitionLanguage = listeningModel.language;\n }\n this.speechRecognizer = new Azure.SpeechRecognizer(this.listeningConfig);\n }\n }\n\n /**\n * Gets a list of available voices for speech synthesis.\n *\n * @returns {Promise<Array<{ voiceId: string; language: string; region: string; }>>} List of available voices\n */\n async getSpeakers() {\n return AZURE_VOICES.map(voice => ({\n voiceId: voice,\n language: voice.split('-')[0],\n region: voice.split('-')[1],\n }));\n }\n\n /**\n * Converts text to speech using Azure's Text-to-Speech service.\n *\n * @param {string | NodeJS.ReadableStream} input - Text to convert to speech\n * @param {Object} [options] - Optional parameters\n * @param {string} [options.speaker] - Voice ID to use for synthesis\n * @returns {Promise<NodeJS.ReadableStream>} Stream containing the synthesized audio\n * @throws {Error} If speech model is not configured or synthesis fails\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n [key: string]: any;\n },\n ): Promise<NodeJS.ReadableStream> {\n if (!this.speechConfig) {\n throw new Error('Speech model (Azure) not configured');\n }\n\n // Convert stream input to string if needed\n if (typeof input !== 'string') {\n const chunks: Buffer[] = [];\n try {\n for await (const chunk of input) {\n chunks.push(chunk as Buffer);\n }\n input = Buffer.concat(chunks).toString('utf-8');\n } catch (error) {\n throw new Error(`Failed to read input stream: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n if (!input?.trim()) {\n throw new Error('Input text is empty');\n }\n\n // Update voice if specified\n if (options?.speaker) {\n this.speechConfig.speechSynthesisVoiceName = options.speaker;\n }\n\n const synthesizer = new Azure.SpeechSynthesizer(this.speechConfig);\n\n try {\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error('Speech synthesis timed out')), 5000);\n });\n\n const synthesisPromise = new Promise<Azure.SpeechSynthesisResult>((resolve, reject) => {\n synthesizer.speakTextAsync(\n input,\n result =>\n result.errorDetails\n ? reject(new Error(`Speech synthesis failed: ${result.errorDetails}`))\n : resolve(result),\n error => reject(new Error(`Speech synthesis error: ${String(error)}`)),\n );\n });\n\n const result = await Promise.race([synthesisPromise, timeoutPromise]);\n synthesizer.close();\n\n if (result.reason !== Azure.ResultReason.SynthesizingAudioCompleted) {\n throw new Error(`Speech synthesis failed: ${result.errorDetails || result.reason}`);\n }\n\n return Readable.from([Buffer.from(result.audioData)]);\n } catch (error) {\n synthesizer.close();\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n\n /**\n * Checks if listening capabilities are enabled.\n *\n * @returns {Promise<{ enabled: boolean }>}\n */\n async getListener() {\n return { enabled: true };\n }\n\n /**\n * Transcribes audio (STT) from a Node.js stream using Azure.\n *\n * @param {NodeJS.ReadableStream} audioStream - The audio to be transcribed, must be in .wav format.\n * @returns {Promise<string>} - The recognized text.\n */\n async listen(audioStream: NodeJS.ReadableStream): Promise<string> {\n if (!this.listeningConfig || !this.speechRecognizer) {\n throw new Error('Listening model (Azure) not configured');\n }\n\n const chunks: Buffer[] = [];\n for await (const chunk of audioStream) {\n chunks.push(chunk as Buffer);\n }\n const audioData = Buffer.concat(chunks);\n\n const pushStream = Azure.AudioInputStream.createPushStream();\n const audioConfig = Azure.AudioConfig.fromStreamInput(pushStream);\n const recognizer = new Azure.SpeechRecognizer(this.listeningConfig, audioConfig);\n\n try {\n const recognitionPromise = new Promise<string>((resolve, reject) => {\n recognizer.recognizeOnceAsync(\n result => {\n if (result.reason === Azure.ResultReason.RecognizedSpeech) {\n resolve(result.text);\n } else {\n const reason = Azure.ResultReason[result.reason] || result.reason;\n reject(new Error(`Speech recognition failed: ${reason} - ${result.errorDetails || ''}`));\n }\n },\n error => reject(new Error(`Speech recognition error: ${String(error)}`)),\n );\n });\n\n const chunkSize = 4096;\n for (let i = 0; i < audioData.length; i += chunkSize) {\n const chunk = audioData.slice(i, i + chunkSize);\n pushStream.write(chunk.buffer);\n }\n pushStream.close();\n\n const text = await recognitionPromise;\n\n return text;\n } catch (error: unknown) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error(String(error));\n } finally {\n recognizer.close();\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/voice-azure",
3
- "version": "0.10.19",
3
+ "version": "0.11.0-beta.0",
4
4
  "description": "Mastra Azure speech integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,12 +33,12 @@
33
33
  "tsup": "^8.5.0",
34
34
  "typescript": "^5.8.3",
35
35
  "vitest": "^3.2.4",
36
- "@internal/lint": "0.0.58",
37
- "@internal/types-builder": "0.0.33",
38
- "@mastra/core": "0.24.0"
36
+ "@internal/lint": "0.0.53",
37
+ "@mastra/core": "1.0.0-beta.0",
38
+ "@internal/types-builder": "0.0.28"
39
39
  },
40
40
  "peerDependencies": {
41
- "@mastra/core": ">=0.18.1-0 <0.25.0-0"
41
+ "@mastra/core": ">=1.0.0-0 <2.0.0-0"
42
42
  },
43
43
  "homepage": "https://mastra.ai",
44
44
  "repository": {
@@ -49,12 +49,8 @@
49
49
  "bugs": {
50
50
  "url": "https://github.com/mastra-ai/mastra/issues"
51
51
  },
52
- "publishConfig": {
53
- "access": "public",
54
- "publish-branch": [
55
- "main",
56
- "0.x"
57
- ]
52
+ "engines": {
53
+ "node": ">=22.13.0"
58
54
  },
59
55
  "scripts": {
60
56
  "build": "tsup --silent --config tsup.config.ts",