Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Etiquetar palabras habladas en señales de audio mediante API externa

En este ejemplo se muestra cómo etiquetar palabras habladas en .Etiquetador de señales En el ejemplo se utiliza el software IBM® Watson Speech to Text API y Audio Toolbox™. Consulte las instrucciones sobre:Speech-to-Text Transcription (Audio Toolbox)

  1. Descarga de Audio Toolbox speech2text funcionalidad ampliada, disponible en MATLAB® Central.

  2. Configuración de IBM Watson Speech API, ofrecida a través de IBM Cloud Services. Debe crear una cuenta de IBM Cloud, una instancia de servicio Speech to Text e ir al panel de servicio y copiar sus credenciales: clave de API y valores de URL. Consulte la documentación de IBM para obtener más detalles.Tutorial de introducción

Cargar datos de voz

Cargue un archivo de datos de audio que contenga la frase "Oak is strong, and also gives shade" hablado por una voz masculina. La señal se muestrea a 44.100 Hz.

[y,fs] = audioread('oak.m4a');  % To hear, type soundsc(y,fs)
  1. Inicie y arrastre la señal a la tabla Signal.Analizador de señales Seleccione la señal.

  2. Añadir información de tiempo: en la pestaña, haga clic en , seleccione y especifique como la frecuencia de muestreo.AnalizadorValores de tiempoSample Rate and Start Timefs

  3. En la pestaña, haga clic en .AnalizadorEtiqueta La señal aparece en el navegador.Conjunto de señales etiquetadas

Definir etiqueta

Defina una etiqueta para adjuntar a la señal. Haga clic en la pestaña.Añadir definiciónEtiqueta Especifique as , seleccione a de , e introduzca as .Nombre de la etiquetaWordsTipo de etiquetaROITipo de datosstring

Crear función de etiquetado automático personalizada

Cree una función personalizada para etiquetar las palabras pronunciadas en el archivo de audio. (Código para el stt función aparece más adelante en el ejemplo.)

  1. Vaya al directorio donde ha almacenado los archivos de código P y el archivo JSON que almacena las credenciales de IBM Coud.speech2text

  2. Para crear la función, en la pestaña, haga clic en . muestra un cuadro de diálogo en el que se le pide que introduzca el nombre, la descripción y el tipo de etiqueta de la función que desea agregar.AnalizadorAutomatizar el valorAñadir función personalizadaEtiquetador de señales Introduzca en el campo y seleccione como .sttNombreROITipo de etiqueta Puede dejar el campo vacío o puede introducir su propia descripción.Descripción

  3. Copie el código de función y péguelo en la plantilla vacía que aparece. Guarde el archivo. La función aparece en la galería.

Localizar e identificar palabras habladas

Localice e identifique las palabras pronunciadas en la señal de entrada.

  1. En el explorador, active la casilla de verificación situada junto a .Conjunto de señales etiquetadasy

  2. Seleccione en el navegador.WordsDefiniciones de etiquetas

  3. En la galería, seleccione .Valor automatizadostt

  4. Haga clic y haga clic en el cuadro de diálogo que aparece.Auto-EtiquetaDe acuerdo

localiza y etiqueta las palabras habladas.Etiquetador de señales

Exportar señal etiquetada

Exporte la señal etiquetada. En la pestaña, haga clic en .EtiquetaGuardar etiquetas En el cuadro de diálogo que aparece, asigne el nombre al conjunto de señales etiquetadas.transcribedAudio Al hacer clic, se devuelve a .De acuerdoAnalizador de señales En la tabla Señal, seleccione y haga clic con el botón derecho para exportarla a un archivo llamado .transcribedAudioTranscription.mat

Cargue el conjunto de señales etiquetadas. El conjunto solo tiene un miembro. Obtenga los nombres de las etiquetas y use el nombre para obtener y mostrar las palabras transcritas.

load Transcription  ln = getLabelNames(transcribedAudio);  v = getLabelValues(transcribedAudio,1,ln)
v=7×2 table
     ROILimits       Value  
    ____________    ________

    0.09    0.56    "oak"   
    0.59    0.97    "is"    
       1    1.78    "strong"
    1.94    2.19    "and"   
    2.22    2.67    "also"  
    2.67    3.22    "gives" 
    3.25    3.91    "shade" 

Reorganice las palabras para que la frase diga "El roble da sombra, y también es fuerte". Trazar la señal utilizando un color diferente para cada palabra.

k = v([1 6:7 4:5 2:3],:);  s = getSignal(transcribedAudio,1);  sent = []; sgs = NaN(height(s),height(k)); lgd = [];  for kj = 1:height(k)     lm = length(sent);     word = s.y(timerange(seconds(k.ROILimits(kj,1)),seconds(k.ROILimits(kj,2))));     sent = [sent;word];     sgs(lm+(1:length(word)),kj) = word;     lgd = [lgd;(length(sent)-length(word)/2)/fs]; end  sgs(length(sent)+1:end,:) = [];  % To hear, type soundsc(sent,fs)  plot((0:length(sgs)-1)/fs,sgs) text(lgd,-0.7*ones(size(lgd)),k.Value,'HorizontalAlignment',"center") axis tight

Función:stt Localizar e identificar palabras habladas

Esta función utiliza IBM Watson Speech API y Audio Toolbox speech2text funcionalidad ampliada para extraer palabras habladas de un archivo de audio.

function [labelVals,labelLocs] = stt(x,t,parentLabelVal,parentLabelLoc,varargin)  aspeechObjectIBM = speechClient('IBM','timestamps',true,'model','en-US_NarrowbandModel');  fs = 1/(t(2)-t(1));  tixt = speech2text(aspeechObjectIBM,x,fs);  numLabels = numel(tixt.TimeStamps{:}); labelVals = strings(numLabels,1); labelLocs = zeros(numLabels,2);  for idx =1:numLabels     labelVals(idx) = tixt.TimeStamps{:}{idx}{1};     labelLocs(idx,1) = tixt.TimeStamps{:}{idx}{2};     labelLocs(idx,2) = tixt.TimeStamps{:}{idx}{3}; end  end

Consulte también

Apps

Funciones

Ejemplos relacionados

Más acerca de