Compare commits

...

29 Commits

Author SHA1 Message Date
Dave Horton
9ac144ef71 0.0.129 2026-03-05 07:24:30 -05:00
Hoan Luu Huu
337114035d support toolhook (#125) 2026-03-05 07:24:04 -05:00
Dave Horton
253bd8a49c 0.0.128 2026-02-26 07:25:14 -05:00
Hoan Luu Huu
7a5c094bfc houdifyOptions support audioQueryAbsoluteTimeout (#124) 2026-02-26 07:24:13 -05:00
Dave Horton
228f8773d3 0.0.127 2026-02-11 17:32:14 -05:00
Hoan Luu Huu
c9cd50c559 support noise isolation to config verb (#122)
* support noise isolation to config verb

* wip

* wip

* wip

* wip

* add vendor to turnTaking
2026-02-11 17:31:19 -05:00
Dave Horton
fe095be5c8 0.0.126 2026-02-01 13:43:23 -05:00
Dave Horton
71caf6bb53 allow listen to be nested in a conference verb (#123) 2026-02-01 13:42:49 -05:00
Dave Horton
887320fd5d 0.0.125 2026-01-21 07:28:59 -05:00
Hoan Luu Huu
f0ffdee9c6 support speechamtics end_of_utterance_silence_trigger (#121) 2026-01-21 07:28:44 -05:00
Dave Horton
1013db46d3 0.0.124 2026-01-21 07:23:25 -05:00
Sam Machin
8771e3f22f add statusHook to redirect (#120) 2026-01-21 07:22:54 -05:00
Dave Horton
ff757d3177 0.0.123 2026-01-02 10:20:58 -05:00
Sam Machin
5745cc9a29 add config:record type (#118) 2026-01-02 10:19:43 -05:00
Dave Horton
2b81fe20f0 0.0.122 2025-11-27 11:38:55 -06:00
Hoan Luu Huu
60a33e11eb suoppport houndifyOptions for requestInfo and sampleRate (#117) 2025-11-27 11:37:28 -06:00
Dave Horton
9717ce6d58 0.0.121 2025-11-18 07:31:21 -05:00
Hoan Luu Huu
49ffe5f526 support elevenlabs stt (#116) 2025-11-18 07:26:07 -05:00
Dave Horton
61590b66cc 0.0.120 2025-11-13 11:46:00 -05:00
Ed Robbins
d8cf684bf6 add audioLogging to azureOptions (#115) 2025-11-13 11:45:36 -05:00
Dave Horton
e039261eb5 0.0.119 2025-10-21 15:41:05 +01:00
Ed Robbins
23e726ed3f Add disableTtsCache to config verb spec (#114) 2025-10-21 10:40:41 -04:00
Sam Machin
e1bc5adc55 add distributeDtmf to conference (#113) 2025-10-21 10:40:08 -04:00
Dave Horton
76e2486535 0.0.118 2025-10-15 18:42:27 +03:00
Hoan Luu Huu
dfcf1de210 support gladia stt (#112) 2025-10-15 11:42:03 -04:00
Dave Horton
7d19707dec 0.0.117 2025-10-14 07:43:08 +03:00
Hoan Luu Huu
b4856e9d05 support houndify stt (#108)
* support houndify stt

* add testcase

* wip
2025-10-14 00:42:34 -04:00
Dave Horton
577191ed0d 0.0.116 2025-10-03 13:30:34 -04:00
Dave Horton
ee2ffff20d preflightThreshold is now eagerEotThreshold (#111) 2025-10-03 13:30:07 -04:00
4 changed files with 247 additions and 15 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@jambonz/verb-specifications",
"version": "0.0.115",
"version": "0.0.129",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@jambonz/verb-specifications",
"version": "0.0.115",
"version": "0.0.129",
"license": "MIT",
"dependencies": {
"debug": "^4.3.4",

View File

@@ -1,6 +1,6 @@
{
"name": "@jambonz/verb-specifications",
"version": "0.0.115",
"version": "0.0.129",
"description": "Jambonz Verb Specification Utilities",
"main": "index.js",
"scripts": {

View File

@@ -75,7 +75,10 @@
"vad":"#vad",
"referHook": "object|string",
"earlyMedia": "boolean",
"autoStreamTts": "boolean"
"autoStreamTts": "boolean",
"disableTtsCache": "boolean",
"noiseIsolation": "#noiseIsolation",
"turnTaking": "#turnTaking"
},
"required": []
},
@@ -278,7 +281,9 @@
"statusEvents": "array",
"statusHook": "object|string",
"enterHook": "object|string",
"record": "#record"
"record": "#record",
"listen": "#listen",
"distributeDtmf": "boolean"
},
"required": [
"name"
@@ -532,6 +537,11 @@
"type": "string",
"enum": ["startCallRecording", "stopCallRecording", "pauseCallRecording", "resumeCallRecording"]
},
"type" : {
"type" : "string",
"enum" : ["cloud", "siprec"]
},
"recordingID": "string",
"siprecServerURL": "string|array",
"headers": "object"
@@ -543,7 +553,8 @@
"redirect": {
"properties": {
"id": "string",
"actionHook": "object|string"
"actionHook": "object|string",
"statusHook": "object|string"
},
"required": [
"actionHook"
@@ -755,7 +766,10 @@
"customOptions": "#customOptions",
"verbioOptions": "#verbioOptions",
"speechmaticsOptions": "#speechmaticsOptions",
"openaiOptions": "#openaiOptions"
"openaiOptions": "#openaiOptions",
"houndifyOptions": "#houndifyOptions",
"gladiaOptions": "object",
"elevenlabsOptions": "#elevenlabsOptions"
},
"required": [
"vendor"
@@ -798,6 +812,7 @@
"properties": {
"speechSegmentationSilenceTimeoutMs": "number",
"postProcessing" : "string",
"audioLogging" : "boolean",
"languageIdMode": {
"type": "string",
"enum": [
@@ -833,6 +848,62 @@
"transcriptNormalization": "array"
}
},
"houndifyOptions": {
"properties": {
"requestInfo": "object",
"sampleRate": "number",
"latitude": "number",
"longitude": "number",
"city": "string",
"state": "string",
"country": "string",
"timeZone": "string",
"domain": "string",
"audioEndpoint": "string",
"maxSilenceSeconds": "number",
"maxSilenceAfterFullQuerySeconds": "number",
"maxSilenceAfterPartialQuerySeconds": "number",
"vadSensitivity": "number",
"vadTimeout": "number",
"vadMode": "string",
"vadVoiceMs": "number",
"vadSilenceMs": "number",
"vadDebug": "boolean",
"audioFormat": "string",
"enableNoiseReduction": "boolean",
"enableProfanityFilter": "boolean",
"enablePunctuation": "boolean",
"enableCapitalization": "boolean",
"confidenceThreshold": "number",
"enableDisfluencyFilter": "boolean",
"maxResults": "number",
"enableWordTimestamps": "boolean",
"maxAlternatives": "number",
"partialTranscriptInterval": "number",
"sessionTimeout": "number",
"connectionTimeout": "number",
"customVocabulary": "array",
"languageModel": "string",
"audioQueryAbsoluteTimeout": "number"
}
},
"elevenlabsOptions": {
"properties": {
"includeTimestamps": "boolean",
"commitStrategy": {
"type": "string",
"enum": [
"manual",
"vad"
]
},
"vadSilenceThresholdSecs": "number",
"vadThreshold": "number",
"minSpeechDurationMs": "number",
"minSilenceDurationMs": "number",
"enableLogging": "boolean"
}
},
"cobaltOptions": {
"properties": {
"serverUri": "string",
@@ -913,7 +984,6 @@
"vadTurnoff": "number",
"tag": "string",
"fillerWords" : "boolean",
"preflightThreshold": "number",
"eotThreshold": "number",
"eotTimeoutMs": "number",
"mipOptOut": "boolean",
@@ -1019,6 +1089,7 @@
"additional_vocab": "array",
"diarization": "string",
"speaker_diarization_config": "#sm_speakerDiarizationConfig",
"conversation_config": "#sm_conversationConfig",
"enable_partials": "boolean",
"max_delay": "number",
"max_delay_mode": {
@@ -1046,6 +1117,13 @@
"required": [
]
},
"sm_conversationConfig": {
"properties": {
"end_of_utterance_silence_trigger": "number"
},
"required": [
]
},
"sm_puctuationOverrides": {
"properties": {
"permitted_marks": "array",
@@ -1305,7 +1383,8 @@
"llm": "#llm",
"preflightLlm": "boolean",
"actionHook": "object|string",
"eventHook": "object|string"
"eventHook": "object|string",
"toolHook": "object|string"
},
"required": [
"stt",
@@ -1320,10 +1399,26 @@
"enum": ["krisp"]
},
"threshold": "number",
"preflightThreshold": "number"
"eagerEotThreshold": "number"
},
"required": [
"vendor"
]
},
"noiseIsolation" : {
"properties": {
"enable": "boolean",
"vendor": "string",
"level": "number",
"model": "string"
}
},
"turnTaking": {
"properties": {
"enable": "boolean",
"vendor": "string",
"threshold": "number",
"model": "string"
}
}
}

View File

@@ -213,11 +213,10 @@ test("validate correct verbs", async (t) => {
"deepgramOptions": {
"endpointing": 500,
"noDelay": true,
preflightThreshold: 1000,
eotThreshold: 500,
eotTimeoutMs: 5000,
eagerEotThreshold: 200,
mipOptOut: true
"eotThreshold": 500,
"eotTimeoutMs": 5000,
"eagerEotThreshold": 200,
"mipOptOut": true
}
},
"say": {
@@ -280,6 +279,70 @@ test("validate correct verbs", async (t) => {
}
},
},
{
"verb": "gather",
"actionHook": "http://example.com/collect",
"input": ["digits", "speech"],
"bargein": true,
"dtmfBargein": true,
"finishOnKey": "#",
"numDigits": 5,
"timeout": 8,
"recognizer": {
"vendor": "houndify",
"language": "en-US",
"houndifyOptions": {
"requestInfo": {
"Latitude": 30.6,
"Longitude": 30.6,
"City": "Huston"
},
"sampleRate": 16000,
"latitude": 30.6,
"longitude": 30.6,
"city": "Huston",
"state": "CA",
"country": "US",
"timeZone": "GMT",
"domain": "Voice",
"audioEndpoint": "https://api.houndify.com/v1/audio",
"maxSilenceSeconds": 5,
"maxSilenceAfterFullQuerySeconds": 3,
"maxSilenceAfterPartialQuerySeconds": 2,
"vadSensitivity": 0.5,
"vadTimeout": 1000,
"vadMode": "auto",
"vadVoiceMs": 250,
"vadSilenceMs": 500,
"vadDebug": true,
"audioFormat": "PCM16",
"enableNoiseReduction": true,
"enableProfanityFilter": false,
"enablePunctuation": true,
"enableCapitalization": true,
"confidenceThreshold": 0.7,
"enableDisfluencyFilter": true,
"maxResults": 5,
"enableWordTimestamps": true,
"maxAlternatives": 3,
"partialTranscriptInterval": 100,
"sessionTimeout": 30000,
"connectionTimeout": 5000,
"customVocabulary": ["jambonz", "telephony", "voip"],
"languageModel": "enhanced",
"audioQueryAbsoluteTimeout": 5
},
"gladiaOptions": {
"post_processing": {
"summarization": false,
"summarization_config": {
"type": "general"
},
"chapterization": false
},
}
},
},
{
"verb": "gather",
"actionHook": "http://example.com/collect",
@@ -406,6 +469,24 @@ test("validate correct verbs", async (t) => {
"speechPadMs": 1000
}
},
{
"verb": "config",
"noiseIsolation": {
"enable": true,
"vendor": "krisp",
"level": 3,
"model": "custom-model"
}
},
{
"verb": "config",
"turnTaking": {
"enable": true,
"vendor": "krisp",
"threshold": 0.5,
"model": "turn-taking-model"
}
},
{
"verb": "message",
"to": "15083084809",
@@ -487,6 +568,24 @@ test("validate correct verbs", async (t) => {
"interim": true
}
},
{
"verb": "transcribe",
"transcriptionHook": "http://example.com/transcribe",
"recognizer": {
"vendor": "nvidia",
"language" : "en-US",
"interim": true,
"elevenlabsOptions": {
"includeTimestamps": true,
"commitStrategy": "vad",
"vadSilenceThresholdSecs": 0.8,
"vadThreshold": 0.5,
"minSpeechDurationMs": 300,
"minSilenceDurationMs": 500,
"enableLogging": false
}
}
},
{
"verb": "transcribe",
"transcriptionHook": "http://example.com/transcribe",
@@ -564,6 +663,44 @@ test("validate correct verbs", async (t) => {
}
}
]
},
{
"verb": "pipeline",
"stt": {
"vendor": "google",
"language": "en-US"
},
"tts": {
"vendor": "google",
"language": "en-US"
},
"llm": {
"vendor": "openai",
"llmOptions": {
"model": "gpt-4o"
}
},
"actionHook": "/pipeline/action",
"eventHook": "/pipeline/event",
"toolHook": "/pipeline/tool"
},
{
"verb": "transcribe",
"transcriptionHook": "http://example.com/transcribe",
"recognizer": {
"vendor": "speechmatics",
"language": "en",
"speechmaticsOptions": {
"transcription_config": {
"language": "en",
"enable_partials": true,
"max_delay": 2,
"conversation_config": {
"end_of_utterance_silence_trigger": 0.5
}
}
}
}
}
];
try {