#CognitiveServices – How to create audio files for Custom Speech Service (#CRIS)

Hello!

A few days ago I was asked about an easy way to create audio files to be used as datasets in Custom Speech Service (CRIS). As I mentioned in a previous post, the audio files must have special features, so it is important to create them correctly.

Note: the files are WAVs files, mono and another pair of details makes it not easy to create them in a single step.

Although there are several ways to create these files, this is the one I use and it works.

  • To record the audio I use an app that comes by default in Windows: Voice Recorder

Clipboard02

  • I guess I don’t need to explain how the app works. Just press the microphone button. Nor do we expect many options in the Settings section.

Clipboard03

  • Once we have recorded a session, we can access the list of recordings. If we see the record path of the file we will see that it is recorded with the name “Recording.m4a”

Clipboard04.png

  • Now is the time to find a way to convert M4A files to WAV. In this case I use VLC (link). The software is well known, so I will not write a lot about it. In VLC Select the option “Media // Convert / Save …”

Clipboard06

  • Select a file and press the option “Convert”

Clipboard08

  • In this step we must create a profile with the information needed to create compatible CRIS compatible files.
  • I created a profile called “WAV Cris 02” with the following configurations
  • Encapsulation: WAV

Clipboard09

  • Audio codec with the values required by CRIS

Clipboard10

  • Now we can use this profile to convert our M4A file to WAV

Clipboard11

  • Ready! We have a WAV file which is compatible with CRIS requirements and we can use the file for our data models.

Happy coding ! 😀

Saludos @ Burlington

El Bruno

References

Advertisements

#CognitiveServices – Cómo crear archivos de Audio para utilizar en Custom Speech Service (#CRIS)

Hola !

Hace unos días me preguntaron sobre una forma fácil de crear archivos de audio para usar como DataSets en Custom Speech Service (CRIS). Como ya comenté en un post anterior, los archivos de audio que se utilizan deben tener unas características especiales, con lo que es importante crearlos de forma correcta.

Nota: Que sean WAVs, en mono y otro par de detalles hace que no sea fácil crearlos en un solo paso.

Si bien hay varias formas de crear estos archivos, esta es la que utilizo yo y funciona.

  • Para grabar el audio utilizo una app que viene por defecto en Windows: Voice Recorder

Clipboard02

 

  • Supongo que no hace falta que explique cómo funciona la app. Solo hay que presionar el boton del micrófono. Tampoco esperemos muchas opciones en la sección Settings.

Clipboard03

  • Una vez que hemos grabado, podremos acceder a la lista de grabaciones. Si vemos la ruta de grabación del archivo veremos que el mismo se graba con el nombre “Recording.m4a”

Clipboard04.png

  • Ahora es momento de buscar una forma de convertir arvhivos m4a a wav. En este caso yo uso VLC (link). Cómo el software es bastante conocido, no repasaré los detalles del mismo.
  • En VLC seleccionamos la opción “Media // Convert / Save …”

Clipboard06

  • Seleccionamos un archivo y presionamos la opción “Convert”

Clipboard08

  • En este paso debemos crear un perfil con la información necesaria para crear audios compatibles para CRIS.
  • Yo he creado un perfil llamado “Wav Cris 02” con las siguientes configuraciones
  • Encapsulation: WAV

Clipboard09

  • Audio Codec con los valores que requieren los audios de CRIS

Clipboard10

  • Ahora ya podemos usar este perfil para convertir nuestro archivo m4a a wav

Clipboard11

  • Listo ! ya tenemos un archivo WAV que es compatible con los requerimientos que proponen en CRIS y podemos utilizar el mismo para nuestros modelos de datos.

Happy coding ! 😀

Saludos @ Burlington

El Bruno

References

#CognitiveServices – Sample Console App to perform audio analysis using Custom Speech Service (#CRIS)

Hi !

Yesterday I wrote a post on how to create and publish an Acoustinc Model in Custom Speech Service to perform a text-to-speech process (TTS). The next step is to add some C# code in an App to use this service. For this sample I will use a sample wav file with single sentencente. When I try this file in CRIS test console I get the following result:

Clipboard07

So, it’s working. Let’s create a Console App and add the NuGet package for our platform target.

Clipboard01

Important: By default the platform configuration is set to “Any CPU”, we need to change this to x86 or x64 so we can use the Speech NuGet package without any issues.

Clipboard02

