# Release v0.8.5
#### Info
- Release Date: Nov 10, 2023
- Deployed in Helm chart release 0.1.33

#### New Features
- Add new speech vendors: Cobalt (STT), AssemblyAI (STT), Whisper (TTS), ElevenLabs (TTS)
- Support Docker containers for Azure speech
- Support custom voices on google
- Add ability to use a fallback speech vendor in case of error.
- Add support for speechSegmentationSilenceTimeoutMs for Microsoft Azure STT
- Optionally trim silence from Azure TTS
- Implement fastRecognitionTimeout to enable overriding speech vendor silence timeout used when determining the end of an utterance [448](https://github.com/jambonz/jambonz-feature-server/issues/448)
- Add support for deepgram options [smartFormatting](https://developers.deepgram.com/docs/smart-format) and utteranceEndMs
- Calculate and [show speech recognition latency](https://youtu.be/tg07JEqnVuI) in call recording view
- Add API to generate audio file from text using saved speech vendors [252](https://github.com/jambonz/jambonz-api-server/pull/252)
- Additional storage options for call recording: AWS compatible, Google cloud storage, Azure cloud storageq
- Add ability to pause and resume transcribe
- Add support for sending SIPREC to multiple SIPREC servers simultaneously
- Add continuous ASR support to transcribe verb.
- Allow an account to use multiple instances of the same speech vendor by assigning a unique label to each.
- Enable customized music on hold
- Allow use of tag in SIPREC application
- Allow custom headers to be passed when using SIPREC for recording
- Transcribe verb supports custom speech vendor
- Add option to prevent forwarding of P-Asserted-Identity header [460](https://github.com/jambonz/jambonz-feature-server/pull/460)
- Add support for sending webhook requests through http proxy
- referHook on dial can now return an application which will be executed on the other leg (e.g. receive a REFER from A leg and run an application to dial the B leg to a new party C)
- Allow tag verb in waitHook response
- Allow pause verb in confirmHook on dial
- Integration with webrtc chrome extension to allow direct calling to apps, users, and queues
- Add option for padding crypto attributes in SDP when outdialing using SRTP
- Add support for speciyfing a redis sentinel password [239](https://github.com/jambonz/jambonz-api-server/pull/239)

#### Bug fixes
- fix background listen request used for recording [#391](https://github.com/jambonz/jambonz-feature-server/pull/391)
- execute status callback async [394](https://github.com/jambonz/jambonz-feature-server/pull/394)
- fix exception that appears in logs if session ends before last call status update
- fix snake case issue on customer data in webhooks [409](https://github.com/jambonz/jambonz-feature-server/pull/409)
- outdial failure causes session to hang [411](https://github.com/jambonz/jambonz-feature-server/pull/411)
- call status event was delayed when stopping background listen [413](https://github.com/jambonz/jambonz-feature-server/pull/413)
- disable bi-directional audio on listen verbs used for call recording [415](https://github.com/jambonz/jambonz-feature-server/pull/415)
- generate trace id before outdial so we can include it in custom header [418](https://github.com/jambonz/jambonz-feature-server/pull/418)
- speech vendor missing in opentelemetry span [437](https://github.com/jambonz/jambonz-feature-server/pull/437)
- fix bug with database caching [443](https://github.com/jambonz/jambonz-feature-server/pull/443)
- caller should be able to enter more than one conference [350](https://github.com/jambonz/jambonz-feature-server/pull/350)
- fixes from deepgram testing
- fix dialogflow TTS bug [518](https://github.com/jambonz/jambonz-feature-server/pull/518)
- better logging of DNS errors 
- Allow sip port to be null on outbound sip gateways, since this will trigger a DNS SRV request to determine ip and port
- Allow a top-level FQDN as an outbound sip gateway host [336](https://github.com/jambonz/jambonz-webapp/pull/336)

#### SQL changes

The following schema changes were made in this release:
```
DROP INDEX speech_credentials_idx_1 ON speech_credentials;
ALTER TABLE speech_credentials ADD COLUMN label VARCHAR(64);
ALTER TABLE applications ADD COLUMN speech_synthesis_label VARCHAR(64);
ALTER TABLE applications ADD COLUMN speech_recognizer_label VARCHAR(64);
ALTER TABLE applications ADD COLUMN use_for_fallback_speech BOOLEAN DEFAULT false;
ALTER TABLE applications ADD COLUMN fallback_speech_synthesis_vendor VARCHAR(64);
ALTER TABLE applications ADD COLUMN fallback_speech_synthesis_language VARCHAR(12);
ALTER TABLE applications ADD COLUMN fallback_speech_synthesis_voice VARCHAR(64);
ALTER TABLE applications ADD COLUMN fallback_speech_synthesis_label VARCHAR(64);
ALTER TABLE applications ADD COLUMN fallback_speech_recognizer_vendor VARCHAR(64);
ALTER TABLE applications ADD COLUMN fallback_speech_recognizer_language VARCHAR(64);
ALTER TABLE applications ADD COLUMN fallback_speech_recognizer_label VARCHAR(64);
ALTER TABLE sip_gateways ADD COLUMN pad_crypto BOOLEAN NOT NULL DEFAULT 0;
ALTER TABLE sip_gateways MODIFY port INTEGER;
CREATE TABLE google_custom_voices
(
google_custom_voice_sid CHAR(36) NOT NULL UNIQUE ,
speech_credential_sid CHAR(36) NOT NULL,
model VARCHAR(512) NOT NULL,
reported_usage ENUM('REPORTED_USAGE_UNSPECIFIED','REALTIME','OFFLINE') DEFAULT 'REALTIME',
name VARCHAR(64) NOT NULL,
PRIMARY KEY (google_custom_voice_sid)
);
CREATE INDEX google_custom_voice_sid_idx ON google_custom_voices (google_custom_voice_sid);
CREATE INDEX speech_credential_sid_idx ON google_custom_voices (speech_credential_sid);
ALTER TABLE google_custom_voices ADD FOREIGN KEY speech_credential_sid_idxfk (speech_credential_sid) REFERENCES speech_credentials (speech_credential_sid) ON DELETE CASCADE;
ALTER TABLE clients ADD COLUMN allow_direct_queue_calling BOOLEAN NOT NULL DEFAULT 1;
ALTER TABLE clients ADD COLUMN allow_direct_user_calling BOOLEAN NOT NULL DEFAULT 1;
ALTER TABLE clients ADD COLUMN allow_direct_app_calling BOOLEAN NOT NULL DEFAULT 1;
```

#### Availability
- Available shortly on AWS Marketplace
- Deploy to Kubernetes using [this Helm chart](https://github.com/jambonz/helm-charts)

**Questions?** Contact us at <a href="mailto:support@jambonz.org">support@jambonz.org</a>