Diferencia entre revisiones de «Omnisuite STT y TTS»

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda
 
(No se muestran 51 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
== Introducción ==
 
Se han desarrollado conectores propios para
 
Se han desarrollado conectores propios para
 
:* Speech To Text (STT)
 
:* Speech To Text (STT)
Línea 6: Línea 7:
 
:* Evelenlabs
 
:* Evelenlabs
 
:* Google
 
:* Google
 
+
<br>
La configuración eficiente es usar STT de ElevenLabs y TTS de Google
+
<div style="background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px">
 
+
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''
 +
</div>
 +
<br>
 
== ElevenLabs ==
 
== ElevenLabs ==
 
Se dispone de los programas
 
Se dispone de los programas
 
:* <code>/opt/omnisuite/bin/omnisuiteSTT11p</code> para '''Speech to Text (STT)'''
 
:* <code>/opt/omnisuite/bin/omnisuiteSTT11p</code> para '''Speech to Text (STT)'''
 
:* <code>/opt/omnisuite/bin/omnisuiteTTS11p</code> para '''Text To Speech (TTS)'''
 
:* <code>/opt/omnisuite/bin/omnisuiteTTS11p</code> para '''Text To Speech (TTS)'''
<br>
 
que deberán ser invocado desde un comando "system" de Cally Square
 
<br>
 
::[[Archivo:System STT 11labs.png|550px|miniaturadeimagen|no|Invocación a TTS de 11labs]]
 
 
<br>
 
<br>
 
En la invocación para '''Speech to Text''' incluiremos
 
En la invocación para '''Speech to Text''' incluiremos
* Fichero ".ini"
+
:* Fichero ".ini"
* <code>stt</code> --> comando para speech a text
+
:* <code>stt</code> --> comando para speech a text
* Modelo a usar
+
:* Modelo a usar
* idioma a usar  
+
:* idioma a usar  
* fichero a convertir a texto
+
:* fichero a convertir a texto
 +
Ejemplo STT
 +
: Invocación
 +
::<code>/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav </code>
 +
: Respuesta
 +
<pre style="background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;">
 +
{
 +
  "errorNum": 0,
 +
  "errorCad": "OK",
 +
  "text": "¿En qué más puedo ayudarte?",
 +
  "language": "es",
 +
  "elevenlabs_language": "spa",
 +
  "confidence": 100
 +
}
 +
 
 +
</pre>
 
<br>
 
<br>
'''Ejemplo'''
+
En la invocación para '''Text to Speech''' incluiremos
:: <code>/usr/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es /var/lib/asterisk/sounds/{id_llamada}_stt.wav | jq -r '.text'</cde>
+
:* Fichero ".ini"
 +
:* <code>tst</code> --> comando para speech a text
 +
:* idioma a usar
 +
:* Modelo a usar
 +
:* Voz a usar
 +
:* Fichero donde quedará el audio obtenido
 +
:* Texto a convertir
 +
Ejemplo TTS
 +
: Invocación
 +
::<code> /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw "{vflow_respuesta}" </code>
 
<br>
 
<br>
En el ejemplo vemos que del resultado obtenido "parseamos" solo el campo <code>'.text'</code>
+
:Respuesta
 +
<pre style="background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;">
 +
{
 +
  "errorNum": 0,
 +
  "errorCad": "OK"
 +
}
 +
</pre>
 
<br>
 
<br>
El programa lleva asociado un fichero <code>/etc/MDtel/elevenlabs.ini</code>, que contiene:
+
El fichero ".ini" (por defecto <code>/etc/MDtel/elevenlabs.ini</code>) contiene:
 
:* Una sección <code>comun</code> en la que habrá que cambiar el <code>api_key</code>
 
:* Una sección <code>comun</code> en la que habrá que cambiar el <code>api_key</code>
 
:* Una sección <code>stt</code>, para "speech to text" en la que se configurarán los keyterms del proyecto
 
:* Una sección <code>stt</code>, para "speech to text" en la que se configurarán los keyterms del proyecto
Línea 62: Línea 91:
 
to_ms=10000
 
to_ms=10000
 
</pre>
 
</pre>
 +
 +
== Google ==
 +
 +
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==
 +
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo "Google Cloud TTS" o "OpenAI Whisper"
 +
<br>
 +
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:
 +
<br>
 +
* Para STT:
 +
::* (Opcional) una caja "system" que reproduzca un pitido
 +
::* Una caja "system" que grabe el audio del usuario
 +
::* Una caja "system" que invoque al STT con dicho audio grabado
 +
<br>
 +
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con "cajas mdtel"]]
 +
