Integrazione di servizi Text-To-Speech di Voice RSS con Asterisk

Asterisk e Freepbx sono notoriamente sinonimo di prodotti ostici ma di qualità con l’enorme vantaggio di non aver costi di licenza.

Il vero paradigma di tutto l’Open Source sembra essere stato per anni l’idea del gratis, quindi se un software non era liberamente scaricabile ed utilizzabile si passava a cercare il successivo, senza badare troppo al fatto se valesse o meno la pena fare quell’investimento economico.

Allo stesso modo, per quanto riguarda software che aggiungono valore alla realizzazione di centralini evoluti, si è sempre cercato di rispettare l’idea che gratuito fosse meglio, per poi trovarsi con prodotti non più aggiornati, mancanza di funzionalità, comportamenti non previsti.

Anche avendo a che fare con Google ed Amazon, per i servizi Text to Speech e Speech to Text, non mi sono mai sentito completamente tranquillo. Succede infatti troppo spesso che i Big del mercato cambino repentinamente idea sui propri prodotti (specialmente quelli che non fanno parte del core business aziendale), modificando policy, condizioni economiche ed infine le API di utilizzo.

Sorge la necessità, specie nelle installazioni maggiormente mission critical, di trovare partner adeguati, con i quali si possa trovare il giusto mix tra funzionalità, costi e relazionamento (cioè l’idea di poter avere un dialogo quasi diretto col fornitore di un software sul quale si basano i propri centralini PBX).

Con questa idea in testa, per uno degli ultimi progetti, abbiamo provato i servizi Text to Speech di Voice RSS, i quali si sono dimostrati ottimi come qualità audio generale e con un ottimo rapporto qualità/prezzo.

La versione gratuita prevede 350 chiamate al giorno al servizio mentre rispettivamente con 5$ e 15$ si ottengono 1.000 e 5.500 chiamate al giorno, queste ultime con uno SLA di 0.5 secondi.

Proprio il SLA è la cosa che mi ha fatto propendere verso questa soluzione, la possibilità cioè di veder definito contrattualmente il livello del servizio.

In questi termini si può rischiare l’utilizzo con decine di connessioni simultanee senza dover per forza fare i conti con lag e problemi di banda.

 

Asterisk Text to Speech con servizi Voice RSS
Asterisk Text to Speech con servizi Voice RSS

Nel codice sottostante, all’interno di un IVR,  si ricava via func_odbc il nome e cognome (${utenza}) del chiamante mediante il suo codice utente della bolletta (${codicecliente})

extensions.conf

exten => s,1,Set(utenza=${ODBC_IVRUTENZA(${codicecliente})})
same=> n,Set(voicercode=it-IT)
same=> n,Set(__translated=”Gentile ,${utenza},”)
same=> n,system(php /var/www/html/tts/voicerss1.php ${translated} ${UNIQUEID} “${voicercode}”)
same=> n,Playback(/var/www/html/tts/${UNIQUEID})

si richiama esternamento lo script php al quale si passano le variabili necessarie che scarica il file audio risultante in

/var/www/html/tts/ ….avente nome (${UNIQUEID})

voicerss1.php

<?php
//en-us fr-fr es-es es-mx
$message=urlencode($argv[1]); //convert spaces if not wont work
$api=”xxxxxxxxxxxxxxxxxxxxxxxxxxx”;
$lang=”it-IT”;
$type=”WAV”;
$format=”8khz_16bit_mono”;
$name=$argv[2];
$url=shell_exec(” curl -o /var/www/html/tts/$name.wav -G -d\”key=$api&hl=$lang&c=$type&f=$format&src=$message\” http://api.voicerss.org”);
echo $url;