133 Commits
Author SHA1 Message Date
Dave HortonandClaude Opus 5.5 328087042f fix: release homer sockets when a pcap request is abandoned (#565)
The pcap route awaited homer with no timeout and no tie to the client
connection, then used stream.pipe(res). If the client gave up (nginx 499)
before homer answered, the homer response body was piped into a closed
response, pipe() detached without destroying it, and the unread body kept
its socket and buffers referenced by the global undici pool forever.

With homer slow, this leaked roughly one socket per abandoned request:
~1,300 open fds and +200 MB RSS per api-server worker within four hours.

- abort the homer auth and pcap fetches when the response closes or after 30s
- use stream.pipeline() so the homer stream is destroyed if the client leaves

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 17:04:33 -06:00
Hoan Luu HuuandClaude Opus 5 038388f052 feat(tts): add Inworld TTS 2 and TTS 2 Flash models (#564)
- add inworld-tts-2 and inworld-tts-2-flash to the Inworld model list
- both return word timestamps; flash is the low-latency/low-cost variant
- model_id is passed through unchanged, so no other wiring is needed

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 08:03:21 -04:00
Hoan Luu HuuandClaude Opus 5 baf80cb84c fix: speechmatics credential test ignored the configured region (#563)
The speechmatics branch of the /test route destructured only api_key out of the
decrypted credential, so testSpeechmaticsStt() passed realtimeUrl: undefined to
the sdk. ConnectionConfigFull only applies an override when the value is truthy,
so every credential was silently tested against wss://eu2.rt.speechmatics.com/v2
no matter which region was stored - a neu or wus key was judged by whatever eu2
happened to answer.

- pass speechmatics_stt_uri through from the route
- normalize it before handing it to the sdk. The field holds a bare hostname,
  which the sdk cannot use as-is: it appends the language, yielding
  "eu2.rt.speechmatics.com/en" and ERR_INVALID_URL. At call time the same value
  goes to mod_speechmatics_transcribe as SPEECHMATICS_HOST, which always
  connects over wss on port 443 with a path of /v2, so build exactly that url.
  Anything else - a full ws url, a port - now fails the test with an actionable
  message rather than passing against an endpoint only the test can reach, and a
  credential that has lost the field fails too: the feature server omits
  SPEECHMATICS_HOST when it is unset and the module refuses the session, so
  defaulting to a hosted region here would show a green check on a dead
  credential.
- record the speechmatics STT result with sttTestResult(), not ttsTestResult(),
  which is what every other STT vendor in this file does; the tts column was
  being stamped for an STT-only vendor

Adds coverage for the url building to the main test suite - it is the part of
this that can be exercised without an api key.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 11:06:28 -04:00
Sam Machin 24621f79dd Remove smpp (#559)
* remove smpp

* update db-helpers
2026-07-28 10:32:42 -04:00
Hoan Luu Huu 3bb33f24c2 fix microsoft SST endpoint id is failed on validating speech credential (#554) 2026-06-01 08:38:21 -04:00
Hoan Luu Huu dd755f8746 support houndify wss (#551) 2026-04-23 07:20:04 -04:00
Hoan Luu Huu b95a593182 fixed houndify speech credential validation skiped if custom endpoint provided (#522) 2026-03-05 07:17:52 -05:00
Hoan Luu Huu 99bfec5888 support inworld models (#543) 2026-02-12 07:46:07 -05:00
Hoan Luu Huu 77dbe964aa fix soniox stt speech credential validation (#535) 2026-01-23 10:08:45 -05:00
Hoan Luu Huu 3609b8e828 support openai transcribe support auto language (#537) 2026-01-23 07:40:00 -05:00
Hoan Luu Huu 27addfa543 support google gemini tts (#534)
* support google gemini tts

* wip

* wip

* wip

* wip

* wip

* support speech utils
2026-01-22 08:24:05 -05:00
Hoan Luu Huu 1aa28e8ba0 fixed how to detect obscured key (#524)
* fixed how to detect obscured key

* wip

* wip
2025-12-12 08:56:55 -05:00
Hoan Luu Huu 40754deb3e soundhound speech credential support audio endpoint (#520)
* soundhound speech credential support audio endpoint

* soundhound speech credential support audio endpoint

* wip

* wip
2025-11-28 21:47:40 -05:00
Hoan Luu Huu 0d66dc9c27 support sonic-3 (#507)
* support sonic-3

* update supported languages
2025-10-30 21:21:27 -04:00
Hoan Luu Huu 42f4318a17 support gladia stt (#503)
* support gladia stt

* wip

* update verb specification
2025-10-20 04:47:17 -04:00
Hoan Luu Huu bcff9b35a6 support houndify stt (#498)
* support houndify stt

* wip

* test houdify stt credential

* wip

* wip

* update verb specification
2025-10-14 00:52:49 -04:00
Hoan Luu Huu 8267ddaffd support elevenlabs different endpoint (#502)
* support elevenlabs different endpoint

* wip

* wip

* wip
2025-10-09 08:20:11 -04:00
Hoan Luu Huu c3d12fafee support deeepgram influx (#501)
* support deeepgram influx

* update verb specification
2025-10-03 10:09:19 -04:00
Hoan Luu Huu 9421bb8aa1 fixed deepgram cannot fetch list of available voices for model (#500) 2025-09-27 10:13:06 -04:00
Hoan Luu Huu fd9dc77a58 support resemble TTS (#488)
* support resemble TTS

* wip

* wip

* update speech utils version

* update resemble voice list
2025-08-13 08:18:08 -04:00
Hoan Luu Huu 2b66a121a0 fixed deepgram river does not return api_key (#486) 2025-07-30 08:29:57 -04:00
Dave Horton 819319dbe5 logging 2025-07-01 18:25:54 -04:00
Hoan Luu Huu 0ba69e872b support assemblyai v3 (#475)
* support assemblyai v3

* update verb specification
2025-07-01 15:48:00 -04:00
Hoan Luu Huu 5421f1421f support inworld tts (#472)
* support inworld tts

* inworld tts voices
2025-06-27 11:12:00 -04:00
Hoan Luu Huu e2fc0216e1 support mod cartesia transcribe (#463) 2025-06-17 20:53:22 +02:00
Hoan Luu Huu 3e1b383284 fix microsoft fetch list voice from hardcode westus region (#459) 2025-05-29 10:07:58 -04:00
Hoan Luu Huu bb5dba7c20 support fetch tts/stt deepgram models from rest api (#457) 2025-05-28 09:59:02 -04:00
Hoan Luu Huu be300ebd51 fixed save obscurbed azure connection_string for bucket credential (#443)
* fixed save obscurbed azure connection_string for bucket credential

* wip
2025-05-09 07:46:59 -04:00
Dave Horton 48e39f37d3 when app url is websocket we still need to send to http schema not ws (#439)
* when app url is websocket we still need to send to http schema not ws

* fix bug from a previous PR
2025-05-08 13:41:36 -04:00
Vasudev Anubroluandvasudevan-Kore 3cad5219b4 feat/864 playht on prem (#432)
* feat/864 playht on prem

* feat/864 update speech utils version

---------

Co-authored-by: vasudevan-Kore <vasudev.anubrolu@kore.com>
2025-05-08 10:00:07 -04:00
30a799030c Feat/app env vars (#430)
* initial changes for env var support

* WIP

* Update applications.js

* JSON stringify before encrypting

* use call_hook.url

* env vars working

GET /v1/AppEnv?url=[URL] to trigger options request to URL and return app-schema
POST /v1/Applications with {env_vars: [OBJECT} to create app with env vars
PUT /v1/Applications/[SID] with {env_vars: [OBJECT} to change env vars
GET returns env vars

POST and PUT will also trigger an OPTIONS request to the call_hook url to get schema and then validate the env_vars against it

* update appenv cannot finish request.

* wip

* wip

* wip

* wip

---------

Co-authored-by: Dave Horton <daveh@beachdognet.com>
Co-authored-by: Quan HL <quan.luuhoang8@gmail.com>
Co-authored-by: Hoan Luu Huu <110280845+xquanluu@users.noreply.github.com>
2025-05-08 08:41:50 -04:00
Hoan Luu Huu e41caf8887 Fixed download pcap and jaeger trace when using fetch lib (#436)
* fixed cannot download pcap file

* wip
2025-05-07 20:08:06 -04:00
Hoan Luu Huu 561de0532f support rime Arcana (#434) 2025-05-06 08:49:32 -04:00
Hoan Luu Huu c21f5b871f add new voice for nvidia tts (#428)
* add new voice for nvidia tts

* update nvidia tts voices
2025-04-29 09:33:05 -04:00
Sam Machin 9a2e48b538 update AWS transcribe languages (#427)
Using info from https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html
2025-04-28 09:11:47 -04:00
Sam Machin 29adbfc6ae Add Aura-2 Voices (#426) 2025-04-28 07:26:15 -04:00
Hoan Luu Huu ffda2398f4 replace bent by native node fetch (#401)
* replace bent by native node fetch

* wip

* wip

* wip
2025-04-24 06:50:15 -04:00
Sam Machin b05b32d73e Update speech-utils.js (#425) 2025-04-23 10:29:19 -04:00
Hoan Luu Huu 1e532212f9 support whisper tts model (#405) 2025-04-22 09:47:13 -04:00
rammohan-y c94f14f27d Added new model Playht Dialog-1-0 model (#423)
https://github.com/jambonz/jambonz-api-server/issues/419
2025-04-22 09:30:18 -04:00
Sam Machin 06873186ac fix the creds test and return correct error (#420) 2025-04-22 07:38:54 -04:00
rammohan-y 4c935c7fda Feat/371 view only user implementation using user_permissions (#381)
* https://github.com/jambonz/jambonz-api-server/issues/371

Implemented view_only permission feature

* calling prepare-permissions in create-test-db.js

* check if there is only 1 permission and if it is VIEW_ONLY then consider user as read-only user

* setting is_view_only flag for view user by userid
2025-04-01 09:29:06 -04:00
Hoan Luu Huu 1c55bad04f support openai stt (#402)
* support openai stt

* wip

* wip

* add stt languages for openai
2025-03-28 10:14:50 -04:00
Hoan Luu HuuandDave Horton 32a2bfcdb5 support cartesia sonic-2 model (#403)
* support cartesia sonic-2 model

* wip

* fix typo

---------

Co-authored-by: Dave Horton <daveh@beachdognet.com>
2025-03-28 09:52:01 -04:00
Hoan Luu Huu becc1636b7 deepgram milti languages (#397) 2025-03-17 21:10:22 -04:00
Hoan Luu Huu 9cfe990bb8 support rimelabs new voices (#387) 2025-02-07 07:22:42 -05:00
Hoan Luu Huu 6c7d2c9074 support rime mistv2 model (#386) 2025-02-06 21:36:34 -05:00
Hoan Luu Huu 73e35c84c5 support voxist stt (#384) 2025-02-05 08:32:36 -05:00
Hoan Luu Huu b8f4ad6b27 support fetching elevenlabs models by api-key (#383) 2025-02-03 08:28:48 -05:00
rammohan-y 66bd9a442c feat/379: added tts property to deepgram response (#380) 2025-01-21 08:15:32 -05:00