SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
PARECER TÉCNICO NCFA001-23
__________________________________________________________________
REVISTA FÓRUM
CONSULENTE
Santo André, 25 de setembro de 2023
___________________________________________________________________________________________
NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001
4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)
Contexto
Atendendo à solicitação da Revista Fórum, foram analisados áudios que circularam em
grupos de whatsapp e telegram em outubro de 2022, os quais incitavam a população a
incorrer em distúrbios civis e alegando categóricamente que as forças armadas iriam
tomar partido nessa iniciativa. Tais áudios foram atribuídos na época ao então ministro do
Gabinete de Segurança Institucional, General Augusto Heleno, o qual negou em seu X (à
época Twitter) a autoria dos mesmos, assim como nota oficial do GSI negou a atribuição
ao seu então chefe.
Na ocasião, apenas a negativa oficial por parte do acusado (e de seus subordinados)
foram tratadas como suficientes pela imprensa da época para categorizar a disseminação
de tais áudios atribuídas ao general como Fake News, sendo que um autor efetivo nunca
foi responsabilizado por tal ato. No entanto, a gravidade dos acontecimentos dos meses
subsequentes que culminaram nos eventos catastróficos de destruição de patromônio
público no dia 8 de janeiro de 2023 em Brasilia, DF, chamou a atenção da sociedade e
dos meios de imprensa, assim como dos pesquisadores acadêmicos, de modo que se
iniciou uma revisão dos fatores que levaram a esse fenômeno, tendo sido implantada
inclusive uma Comissão Parlamentar Mista de Inquérito no Senado Federal.
Dentro desse contexto, foi considerado revisar a busca do verdadeiro autor que tenha
criado tais áudios subversivos, enfáticos e categóricos, e o ponto de partida para essa
busca incorreria justamente em primeiramente isentar de forma técnica e definitiva a
alegação de atribuição ao seu suposto autor, General Augusto Heleno. Eis que para
nossa surpresa, ao realizar o mesmo protocolo de análise e comparação de biometria
vocal - o qual já foi utilizado várias vezes por nosso laboratório para inocentar figuras de
destaque nacional - constatamos, após análise de 40 partições, que os áudios
PERTENCEM AO SUPOSTO AUTOR, com intervalo de confiança de 87%, em uma
análise conclusiva de confirmação de sua autoria, visto o resultado estar acima de 85%.
METODOLOGIA
Em função da suspeita de uso de tecnologias que fazem uso das chamadas deepfake
news, o uso de técnicas convencionais de análise forense de áudio – a listar: análises
perceptivo-auditivas (segmentais, suprassegmentais, fatores paralinguísticos e dialetais),
análises acústicas, frequência fundamental F0, formantes e até mesmo VOT (tempo de
ataque de vozeamento) – não foi recomendado, justamente pelo fato de que tais análises
são susceptíveis de serem enganadas pela nova tecnologia.
Adotamos então um método mais novo e mais robusto contra esse novo advento
tecnológico e ameaçador, que são as deepfake news, a chama análise de coeficientes
cepstrais em escala Mel, ou MFCC, a qual produz uma biometria vocal do interlocutor,
através da geração de um mapa gráfico de características pertinentes a nuances do seu
trato vocal, o qual tem características únicas de pessoa para pessoa, similar a impressão
digital.
Tal método foi elaborado em 2004 e publicado cientificamente por Hasan et al, descrito
no artigo “SPEAKER IDENTIFICATION USING MEL FREQUENCY CEPSTRAL
COEFFICIENTS”, de Hasan, R. et al. E apresentado na 3rd International Conference on
Electrical Computer Engineering ICECE 2004 em dezemro de 2004.
RESULTADOS
A figura a seguir apresenta o mapa cepstral da voz do General Augusto Heleno, criado a
partir de uma entrevista dele no Youtube (www.youtube.com/watch?v=PmnRD564_h0)
cuja autenticidade é inquestionável devido a natureza oficial do video (canalGOV, a Voz
do Brasil). Já os suspostos áudios atribuídos ao General Augusto Heleno que foram
enviados ao pesquisador por representante da Revista Fórum foram disponibilizados em
seu canal no Youtube, cujos links são apresentados aqui: https://youtu.be/KM8XO5AguSc
e https://youtu.be/BefrwT-WFm4.
Todos os videos foram segmentados manualmente em trechos com cerca de 6 segundos,
garantindo que cada trecho se referisse apenas à voz do indivíduo analisado, de forma a
garantir que não ocorriam ruidos ambientes durante a fala e de que o trecho da fala
pertencesse ao individuo investigado, e não a algum locutor no ambiente. Feito isso, foi
aplicada a análise técnica descrita na seção anterior em 40 partições desses áudios, que
geraram os referidos mapas de biometria de voz (que pode ser entendidos com se
fossem a impressão digital da voz, tal qual uma impressão do polegar identifica
unicamente uma pessoa), os quais por sua vez tiveram sua verosimilhança atestada com
um método de inteligência artificial não supervisionado chamado KNN (rede de vizinhos).
CONCLUSÃO
Portanto, as evidências indicam que os áudios PERTENCEM AO SUPOSTO AUTOR,
com intervalo de confiança de 87%, em uma análise conclusiva de confirmação de sua
autoria, visto o resultado estar acima de 85%.
Eventuais divergências ou contestações de qualquer natureza quanto à apropriação aos
falantes deverão ser prontamente e formalmente submetidas pelos consulentes aos
subscritores no endereço indicado abaixo, para avaliação técnica e, caso sejam
consideradas procedentes, imediata republicação do parecer ou edição de adendo.
Caso seja necessário, outras análises poderão ser eventualmente apresentas em parecer
técnico complementar. Os consulentes, ao receberem, utilizarem ou divulgarem o
presente parecer ou as informações nele contidas, automaticamente concordam em
assumir exclusivamente para si as responsabilidades pertinentes, comprometendo-se a
isentar e proteger os pesquisadores do Núcleo de Computação Forense Aplicada de
qualquer reivindicação eventualmente resultante.
Encerra-se o presente parecer técnico que contém 07 folhas, sendo esta, datada e
assinada.
Santo André, 25 de setembro de 2023
_________________________
Dr. Mario Gazziro
Pesquisador UFABC
___________________________________________________________________________________________
NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001
4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)
LISTAGEM DE CÓDIGOS-FONTE EM MATLABTM
OS CÓDIGOS E ÁUDIOS ORIGINAIS ESTÃO DISPONÍVEIS NA PLATAFORMA GITHUB DO PESQUISADOR:
https://github.com/mariogazziro/reconhecimento_de_voz/blob/main/heleno.zip
clear all; close all; clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Define variables
% analysis frame duration (ms)
Tw = 25;
Ts = 10; % analysis frame shift (ms)
alpha = 0.97; % preemphasis coefficient
M=20; % number of filterbank channels
C=12; % number of cepstral coefficients
L=22; % cepstral sine lifter parameter
LF = 300; % lower frequency limit (Hz)
HF = 3700; % upper frequency limit (Hz)
wav_file = 'controle1.wav'; % input audio filename
% Read speech samples, sampling rate and precision from
file [ audioIn, fs] = audioread( wav_file );
% Feature extraction (feature vectors as columns)
[ MFCCs, FBEs, frames ] = ...
mfcc( audioIn, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L );
% Generate data needed for plotting
% frame length and number of frames
[ Nw, NF ] = size( frames );
time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs; % time vector (s) for frames
time = [ 0:length(audioIn)-1 ]/fs; % time vector (s) for signal samples
logFBEs = 20*log10( FBEs ); % compute log FBEs for plotting
logFBEs_floor = max(logFBEs(:))-50; % get logFBE floor 50 dB below max
logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor; % limit logFBE dynamic range
% Generate plots
figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ...
'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' );
subplot( 211 );
plot( time, audioIn, 'b' );
xlim( [ min(time_frames) max(time_frames) ] );
xlabel( 'Tempo (s)' );
ylabel( 'Amplitude' );
title( 'Voz original de Ciro Gomes (www.youtube.com/watch?v=cfaKlpu1ywU');
subplot( 212 );
imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC
axis( 'xy' );
xlim( [ min(time_frames) max(time_frames) ] );
xlabel( 'Tempo (s)' );
ylabel( 'Cepstrum' );
title( 'Coeficientes cepstrum nas frequências Mel' );
% Set color map to grayscale
colormap( 1-colormap('jet') );
controle1=MFCCs(2:13,[1:600])';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Define variables
% analysis frame duration (ms)
Tw = 25;
Ts = 10; % analysis frame shift (ms)
alpha = 0.97; % preemphasis coefficient
M=20; % number of filterbank channels
C=12; % number of cepstral coefficients
L=22; % cepstral sine lifter parameter
LF = 300; % lower frequency limit (Hz)
HF = 3700; % upper frequency limit (Hz)
wav_file = 'controle2.wav'; % input audio filename
% Read speech samples, sampling rate and precision from
file [ audioIn, fs] = audioread( wav_file );
% Feature extraction (feature vectors as columns)
[ MFCCs, FBEs, frames ] = ...
mfcc( audioIn, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L );
% Generate data needed for plotting
% frame length and number of frames
[ Nw, NF ] = size( frames );
time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs; % time vector (s) for frames
time = [ 0:length(audioIn)-1 ]/fs; % time vector (s) for signal samples
logFBEs = 20*log10( FBEs ); % compute log FBEs for plotting
logFBEs_floor = max(logFBEs(:))-50; % get logFBE floor 50 dB below max
logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor; % limit logFBE dynamic range
% Generate plots
figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ...
'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' );
________________________________________________________________________________________
NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001 - 4o andar,
Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)
subplot( 211 );
plot( time, audioIn, 'b' );
xlim( [ min(time_frames) max(time_frames) ] );
xlabel( 'Tempo (s)' );
ylabel( 'Amplitude' );
title( 'Áudio de controle 2');
subplot( 212 );
imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC
axis( 'xy' );
xlim( [ min(time_frames) max(time_frames) ] );
xlabel( 'Tempo (s)' );
ylabel( 'Cepstrum' );
title( 'Coeficientes cepstrum nas frequências Mel' );
% Set color map to grayscale
colormap( 1-colormap('jet') );
controle2=MFCCs(2:13,[1:600])';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Define variables
% analysis frame duration (ms)
Tw = 25;
Ts = 10; % analysis frame shift (ms)
alpha = 0.97; % preemphasis coefficient
M=20; % number of filterbank channels
C=12; % number of cepstral coefficients
L=22; % cepstral sine lifter parameter
LF = 300; % lower frequency limit (Hz)
HF = 3700; % upper frequency limit (Hz)
wav_file = 'amostra.wav'; % input audio filename
% Read speech samples, sampling rate and precision from
file [ audioIn, fs] = audioread( wav_file );
% Feature extraction (feature vectors as columns)
[ MFCCs, FBEs, frames ] = ...
mfcc( audioIn, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L );
% Generate data needed for plotting
% frame length and number of frames
[ Nw, NF ] = size( frames );
time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs; % time vector (s) for frames
time = [ 0:length(audioIn)-1 ]/fs; % time vector (s) for signal samples
logFBEs = 20*log10( FBEs ); % compute log FBEs for plotting
logFBEs_floor = max(logFBEs(:))-50; % get logFBE floor 50 dB below max
logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor; % limit logFBE dynamic range
% Generate plots
figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ...
'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' );
subplot( 211 );
plot( time, audioIn, 'b' );
xlim( [ min(time_frames) max(time_frames) ] );
xlabel( 'Tempo (s)' );
ylabel( 'Amplitude' );
title( 'Áudio de amostra a ser testado');
subplot( 212 );
imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC
axis( 'xy' );
xlim( [ min(time_frames) max(time_frames) ] );
xlabel( 'Tempo (s)' );
ylabel( 'Cepstrum' );
title( 'Coeficientes cepstrum nas frequências Mel' );
% Set color map to grayscale
colormap( 1-colormap('jet') );
amostra=MFCCs(2:13,[1:600])';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X=[amostra;controle1];
Y(1:600)="Amostra";
Y(601:1200)="Controle";
Y=Y';
mdl = fitcknn(X,Y,'NumNeighbors',12,'Standardize',1);
rloss = resubLoss(mdl) % The classifier predicts incorrectly for XX% of the training data. 3,08%
[label,score,cost] = predict(mdl,controle2)
mean(score(:,1))
mean(score(:,2))
___________________________________________________________________________________________
NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001
4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)

