audio computeFeatures

Umgang mit inkonsistenten Audio-Inputs bei Sprach-Authentifizierung

Scénario de test & Cas d'usage

Geschäftskontext

Eine Sicherheitsanwendung zur Stimmidentifikation erhält Audio-Uploads von Benutzergeräten. Die Inputs sind unzuverlässig: Einige sind extrem kurz, andere leer oder fehlerhaft. Das System benötigt eine feste Anzahl von Ausgabe-Frames (Fixed Size Input) für das neuronale Netz, unabhängig von der Input-Länge.
Datenaufbereitung

Erstellung eines Datensatzes mit Grenzfällen: normaler Audio, sehr kurzer Audio und fehlender Audio (NULL).

Kopiert!
1 
2DATA casuser.auth_input;
3LENGTH user_id varchar(10) _audio_data_ varbinary;
4/* Normal */ user_id='User_OK';
5_audio_data_='52494646...WAV_DATA...'x;
6OUTPUT;
7/* Sehr kurz */ user_id='User_Short';
8_audio_data_='52494646...SHORT...'x;
9OUTPUT;
10/* Missing */ user_id='User_Null';
11_audio_data_='.'x;
12OUTPUT;
13 
14RUN;
15 

Étapes de réalisation

1
Ausführung der Aktion mit 'nOutputFrames', um eine feste Ausgabegröße zu erzwingen (Padding für kurze, Truncation für lange Inputs).
Kopiert!
1 
2PROC CAS;
3audio.computeFeatures / TABLE={name='auth_input', caslib='casuser'} audioColumn='_audio_data_' nOutputFrames=500 mfccOptions={nCeps=13} copyVars={'user_id'} casOut={name='auth_features_fixed', caslib='casuser', replace=true};
4 
5RUN;
6 
2
Überprüfung, wie fehlende Werte gehandhabt wurden (Erwartung: Zeile ignoriert oder Fehler, abhängig von der Systemeinstellung, hier Prüfung auf Existenz).
Kopiert!
1 
2PROC CAS;
3SIMPLE.freq / TABLE={name='auth_features_fixed', caslib='casuser'} inputs={'user_id'};
4 
5RUN;
6 

Erwartetes Ergebnis


Die Tabelle 'auth_features_fixed' wird erstellt. Der 'User_Short'-Datensatz ist enthalten, wobei die fehlenden Frames mit Nullen aufgefüllt wurden, um genau 500 Frames zu erreichen. Der 'User_Null'-Datensatz wurde entweder ausgeschlossen oder enthält nur Padding, ohne dass die Aktion abstürzt.