From 40754deb3efe5d07745aa605a88c38cc596a6457 Mon Sep 17 00:00:00 2001 From: Hoan Luu Huu <110280845+xquanluu@users.noreply.github.com> Date: Sat, 29 Nov 2025 09:47:40 +0700 Subject: [PATCH] soundhound speech credential support audio endpoint (#520) * soundhound speech credential support audio endpoint * soundhound speech credential support audio endpoint * wip * wip --- lib/routes/api/speech-credentials.js | 9 ++++++--- lib/utils/speech-utils.js | 5 ++++- package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/routes/api/speech-credentials.js b/lib/routes/api/speech-credentials.js index ead1e2f..f63118e 100644 --- a/lib/routes/api/speech-credentials.js +++ b/lib/routes/api/speech-credentials.js @@ -166,6 +166,7 @@ const encryptCredential = (obj) => { engine_version, service_version, api_uri, + houndify_server_uri, options } = obj; @@ -329,7 +330,7 @@ const encryptCredential = (obj) => { assert(client_id, 'invalid houndify speech credential: client_id is required'); assert(client_key, 'invalid houndify speech credential: client_key is required'); assert(user_id, 'invalid houndify speech credential: user_id is required'); - const houndifyData = JSON.stringify({client_id, client_key, user_id}); + const houndifyData = JSON.stringify({client_id, client_key, user_id, houndify_server_uri}); return encrypt(houndifyData); case 'voxist': @@ -557,7 +558,8 @@ router.put('/:sid', async(req, res) => { speechmatics_stt_uri, resemble_tts_use_tls, resemble_tts_uri, - api_uri + api_uri, + houndify_server_uri } = req.body; const newCred = { @@ -593,7 +595,8 @@ router.put('/:sid', async(req, res) => { speechmatics_stt_uri, resemble_tts_uri, resemble_tts_use_tls, - api_uri + api_uri, + houndify_server_uri }; logger.info({o, newCred}, 'updating speech credential with this new credential'); obj.credential = encryptCredential(newCred); diff --git a/lib/utils/speech-utils.js b/lib/utils/speech-utils.js index e27eaa2..40937b7 100644 --- a/lib/utils/speech-utils.js +++ b/lib/utils/speech-utils.js @@ -676,8 +676,10 @@ const testHoundifyStt = async(logger, credentials) => { requestInfo: { UserID: user_id || 'test_user', Latitude: 37.388309, - Longitude: -121.973968 + Longitude: -121.973968, }, + // custom endpint is used only for feature server. + // ...(houndify_server_uri && {endpoint: houndify_server_uri}), // Audio format configuration sampleRate: 16000, @@ -887,6 +889,7 @@ function decryptCredential(obj, credential, logger, isObscureKey = true) { obj.client_key = isObscureKey ? obscureKey(o.client_key) : o.client_key; obj.client_id = o.client_id; obj.user_id = o.user_id; + obj.houndify_server_uri = o.houndify_server_uri; } else if ('resemble' === obj.vendor) { const o = JSON.parse(decrypt(credential)); obj.api_key = isObscureKey ? obscureKey(o.api_key) : o.api_key; diff --git a/package-lock.json b/package-lock.json index 449e5f6..fc22ae3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@jambonz/realtimedb-helpers": "^0.8.15", "@jambonz/speech-utils": "^0.2.26", "@jambonz/time-series": "^0.2.8", - "@jambonz/verb-specifications": "^0.0.118", + "@jambonz/verb-specifications": "^0.0.122", "@soniox/soniox-node": "^1.2.2", "ajv": "^8.17.1", "argon2": "^0.40.1", @@ -4346,9 +4346,9 @@ } }, "node_modules/@jambonz/verb-specifications": { - "version": "0.0.118", - "resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.0.118.tgz", - "integrity": "sha512-1dGnc6TUCehjt1yGNuqh1uzk1xw9HhUm39aVUosQMHlnT0fK0ItikeJ0uttTjFastHNmPPxqJwb20wOvVGTCFg==", + "version": "0.0.122", + "resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.0.122.tgz", + "integrity": "sha512-7xqaULhKFywJ2ZuyiYt77iiJwJ+8b98Zt1X4+OqZ7Cdjhfo7S6KnR66XRVJHnekXbmfVv58kB0KWUux5TG//Sw==", "license": "MIT", "dependencies": { "debug": "^4.3.4", diff --git a/package.json b/package.json index a811a74..d80ddd6 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@jambonz/realtimedb-helpers": "^0.8.15", "@jambonz/speech-utils": "^0.2.26", "@jambonz/time-series": "^0.2.8", - "@jambonz/verb-specifications": "^0.0.118", + "@jambonz/verb-specifications": "^0.0.122", "@soniox/soniox-node": "^1.2.2", "ajv": "^8.17.1", "argon2": "^0.40.1",