Mais conteúdo relacionado

Semelhante a Análise de biometria vocal confirma autoria de áudios

DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...Leinylson Fontinele
 
18.ago ouro i 14.15_320_light
18.ago ouro i 14.15_320_light18.ago ouro i 14.15_320_light
18.ago ouro i 14.15_320_lightitgfiles
 
InfiiniVision - A nova geração de Instrumentos de Testes de Sinais Mistos
InfiiniVision - A nova geração de Instrumentos de Testes de Sinais MistosInfiiniVision - A nova geração de Instrumentos de Testes de Sinais Mistos
InfiiniVision - A nova geração de Instrumentos de Testes de Sinais MistosPareseletronica
 
Ferramenta virtual
Ferramenta virtualFerramenta virtual
Ferramenta virtualDanilo Braga
 
Proconf softwear confiabilidade
Proconf softwear confiabilidadeProconf softwear confiabilidade
Proconf softwear confiabilidadeErico Pontes Melo
 

Semelhante a Análise de biometria vocal confirma autoria de áudios (6)

DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
 
18.ago ouro i 14.15_320_light
18.ago ouro i 14.15_320_light18.ago ouro i 14.15_320_light
18.ago ouro i 14.15_320_light
 
InfiiniVision - A nova geração de Instrumentos de Testes de Sinais Mistos
InfiiniVision - A nova geração de Instrumentos de Testes de Sinais MistosInfiiniVision - A nova geração de Instrumentos de Testes de Sinais Mistos
InfiiniVision - A nova geração de Instrumentos de Testes de Sinais Mistos
 