<br>
 +
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de "beep"]]
 +
<br>
 +
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]
 +
<br>
 +
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]
 +
<br>
 +
* Para TTS:
 +
::* Una caja "system" que invoca al TTS y deja el audio generado en un fichero
 +
::* Una caja "system" que reproduce el audio
 +
<br>
 +
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con "cajas mdtel"]]
 +
<BR>
 +
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''
 +
<br>
 +
<div style="background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px">
 +
'''⚠️ ATENCION !!'''
 +
<br>
 +
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''
 +
</div>
 +
<br>
 +
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]
 +
<br>

Revisión actual del 14:31 14 may 2026

1 Introducción

Se han desarrollado conectores propios para

  • Speech To Text (STT)
  • Text To Speech (TTS)


Para los proveedores

  • Evelenlabs
  • Google


La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google


2 ElevenLabs

Se dispone de los programas

  • /opt/omnisuite/bin/omnisuiteSTT11p para Speech to Text (STT)
  • /opt/omnisuite/bin/omnisuiteTTS11p para Text To Speech (TTS)


En la invocación para Speech to Text incluiremos

  • Fichero ".ini"
  • stt --> comando para speech a text
  • Modelo a usar
  • idioma a usar
  • fichero a convertir a texto

Ejemplo STT

Invocación
/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es /var/lib/asterisk/sounds/{id_llamada}_stt.wav
Respuesta
{
  "errorNum": 0,
  "errorCad": "OK",
  "text": "¿En qué más puedo ayudarte?",
  "language": "es",
  "elevenlabs_language": "spa",
  "confidence": 100
}


En la invocación para Text to Speech incluiremos

  • Fichero ".ini"
  • tst --> comando para speech a text
  • idioma a usar
  • Modelo a usar
  • Voz a usar
  • Fichero donde quedará el audio obtenido
  • Texto a convertir

Ejemplo TTS

Invocación
/opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw "{vflow_respuesta}"


Respuesta
{
  "errorNum": 0,
  "errorCad": "OK"
}


El fichero ".ini" (por defecto /etc/MDtel/elevenlabs.ini) contiene:

  • Una sección comun en la que habrá que cambiar el api_key
  • Una sección stt, para "speech to text" en la que se configurarán los keyterms del proyecto
  • Una sección tts, para "text to speech"


[comun]
proxy=no
api_key=APIKEYDELPROYECTO

[stt]
# enable_logging=false solo enterprise
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true
to_ms=10000
# temperature=0.0 a 2.0
temperature=0.1
# keyterms_XX: pueden estar todos vacios o no existir. 00<=XX<=09
keyterms_00=
keyterms_01=
keyterms_02=
keyterms_03=
keyterms_04=
keyterms_05=
keyterms_06=
keyterms_07=
keyterms_08=
keyterms_09=

[tts]
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000
to_ms=10000

3 Google

4 Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)

En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo "Google Cloud TTS" o "OpenAI Whisper"
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:

  • Para STT:
  • (Opcional) una caja "system" que reproduzca un pitido
  • Una caja "system" que grabe el audio del usuario
  • Una caja "system" que invoque al STT con dicho audio grabado


Speech To Text con "cajas mdtel"


Reproducción de "beep"


Grabación de audio a transcribir


Invocación a transcripción


  • Para TTS:
  • Una caja "system" que invoca al TTS y deja el audio generado en un fichero
  • Una caja "system" que reproduce el audio


Texto to speech con "cajas mdtel"


PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C

⚠️ ATENCION !!

Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados


Ejemplo para borrar archivo temporal TTS