So, big surprise, this package is the same for CRIS and for BING Speech recognition (Thanks to Victor for this tip!). There is a sample WPF implementation in the GitHub repo which uses the Bing keys and architecture, I’ll continue with my CRIS sample.

Let’s work in the sample Console App. There are 3 main sections here

  • Initialize the STT client
  • Process the wav file
  • Get and process CRIS result

The next pieces of code are part sample App.

  • In the Main section I create and init the STT client using the information of my previous post
  • To process the wav file, we open and send the file using small chunks to CRIS
  • Then we need to subscribe to client events
  • In this events me show some of the client received information in the Console App

We get the following result from the running app.

Clipboard04

We can download the source code from GitHub (link)

Greetings @ Toronto (-5!)

El Bruno

References

#CognitiveServices – Console App de ejemplo para analizar audios con Custom Speech Service (#CRIS)

 

Hola !

Ayer publiqué un paso a paso sobre como crear un modelo de reconocimiento de audio a texto con Custom Speech Service. El siguiente paso es un ejemplo de código sobre cómo utilizar el mismo. Para este ejemplo utilizo un archivo wav con un simple párrafo. Desde la consola de prueba de CRIS puedo ver que el mismo se funciona bien.

Clipboard07

Lo siguiente es crear una Console App y agregar el paquete NuGet correspondiente a nuestra arquitectura.

Clipboard01

Importante: Es necesario cambiar la arquitectura de nuestra app a x86 o x64 para poder utilizar el package sin problemas.

Clipboard02

El paquete es el de reconocimiento de texto general utilizando BING (gracias a Victor por el tip!). En caso de querer ver la implementación en WPF, en el repo de GitHub del paquete podemos ver la misma.

Volviendo a la app de Consola, lo siguiente es dar forma a nuestra app. La misma se divide en 3 partes principales

  • Inicialización del cliente de STT (speech-to-text)
  • Proceso del archivo wav
  • Proceso del resultado

El siguiente código es el ejemplo de la App. En el mismo podemos ver

  • Como en el main se inicializa el cliente de STT con la información de CRIS que creamos en el post anterior
  • Nos suscribimos a los eventos de procesamiento
  • En estos eventos mostramos la información en la consola
  • Abrimos un stream desde el archivo wav y enviamos el mismo en chunks para que lo procese CRIS

 

La app en ejecución nos muestra el siguiente resultado.

Clipboard04

El código fuente se puede descargar desde GitHub (link)

Saludos @ Toronto (-5!)

El Bruno

References

#CognitiveServices – Tutorial to create and publish a complete model in Custom Speech Service (#CRIS)

Hi !

This is my 3rd or 4th time on this, so I better write about this so I won’t forget next time. So, let´s start from the beggining, Custom Speech Service definition (we used to know this as CRIS).

The Custom Speech Service lets you create custom speech-to-text models, tailored to your application’s environment, user population, and vocabulary.

So, I’ll by pass deep technical details, and I’ll share the necessary steps to build and publish a model to allow a speech to text conversion.

  • We need to start in a well know place: Azure portal and generate a Key for CRIS. We select New and we filter using Cognitive Services, then we select the option to add a new “Custom Speech Service”.

Clipboard03

  • Important, here we need to copy and store the keys values

Clipboard06

  • Now we can go to CRIS homepage, and start our model creation. There is a main menu “Custom Speech” which allows us to work with the components of the service.

Clipboard08

  • Let’s start with the files that we will use as the basis for creating the acoustic model. Select the option “Adaptation data”. In this section we can create 3 types of data elements
    • Acoustics Datasets
    • Language Datasets
    • Pronunciation Datasets
  • The first 2 are the minimums needed for a functional model. Let’s start by uploading a couple of files into “Acoustic Datasets”. In this section we must define the name and description of this data set and also upload 2 files
    • Transcription file is a plain text file, where we specify the filename (WAV) and the text specified in the same
    • Audio files is a zip file with all the audio files (WAV) that we upload as a sample

Clipboard11

  • In this step is important to read and understand the supported formats for the audi files. All the specifications are detailed in CRIS documentation (link).
Property Value
File Format RIFF (WAV)
Sampling Rate 8000 Hz or 16000 Hz
Channels 1 (mono)
Sample Format PCM, 16 bit integers
File Duration 0.1 seconds < duration < 60 seconds
Silence Collar > 0.1 seconds
Archive Format Zip
Maximum Archive Size 2 GB
  • The next step is to upload a text file with samples of the phrases expected in the acoustic model that we will create. This is similar to the intent we process in LUIS. This file is a text file, and it must have an expected attempt in each line.

