{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "uHRhBRiL_nXM" }, "source": [ "# Servicios cognitivos de Speech Recognition" ] }, { "cell_type": "markdown", "metadata": { "id": "XGUSNsyp_nXN" }, "source": [ "## ¿Que son los servicios cognitivos?" ] }, { "cell_type": "markdown", "metadata": { "id": "jOCRhnVl_nXO" }, "source": [ "Crear modelos de Computer Vision que tengan gran precisión y funcionen en una variedad de contextos importante no es una tarea sencilla. Requiren grandes cantidades de datos y experencia en la creación de modelos básados en Deep Learning. A medida que el procesamiento de imagenes se vuelve mas robusto, muchas organizaciones de tecnología han optado por empaquetar estos modelos de alta performance y ofrecerlos como servicios que las organizaciones pueden consumir directamente como un servicio web.\n", "\n", "Azure Cognitive Services es uno de estos servicios, el cual cuenta con una API y librerias que se pueden utilizar en multiples lenguajes para ayudarnos a construir aplicaciones inteligentes sin necesidad de tener habilidades de ciencia de datos ni grandes volumenes de información." ] }, { "cell_type": "markdown", "metadata": { "id": "BQ-o2x6a_nXQ" }, "source": [ "### Creación de una cuenta en Azure" ] }, { "cell_type": "markdown", "metadata": { "id": "09ToTRvq_nXR" }, "source": [ "Hay varias alternativas para utilizar los servicios cognitivos de Azure, pero en nuestro caso crearemos una cuenta de pruebas que tendrá una duracción de 7 días para probar los servicios cognitivos. Esta metodología no requiere de una tarjeta de crédito. Si necesitaran disponer de una cuenta por mayor cantidad de tiempo, es posible crear una cuenta gratuita de Azure que dispone de acceso a los servicios en un Tier Free por 12 meses, sin embargo, este procedimiento requiere la validación del usuario por medio de una tarjeta de crédito." ] }, { "cell_type": "markdown", "metadata": { "id": "K3t6G1Rc_nXS" }, "source": [ "Para crear una cuenta, utilicen el siguiente link: https://azure.microsoft.com/es-es/try/cognitive-services/" ] }, { "cell_type": "markdown", "metadata": { "id": "IxYD_I-s_nXS" }, "source": [ "Luego debemos indicar que tipo de cuenta utilizaremos. en nuestro caso, especificaremos una cuente de tipo Trial que durará por 7 dias desde el momento de creación:\n", "\n", "![Crear una cuenta de invitado](https://github.com/santiagxf/M72109/blob/master/docs/vision/_images/free-trial.png?raw=1)" ] }, { "cell_type": "markdown", "metadata": { "id": "Z4_tzm4s_nXT" }, "source": [ "Luego deberemos aceptar los terminos y condiciones para utilizar el servicio y finalmente iniciar sesión utilizando alguna de las opciones que están disponibles. Si no disponen de una cuenta Microsoft, pueden crearse una desde https://signup.microsoft.com y eligiendo la opción Crear una Cuenta Microsoft." ] }, { "cell_type": "markdown", "metadata": { "id": "5FmSoHp0_nXT" }, "source": [ "### Obtener las claves de acceso a los servicios" ] }, { "cell_type": "markdown", "metadata": { "id": "Z9lFZsn__nXU" }, "source": [ "Una vez que activamos nuestra cuenta trial, obtendremos 2 puntos de información importante:\n", " - Puntos de conexión: Es la URL que deberemos de indicar para acceder al servicio\n", " - Claves: Estas claves son el mecanismo de autenticación que utilizaremos.\n", "\n", "Necesitaremos ambas piezas de información para continuar. Si no pueden encontrar sus claves, pueden acceder a https://azure.microsoft.com/es-es/try/cognitive-services/my-apis y debería llevarlos a una pagina similar a la siguiente donde están especificados ambos valores:\n", "\n", "![Obtener clases de acceso](https://github.com/santiagxf/M72109/blob/master/docs/audio/_images/speech-key.png?raw=1)" ] }, { "cell_type": "markdown", "metadata": { "id": "GBkZ406p_nXU" }, "source": [ "## Creación de un cliente para la utilización de la API de speech" ] }, { "cell_type": "markdown", "metadata": { "id": "xT7hp2v1_nXV" }, "source": [ "### Instalación del SDK" ] }, { "cell_type": "markdown", "metadata": { "id": "zwg-HLyY_nXV" }, "source": [ "Instalamos las librerias del SDK junto con algunas otras que necesitaremos" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GgcC8gK0_nXW" }, "outputs": [], "source": [ "!pip install azure-cognitiveservices-speech librosa" ] }, { "cell_type": "markdown", "metadata": { "id": "xntRVQn6_nXc" }, "source": [ "Importamos las clases con las que vamos a trabajar" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "isS42pZF_nXd" }, "outputs": [], "source": [ "import os\n", "import librosa\n", "import azure.cognitiveservices.speech as speechsdk" ] }, { "cell_type": "markdown", "metadata": { "id": "RN1s0LGX_nXf" }, "source": [ "Especificación de las credenciales para operar el servicio. Aquí deberemos utilizar las credenciales que generaron desde la página del portal de Microsoft Azure" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "1Rtc5RfK_nXf" }, "outputs": [], "source": [ "subscription_key = \"\"\n", "endpoint = \"https://westus.api.cognitive.microsoft.com\"\n", "region='westus'" ] }, { "cell_type": "markdown", "metadata": { "id": "W4rhx-1H-HFd" }, "source": [ "Indiquemos el directorio en donde están nuestros archivos de ejemplo" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "D7_aPFqJ-HFd" }, "outputs": [], "source": [ "rootdir='./Samples'" ] }, { "cell_type": "markdown", "metadata": { "id": "svo-pa2z-HFe" }, "source": [ "Descarguemos un archivo de ejemplo:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "bW_Ienkg-HFe" }, "outputs": [], "source": [ "!wget -N https://raw.githubusercontent.com/santiagxf/M72109/master/Audio/Samples/Back_To_The_Future_3648_3658_6.wav --directory-prefix ./Samples/" ] }, { "cell_type": "markdown", "metadata": { "id": "1XVUGREm-HFe" }, "source": [ "Especificamos un archivo puntual para analizar" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "_JwHrMKS-HFf" }, "outputs": [], "source": [ "wave_file_name='Back_To_The_Future_3648_3658_6.wav'\n", "wave_file=os.path.join(rootdir, wave_file_name)" ] }, { "cell_type": "markdown", "source": [ "Reproduzcamos el archivo:" ], "metadata": { "id": "cA-NvYuT-ZeJ" } }, { "cell_type": "code", "source": [ "sample_rate = 44100\n", "wave = librosa.load(wave_file, sr=sample_rate)" ], "metadata": { "id": "9MzOSUAp-OOe" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "from IPython.display import Audio\n", "import numpy as np\n", "\n", "Audio(wave[0].astype(np.float32), rate=sample_rate)" ], "metadata": { "id": "C1xUnxb--Mnn", "outputId": "b2551b38-54be-4fce-a6c5-3f39db5f99c6", "colab": { "base_uri": "https://localhost:8080/", "height": 76 } }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " " ] }, "metadata": {}, "execution_count": 20 } ] }, { "cell_type": "markdown", "source": [ "Creamos una configuración para ejecutar el reconocimiento de audio. Esta API tiene varios modos de operar y puede trabajar tanto con archivos de audio e incluso hacer" ], "metadata": { "id": "lFZnp6W__OuA" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "38HwDliy_nXj" }, "outputs": [], "source": [ "speech_config = speechsdk.SpeechConfig(subscription=subscription_key, region=region)\n", "audio_config = speechsdk.AudioConfig(filename=wave_file)" ] }, { "cell_type": "markdown", "metadata": { "id": "TVfDLpYP-HFg" }, "source": [ "Cofiguramos como el servicio debe manejar palabras que son inapropiadas para el lenguaje. En este caso los enmascaremos (asteriscos)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "2Xo3rRRt-HFg" }, "outputs": [], "source": [ "speech_config.set_profanity(speechsdk.ProfanityOption.Masked)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ij3zztKK-HFh" }, "outputs": [], "source": [ "speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "h6phly4Q-HFh" }, "outputs": [], "source": [ "result = speech_recognizer.recognize_once()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "zA6QABZ7-HFi" }, "outputs": [], "source": [ "if result.reason == speechsdk.ResultReason.RecognizedSpeech:\n", " print(\"Resultado del reconocimiento: {}\".format(result.text))\n", "elif result.reason == speechsdk.ResultReason.NoMatch:\n", " print(\"No se pudo reconocer el texto: {}\".format(result.no_match_details))\n", "elif result.reason == speechsdk.ResultReason.Canceled:\n", " cancellation_details = result.cancellation_details\n", " print(\"Reconocimiento cancelado por la siguiente razón: {}\".format(cancellation_details.reason))\n", " if cancellation_details.reason == speechsdk.CancellationReason.Error:\n", " print(\"Errores: {}\".format(cancellation_details.error_details))" ] } ], "metadata": { "kernelspec": { "display_name": "Cognitive Services (cognitive-py37)", "language": "python", "name": "cognitive-py37" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" }, "colab": { "provenance": [] } }, "nbformat": 4, "nbformat_minor": 0 }