(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo implementar clasificación de audio con Azure AI Speech: paso a paso

João Barros 24 de August de 2026 4 min de lectura

Este tutorial muestra cómo crear una canalización simple de clasificación de audio con Azure AI Speech para diferenciar comandos o sonidos (por ejemplo: ‘clap’, ‘applause’, ‘speech’). Tener un clasificador de audio es útil para automatización, accesibilidad y monitorización en aplicaciones reales.

Requisitos previos

  • Cuenta Azure con suscripción activa y Azure AI Speech configurado (key y endpoint).
  • Python 3.8+ instalado y pip.
  • Ficheros de audio WAV en una estructura organizada por carpetas (una carpeta por clase).
  • Bibliotecas: azure-cognitiveservices-speech, librosa, scikit-learn, soundfile.
  • Editor de texto/IDE y línea de comandos básica.

Paso 1: Por qué y elección del enfoque

Clasificar audio puede hacerse con modelos preentrenados o creando un clasificador simple basado en features (MFCCs) seguido de un clasificador clásico (p. ej.: RandomForest). Para un tutorial introductorio usamos extracción de MFCC con librosa y un clasificador sklearn — más ligero y explicable antes de migrar a deep learning o Custom Speech.

Paso 2: Preparar entorno e instalar dependencias

Instale las bibliotecas necesarias. Esto incluye el SDK de Azure Speech si pretende integrar grabación o transcripción, pero el núcleo de la clasificación usa librosa y scikit-learn.

python -m pip install azure-cognitiveservices-speech librosa scikit-learn soundfile numpy

Paso 3: Estructurar los datos de audio

Organice los ficheros WAV así: dataset/clap/*.wav, dataset/applause/*.wav, dataset/speech/*.wav. Asegúrese de que los ficheros tienen la misma tasa de muestreo (p. ej.: 16 kHz) o serán convertidos al cargarlos.

Paso 4: Extraer features (MFCC) del audio

Extraemos MFCCs porque resumen bien características tímbricas. Vamos a cargar cada fichero, calcular MFCC medios a lo largo del tiempo y construir X (features) y y (labels).

import os
import numpy as np
import librosa

def extract_features(file_path, n_mfcc=13):
    y, sr = librosa.load(file_path, sr=16000)
    mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=n_mfcc)
    return np.mean(mfcc, axis=1)

def load_dataset(root):
    X, y = [], []
    classes = sorted(os.listdir(root))
    for label in classes:
        folder = os.path.join(root, label)
        if not os.path.isdir(folder):
            continue
        for f in os.listdir(folder):
            if f.lower().endswith('.wav'):
                path = os.path.join(folder, f)
                features = extract_features(path)
                X.append(features)
                y.append(label)
    return np.array(X), np.array(y)

# Ejemplo de uso
# X, y = load_dataset('dataset')

Paso 5: Entrenar y evaluar un clasificador

Usamos un RandomForest para comenzar. Hacemos split entrenamiento/prueba y medimos accuracy y matriz de confusión para ver errores comunes (confusión entre clases similares).

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix

X, y = load_dataset('dataset')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

pred = clf.predict(X_test)
print('Accuracy:', accuracy_score(y_test, pred))
print('Confusion matrix:\n', confusion_matrix(y_test, pred))

Paso 6: Integrar con Azure AI Speech (opcional)

Si desea capturar audio en tiempo real o usar el servicio de grabación, utilice azure-cognitiveservices-speech para grabar y después aplicar la canalización de extracción+clasificación al buffer capturado.

import azure.cognitiveservices.speech as speechsdk

speech_key = 'SUA_SPEECH_KEY'
service_region = 'SUA_REGION'

speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)
audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True)
rec = speechsdk.AudioConfig(use_default_microphone=True)

# Ejemplo simple: graba 3s y guarda como WAV local (puede usar para clasificar)
recorder = speechsdk.audio.AudioRecorder(audio_config)
# Notas: el SDK tiene clases para grabación; aquí referimos a la integración general.

Verificar el resultado

Confirme que la accuracy es aceptable (p. ej.: >70% en un dataset simple). Revise la matriz de confusión para clases muy confundidas. Pruebe con nuevos ficheros WAV no vistos y vea si el modelo predice correctamente. Si utiliza el micrófono vía Azure AI Speech, grabe audio corto y páselo por el mismo extract_features -> clf.predict.

Conclusión

Ha construido un clasificador de audio simple con extracción de MFCC y RandomForest, y sabe cómo integrar grabación vía Azure AI Speech. Próximos pasos: usar data augmentation, probar modelos de deep learning (CNN/LSTM) o experimentar con Custom Speech para modelos preentrenados. Consejo: si las clases son parecidas, aumente el número de MFCCs o pruebe features adicionales (chroma, spectral contrast).