Clipboard13

  • And now that we have the basic files, we can create an Acoustic Model. For that we select the option “Acoustic models” from the top menu and create a new one using the elements that we uploaded previously.

Important: Depending on the size of the files that we upload as initial data, the complete process may take a couple of minutes.

  • Once you have created the acoustic model with the base files, you will be able to see some details of it. In the following image we can see that the accuracy that was obtained with the audio and the model is 88% (there is a 11.68% of errors detected)

Clipboard16

  • In the “Accuracy Tests” section we can see the recognized text in each audio file and the expected text in it.

Clipboard18

  • And it’s time to deploy the model to be able to use it in production. We can create a deployment model in the “Deployments” menu option
  • Once created we can see that we already have the URLs to use it from an App (about this I will write in another post)
  • And we also have the option to upload an audio file to test our model. Yes, with the specific format and touches noses that requires CRIS !

Clipboard02

In the next post, a bit of C # code to see how we can use this service from an application.

Happy Coding ! 🙂

Greetings @ Toronto (-6!)

El Bruno

References

#CognitiveServices – Los N pasos que debes seguir para crear tu modelo en Custom Speech Service (#CRIS)

Hola !

Es la 3ra o 4ta vez que hago esto y voy a usar este post como reminder de los pasos que debo seguir. Empecemos por explicar que es Custom Speech Service, antes conocido como CRIS.

Custom Speech Service es un servicio parte de Microsoft Cognitive Services que permite crear modelos personalizados de voz a texto, basados en un dominio de aplicación específico, que además soporta personalizaciones y especiales para diferentes acentos, cuestiones ambientales y cambios de vocabulario.

Pues bien, ahorrándome los detalles técnicos, los pasos para crear y publicar un modelo de reconocimiento de audio a texto son los siguientes.

  • Comenzamos por un clásico, en el portal de Azure, necesitamos generar una Key. En la opción New filtramos por Cognitive Services y veremos la opción para agregar “Custom Speech Service”.

Clipboard03

  • Es importante en este paso copiar los valores de las Keys que luego utilizaremos en CRIS

Clipboard06

  • Lo siguiente es ir al home de CRIS y desde allí comenzaremos a trabajar. El menú principal de “Custom Speech” nos presenta los elementos que podemos crear en este servicio.

Clipboard08

  • Comenzamos por los archivos que serviran como base para crear el modelo acústico. Seleccionamos la opción “Adaptation Data”. En esta sección podemos crear 3 tipos de elementos de datos
    • Acoustics Datasets
    • Language Datasets
    • Pronunciation Datasets
  • Los 2 primeros son los mínimos necesarios para un modelo funcional. Comencemos por subir un par de archivos en “Acoustic Datasets”. En esta sección debemos definir el nombre y descripción de este set de datos y además subir 2 archivos
    • Transcription File es un archivo de texto plano, donde específicamos el nombre del archivo (wav) y el texto que se especifica en el mismo
    • Audio Files es un archivo zip con todos los archivos de audio (wav) que subiremos como muestra

Clipboard11

  • En este paso es muy importante tener en cuenta los formatos de audio soportados y otras especificaciones que se pueden leer aquí (link).
Property Value
File Format RIFF (WAV)
Sampling Rate 8000 Hz or 16000 Hz
Channels 1 (mono)
Sample Format PCM, 16 bit integers
File Duration 0.1 seconds < duration < 60 seconds
Silence Collar > 0.1 seconds
Archive Format Zip
Maximum Archive Size 2 GB
  • El siguiente paso es subir un archivo con ejemplos de las frases esperadas en el modelo acústico que crearemos. Esto es parecido a los intents que procesamos en LUIS. Este archivo es un archivo de texto, y el mismo debe poseer un intento esperado por línea.

Clipboard13

  • Y ahora que tenemos los archivos básicos, ya podemos crear un modelo acústico. Para eso seleccionamos la opción “Acoustic Models” del menú superior y creamos uno nuevo utilizando los elementos que subimos anteriormente.

Importante: Dependiendo del tamaño de los archivos que subamos como datos iniciales, el procesamiento de los mismos puede tardar un par de minutos.

  • Una vez creado el modelo acústico con los archivos de base, podremos ver algunos detalles del mismo. En la siguiente imagen podemos ver que la precisión que se obtuvo con los audios y el modelo es de un 88% (hay un 11.68% de errores detectados)