Cruz jose
Cruz joseCruz jose
Cruz jose
 
Ferramenta virtual
Ferramenta virtualFerramenta virtual
Ferramenta virtual
 
Proconf softwear confiabilidade
Proconf softwear confiabilidadeProconf softwear confiabilidade
Proconf softwear confiabilidade
 

Análise de biometria vocal confirma autoria de áudios

  • 1. PARECER TÉCNICO NCFA001-23 __________________________________________________________________ REVISTA FÓRUM CONSULENTE Santo André, 25 de setembro de 2023 ___________________________________________________________________________________________ NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001 4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)
  • 2. Contexto Atendendo à solicitação da Revista Fórum, foram analisados áudios que circularam em grupos de whatsapp e telegram em outubro de 2022, os quais incitavam a população a incorrer em distúrbios civis e alegando categóricamente que as forças armadas iriam tomar partido nessa iniciativa. Tais áudios foram atribuídos na época ao então ministro do Gabinete de Segurança Institucional, General Augusto Heleno, o qual negou em seu X (à época Twitter) a autoria dos mesmos, assim como nota oficial do GSI negou a atribuição ao seu então chefe. Na ocasião, apenas a negativa oficial por parte do acusado (e de seus subordinados) foram tratadas como suficientes pela imprensa da época para categorizar a disseminação de tais áudios atribuídas ao general como Fake News, sendo que um autor efetivo nunca foi responsabilizado por tal ato. No entanto, a gravidade dos acontecimentos dos meses subsequentes que culminaram nos eventos catastróficos de destruição de patromônio público no dia 8 de janeiro de 2023 em Brasilia, DF, chamou a atenção da sociedade e dos meios de imprensa, assim como dos pesquisadores acadêmicos, de modo que se iniciou uma revisão dos fatores que levaram a esse fenômeno, tendo sido implantada inclusive uma Comissão Parlamentar Mista de Inquérito no Senado Federal. Dentro desse contexto, foi considerado revisar a busca do verdadeiro autor que tenha criado tais áudios subversivos, enfáticos e categóricos, e o ponto de partida para essa busca incorreria justamente em primeiramente isentar de forma técnica e definitiva a alegação de atribuição ao seu suposto autor, General Augusto Heleno. Eis que para nossa surpresa, ao realizar o mesmo protocolo de análise e comparação de biometria vocal - o qual já foi utilizado várias vezes por nosso laboratório para inocentar figuras de destaque nacional - constatamos, após análise de 40 partições, que os áudios PERTENCEM AO SUPOSTO AUTOR, com intervalo de confiança de 87%, em uma análise conclusiva de confirmação de sua autoria, visto o resultado estar acima de 85%.
  • 3. METODOLOGIA Em função da suspeita de uso de tecnologias que fazem uso das chamadas deepfake news, o uso de técnicas convencionais de análise forense de áudio – a listar: análises perceptivo-auditivas (segmentais, suprassegmentais, fatores paralinguísticos e dialetais), análises acústicas, frequência fundamental F0, formantes e até mesmo VOT (tempo de ataque de vozeamento) – não foi recomendado, justamente pelo fato de que tais análises são susceptíveis de serem enganadas pela nova tecnologia. Adotamos então um método mais novo e mais robusto contra esse novo advento tecnológico e ameaçador, que são as deepfake news, a chama análise de coeficientes cepstrais em escala Mel, ou MFCC, a qual produz uma biometria vocal do interlocutor, através da geração de um mapa gráfico de características pertinentes a nuances do seu trato vocal, o qual tem características únicas de pessoa para pessoa, similar a impressão digital. Tal método foi elaborado em 2004 e publicado cientificamente por Hasan et al, descrito no artigo “SPEAKER IDENTIFICATION USING MEL FREQUENCY CEPSTRAL COEFFICIENTS”, de Hasan, R. et al. E apresentado na 3rd International Conference on Electrical Computer Engineering ICECE 2004 em dezemro de 2004.
  • 4. RESULTADOS A figura a seguir apresenta o mapa cepstral da voz do General Augusto Heleno, criado a partir de uma entrevista dele no Youtube (www.youtube.com/watch?v=PmnRD564_h0) cuja autenticidade é inquestionável devido a natureza oficial do video (canalGOV, a Voz do Brasil). Já os suspostos áudios atribuídos ao General Augusto Heleno que foram enviados ao pesquisador por representante da Revista Fórum foram disponibilizados em seu canal no Youtube, cujos links são apresentados aqui: https://youtu.be/KM8XO5AguSc e https://youtu.be/BefrwT-WFm4. Todos os videos foram segmentados manualmente em trechos com cerca de 6 segundos, garantindo que cada trecho se referisse apenas à voz do indivíduo analisado, de forma a garantir que não ocorriam ruidos ambientes durante a fala e de que o trecho da fala pertencesse ao individuo investigado, e não a algum locutor no ambiente. Feito isso, foi aplicada a análise técnica descrita na seção anterior em 40 partições desses áudios, que geraram os referidos mapas de biometria de voz (que pode ser entendidos com se fossem a impressão digital da voz, tal qual uma impressão do polegar identifica unicamente uma pessoa), os quais por sua vez tiveram sua verosimilhança atestada com um método de inteligência artificial não supervisionado chamado KNN (rede de vizinhos).
  • 5. CONCLUSÃO Portanto, as evidências indicam que os áudios PERTENCEM AO SUPOSTO AUTOR, com intervalo de confiança de 87%, em uma análise conclusiva de confirmação de sua autoria, visto o resultado estar acima de 85%. Eventuais divergências ou contestações de qualquer natureza quanto à apropriação aos falantes deverão ser prontamente e formalmente submetidas pelos consulentes aos subscritores no endereço indicado abaixo, para avaliação técnica e, caso sejam consideradas procedentes, imediata republicação do parecer ou edição de adendo. Caso seja necessário, outras análises poderão ser eventualmente apresentas em parecer técnico complementar. Os consulentes, ao receberem, utilizarem ou divulgarem o presente parecer ou as informações nele contidas, automaticamente concordam em assumir exclusivamente para si as responsabilidades pertinentes, comprometendo-se a isentar e proteger os pesquisadores do Núcleo de Computação Forense Aplicada de qualquer reivindicação eventualmente resultante. Encerra-se o presente parecer técnico que contém 07 folhas, sendo esta, datada e assinada. Santo André, 25 de setembro de 2023 _________________________ Dr. Mario Gazziro Pesquisador UFABC ___________________________________________________________________________________________ NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001 4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)
  • 6. LISTAGEM DE CÓDIGOS-FONTE EM MATLABTM OS CÓDIGOS E ÁUDIOS ORIGINAIS ESTÃO DISPONÍVEIS NA PLATAFORMA GITHUB DO PESQUISADOR: https://github.com/mariogazziro/reconhecimento_de_voz/blob/main/heleno.zip clear all; close all; clc; %%%%%%%%%%%%%%%%%%%%%%%%%%% % Define variables % analysis frame duration (ms) Tw = 25; Ts = 10; % analysis frame shift (ms) alpha = 0.97; % preemphasis coefficient M=20; % number of filterbank channels C=12; % number of cepstral coefficients L=22; % cepstral sine lifter parameter LF = 300; % lower frequency limit (Hz) HF = 3700; % upper frequency limit (Hz) wav_file = 'controle1.wav'; % input audio filename % Read speech samples, sampling rate and precision from file [ audioIn, fs] = audioread( wav_file ); % Feature extraction (feature vectors as columns) [ MFCCs, FBEs, frames ] = ... mfcc( audioIn, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L ); % Generate data needed for plotting % frame length and number of frames [ Nw, NF ] = size( frames ); time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs; % time vector (s) for frames time = [ 0:length(audioIn)-1 ]/fs; % time vector (s) for signal samples logFBEs = 20*log10( FBEs ); % compute log FBEs for plotting logFBEs_floor = max(logFBEs(:))-50; % get logFBE floor 50 dB below max logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor; % limit logFBE dynamic range % Generate plots figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ... 'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' ); subplot( 211 ); plot( time, audioIn, 'b' ); xlim( [ min(time_frames) max(time_frames) ] ); xlabel( 'Tempo (s)' ); ylabel( 'Amplitude' ); title( 'Voz original de Ciro Gomes (www.youtube.com/watch?v=cfaKlpu1ywU'); subplot( 212 ); imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC axis( 'xy' ); xlim( [ min(time_frames) max(time_frames) ] ); xlabel( 'Tempo (s)' ); ylabel( 'Cepstrum' ); title( 'Coeficientes cepstrum nas frequências Mel' ); % Set color map to grayscale colormap( 1-colormap('jet') ); controle1=MFCCs(2:13,[1:600])'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define variables % analysis frame duration (ms) Tw = 25; Ts = 10; % analysis frame shift (ms) alpha = 0.97; % preemphasis coefficient M=20; % number of filterbank channels C=12; % number of cepstral coefficients L=22; % cepstral sine lifter parameter LF = 300; % lower frequency limit (Hz) HF = 3700; % upper frequency limit (Hz) wav_file = 'controle2.wav'; % input audio filename % Read speech samples, sampling rate and precision from file [ audioIn, fs] = audioread( wav_file ); % Feature extraction (feature vectors as columns) [ MFCCs, FBEs, frames ] = ... mfcc( audioIn, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L ); % Generate data needed for plotting % frame length and number of frames [ Nw, NF ] = size( frames ); time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs; % time vector (s) for frames time = [ 0:length(audioIn)-1 ]/fs; % time vector (s) for signal samples logFBEs = 20*log10( FBEs ); % compute log FBEs for plotting logFBEs_floor = max(logFBEs(:))-50; % get logFBE floor 50 dB below max logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor; % limit logFBE dynamic range % Generate plots figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ... 'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' ); ________________________________________________________________________________________ NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001 - 4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)
  • 7. subplot( 211 ); plot( time, audioIn, 'b' ); xlim( [ min(time_frames) max(time_frames) ] ); xlabel( 'Tempo (s)' ); ylabel( 'Amplitude' ); title( 'Áudio de controle 2'); subplot( 212 ); imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC axis( 'xy' ); xlim( [ min(time_frames) max(time_frames) ] ); xlabel( 'Tempo (s)' ); ylabel( 'Cepstrum' ); title( 'Coeficientes cepstrum nas frequências Mel' ); % Set color map to grayscale colormap( 1-colormap('jet') ); controle2=MFCCs(2:13,[1:600])'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define variables % analysis frame duration (ms) Tw = 25; Ts = 10; % analysis frame shift (ms) alpha = 0.97; % preemphasis coefficient M=20; % number of filterbank channels C=12; % number of cepstral coefficients L=22; % cepstral sine lifter parameter LF = 300; % lower frequency limit (Hz) HF = 3700; % upper frequency limit (Hz) wav_file = 'amostra.wav'; % input audio filename % Read speech samples, sampling rate and precision from file [ audioIn, fs] = audioread( wav_file ); % Feature extraction (feature vectors as columns) [ MFCCs, FBEs, frames ] = ... mfcc( audioIn, fs, Tw, Ts, alpha, @hamming, [LF HF], M, C+1, L ); % Generate data needed for plotting % frame length and number of frames [ Nw, NF ] = size( frames ); time_frames = [0:NF-1]*Ts*0.001+0.5*Nw/fs; % time vector (s) for frames time = [ 0:length(audioIn)-1 ]/fs; % time vector (s) for signal samples logFBEs = 20*log10( FBEs ); % compute log FBEs for plotting logFBEs_floor = max(logFBEs(:))-50; % get logFBE floor 50 dB below max logFBEs( logFBEs<logFBEs_floor ) = logFBEs_floor; % limit logFBE dynamic range % Generate plots figure('Position', [30 30 800 600], 'PaperPositionMode', 'auto', ... 'color', 'w', 'PaperOrientation', 'landscape', 'Visible', 'on' ); subplot( 211 ); plot( time, audioIn, 'b' ); xlim( [ min(time_frames) max(time_frames) ] ); xlabel( 'Tempo (s)' ); ylabel( 'Amplitude' ); title( 'Áudio de amostra a ser testado'); subplot( 212 ); imagesc( time_frames, [1:C], MFCCs(2:end,:) ); % HTK's TARGETKIND: MFCC axis( 'xy' ); xlim( [ min(time_frames) max(time_frames) ] ); xlabel( 'Tempo (s)' ); ylabel( 'Cepstrum' ); title( 'Coeficientes cepstrum nas frequências Mel' ); % Set color map to grayscale colormap( 1-colormap('jet') ); amostra=MFCCs(2:13,[1:600])'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% X=[amostra;controle1]; Y(1:600)="Amostra"; Y(601:1200)="Controle"; Y=Y'; mdl = fitcknn(X,Y,'NumNeighbors',12,'Standardize',1); rloss = resubLoss(mdl) % The classifier predicts incorrectly for XX% of the training data. 3,08% [label,score,cost] = predict(mdl,controle2) mean(score(:,1)) mean(score(:,2)) ___________________________________________________________________________________________ NCFA - Núcleo de Computação Forense Aplicada (USP e UFABC) Sede: Av. dos Estados, 5001 4o andar, Bloco L - Santo André, SP, CEP 09210-580 Tel.: (11) 3356-7676 (ramal 7676)