Oportunidad: convertir la clasificación del habla en clasificación de imágenes

¡Acostúmbrate a escribir juntos! Este es el día 11 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .

prefacio

Aquí hay una clasificación de voz (dirección de clasificación de basura) con un efecto real deficiente, que es solo para su referencia. Si hay una solución mejor, ¡se presentará la próxima vez!

1. Proceso de oportunidad

1.1 Extraer la señal de voz en
el dominio del tiempo 1.2 Dibujar la imagen de la señal en el dominio del tiempo
1.3 Convertir la señal de voz en clasificación de imágenes o clasificación de datos

2. Voice2Img (producción de conjuntos de datos)

Aquí necesitamos extraer la señal de dominio de tiempo del mismo tipo de voz en la carpeta y dibujar la imagen El proceso específico es:
2.1 Obtener todos los archivos .m4a en la carpeta
2.2 Obtener el nombre fonético
2.3 Usar audioread para leer la fonética nombre
2.4 Establecer el tiempo de muestreo
2.5 Crear fig
2.6 Extraer el canal izquierdo (o el canal derecho)
2.7 Señal de dominio de tiempo de la señal de entrada
2.8 Convertir el cuadro a un formato que la función imwrite pueda reconocer
2.9 Extraer el prefijo del nombre de la voz (excluyendo .m4a) 2.10 Guarde el código de referencia de
la imagen de dominio de tiempo dibujado :

clc
clear
close all
%%
file_path =  'D:\垃圾\有害垃圾\';% 需要处理的图像文件夹的路径
m4a_path_list = dir(strcat(file_path,'*.m4a'));%获取该文件夹中所有m4a的语音
m4a_num = length(m4a_path_list);%获取语音总数量
if m4a_num > 0 %有满足条件的语音
        for j = 1:m4a_num %逐一读取语音
             m4a_name = m4a_path_list(j).name;% 语音名
             [y,fs]=audioread(strcat(file_path,m4a_name)); %将声音放于matlab中
             T=1/fs; %采样时间
             t=(0:length(y)-1)*T;%时间
             f=(0:length(y)-1)*fs/length(y);
             fig=figure;
             yz=y(:,1);%左声道
             plot(t,yz);%输入信号时域曲线
             frame = getframe(fig); % 获取frame
             img = frame2im(frame); % 将frame变换成imwrite函数可以识别的格式
             % 取名
             cell_str = strsplit(m4a_name,'.');%按照‘.’字符分开
             image_name = cell_str{1,1};%去掉字符串后面的m4a
             image_name = [image_name ,'.jpg'];
             imwrite(img,strcat('D:\垃圾\语音识别\data\有害垃圾\',image_name)); %%保存图片 ,D:\traincar\newzheng\是储存修改图像后的文件夹
             
        end
        close all
end
复制代码

2. Clasificación de imágenes clásicas

Aquí usamos una estructura de conjunto de datos de estilo de directorio, y la red utilizada puede hacer referencia a mi introducción anterior a la red clásica, por lo que no la repetiré aquí. Aquí nos centramos en la información escrita en la edición al obtener la voz para la clasificación y reproducir la voz (nombre basura) que ingresó.

load voice.mat net
global img
YPred = classify(net,img);%预测数据  
YPred_cellstr=cellstr(YPred);
set(handles.edit1,'string',YPred_cellstr)
t1 = strcmp(YPred_cellstr, '厨余垃圾');
t2 = strcmp(YPred_cellstr, '有害垃圾');
t3 = strcmp(YPred_cellstr, '可回收垃圾');
t4 = strcmp(YPred_cellstr, '其他垃圾');
if  t1 == 1
    [x,fs] = audioread('./垃圾分类/厨余垃圾.m4a');
    sound(x,fs)
elseif  t2 == 1
     [x,fs] = audioread('./垃圾分类/有害垃圾.m4a');
     sound(x,fs)
elseif t3 == 1
     [x,fs] = audioread('./垃圾分类/可回收垃圾.m4a');
    sound(x,fs)
elseif t4 == 1
    [x,fs] = audioread('./垃圾分类/其他垃圾.m4a');
    sound(x,fs)
复制代码

expandir

Puede convertir la imagen a datos árabes (modo digital puro, luego clasificar los datos, como un clasificador como BP\SVM)

Supongo que te gusta

Origin juejin.im/post/7085275734800859143
Recomendado
Clasificación