Clipboard16

  • En la sección “Accuracy Tests” podemos ver el texto reconocido en cada archivo de audio y el texto esperado en el mismo.

Clipboard18

  • Y llega el momento de desplegar el modelo para poder utilizarlo en producción. Podemos crear un modelo de despliegue en la opción de menu “Deployments”
  • Una vez creado podremos ver que ya tenemos las urls para utilizarlo desde una app (sobre esto escribiré en otro post)
  • Y además tenemos la opción de subir un archivo de audio para probar nuestro modelo. Eso sí, con el formato específico y toca narices que requiere CRIS !

Clipboard02

En el próximo post, un poco de código C# para ver cómo podemos utilizar este servicio desde una aplicación.

Happy Coding ! 🙂

Saludos @ Toronto (-6!)

El Bruno

References

#CognitiveServices – Cris, Luis and #Bots !

bots-bots-everywhere

Hello!

Yesterday I realized that while I was writing a couple of posts about Microsoft Bot Framework, I never wrote about LUIS (Language Understanding Intelligent Service, so that’s some work for the future)

But today is all about CRIS, Custom Recognition Intelligent Service. The service is part of the Speech Services of Cognitive Services, and it has been opened in preview mode to be used in AZURE publicly. You only need an Azure account to test the service.

Please don’t think on CRIS as a simple Speech to Text service, it is much more. CRIS has several components, and the most important are 2: the acoustic model and the language model. These 2 models have been optimized for common usage scenarios, such interact with Cortana in a smartphone, Tablet, or PC, search the Web by voice or send text messages.

The language model allows us to add definitions within the context of the app that will use this service to make it more precise. On the other hand, the model enables an app to do a better job recognizing speech in specific environments or when it’s working with weird populations of users. For example, in an app designed for use in a warehouse or factory voice-enabled, a custom acoustic model can recognize with more precision speech in the presence of the sounds found in these environments. As always, in both cases, so the models are accurate, a quite extensive “training” work is necessary.

The best way to start is to navigate to the CRIS homepage and start creating a language definition to work with it. In addition, the examples on GitHub also provide examples to see how to use this service in a “simple for an app of biology” model.

Greetings @ Calgary

El Bruno

  • Custom Speech Service, Home
  • Cognitive Custom Speech Service, Git

#CognitiveServices – Cris, Luis y #Bots !

bots-bots-everywhere

Hola !

En estos momentos debo estar viajando para Calgary, sin embargo ayer me dí cuenta que el el par de posts que escribí sobre Microsoft Bot Framework, nunca escribí sobre LUIS (Language Understanding Intelligent Service, y aquí me dejo un post para el futuro)

Hoy toca darle un poco de protagonismo a CRIS, Custom Recognition Intelligent Service. Este servicio que es parte de los Speech Services de Cognitive Services, ha sido abierto en modo preview públicamente para poder ser utilizado en AZURE. Para poder comenzar a probar solo es necesario una cuenta de Azure.

A simple vista esto parece un simple servicio de Speech to Text, sin embargo es mucho más. CRIS posee varios componentes, y los más importantes son: el modelo acústico y el modelo de lenguaje. Estos 2 modelos se han optimizado para escenarios de uso comunes, como interactuar con Cortana en su teléfono inteligente, tableta o PC, buscar en la Web por voz o enviar mensajes de texto.

El modelo de lenguaje nos permite agregar definiciones propias del contexto de la app que utilizará este servicio para que el mismo sea mas preciso. Por su parte el modelo permite al sistema realizar un mejor trabajo reconociendo el habla en entornos particulares o de particulares poblaciones de usuarios. Por ejemplo, en una app habilitada para voz diseñada para su uso en un almacén o una fábrica, un modelo acústico personalizado puede reconocer con más precisión el habla en presencia de los ruidos encontrados en estos entornos. Como siempre, en ambos casos para que los modelos sean precisos, hace falta un trabajo de “entrenamiento” bastante extensivo.

Pues lo mejor, es ir a la página principal de CRIS y una vez dada de alta una cuenta, comenzar a crear una definición de lenguajé para trabajar con el mismo. Además, los ejemplos en GitHub también aportan ejemplos para ver como utilizar este servicio en un modelo “simple para una app de biología”.

Saludos @ Toronto

El Bruno

  • Custom Speech Service, Home
  • Cognitive Custom Speech Service, Git