CAPRICEP
An extended TSP (Time Stretched Pulse) that enables interactive and real-time measurement of the linear time-invariant, the non-linear time-invariant, and random and time varying responses simultaneously. This is the substantial revision of FVN and related tools. I will stop updating FVN.
All components are uploaded. Type "realTimeTester" to start the application. Supporting materials will be ready soon.
Reference
Kawahara, H. and Yatabe, K.: Cascaded all-pass filterswith randomized center frequencies and phase polarity for acoustic and speech measurement and data augmentation,arXiv:2010.13185(2020) (Accepted: ICASSP2021). (Link to PDF)
Abstract
We introduce a new member of TSP (Time Stretched Pulse) for acoustic and speech measurement infrastructure, based on a simple all-pass filter and systematic randomization. This new infrastructure fundamentally upgrades our previous measurement procedure, which enables simultaneous measurement of multiple attributes, including non-linear ones without requiring extra filtering nor post-processing. Our new proposal establishes a theoretically solid, flexible, and extensible foundation in acoustic measurement. Moreover, it is general enough to provide versatile research tools for other fields, such as biological signal analysis. We illustrate using acoustic measurements and data augmentation as representative examples among various prospective applications. We open-sourced MATLAB implementation. It consists of an interactive and real-time acoustic tool, MATLAB functions, and supporting materials. Recently we introduced an interactive and real-time tool for measureing voice fundamental frequency response to auditory test signal with frequency modulation.
Measurement of pitch extractors' response to FM test signal of simulated vowel /a/
Folder "fmResponseTester" consists of the tester. The following command tests MATLAB's pitch extractor function "pitch.m" using a test signal with 240 Hz pitch and 1 cent modulation depth. The output reports (graphics and MATLAB data) are stored on the current working directory. The last argument "@pitchNCF" is a function pointer to the interface program (user has to write) for the target pitch extractor (a MATLAB function "pitch.m").
output = fmTransfTestPeriodicRevSNR(targetFo, fMcent, @pitchNCF, 'pink', snr)
You can also check @pitchYANG. It tests the pitch extractor for yang_STRAIGHT. It provides better pitch trajectory than using NCF in MATLAB.
Reference
Hideki Kawahara, Kohei Yatabe, Ken-Ichi Sakakibara, Tatsuya Kitamura, Hideki Banno, Masanori Morise: Measuring pitch extractors' response to frequency-modulated multi-component signals, arXiv:2204.00911 (2022). (Link to arXiv
Hideki Kawahara, Kohei Yatabe, Ken-Ichi Sakakibara, Tatsuya Kitamura, Hideki Banno, Masanori Morise: An objective test tool for pitch extractors' response attributes, arXiv:2204.00902 (2022). (Link to arXiv
Hideki Kawahara, Kohei Yatabe, Ken-Ichi Sakakibara, Tatsuya Kitamura, Hideki Banno, Masanori Morise: Objective measurement of pitch extractors' responses to frequency modulated sounds and two reference pitch extraction methods for analyzing voice pitch responses to auditory stimulation, arXiv:2111.03629 (2021). (Link to PDF)
Note that fmTransfTestGaussN is a new replacement of fmTransfTestGauss
Interactive and real-time tool for measureing voice fo response to FM test signals
Dwonload the directory "auditoryResponseTester." Then, try "auditoryResponseTester" to invoke the tool.
Getting started: instruction manual
English and Japanese versions are in doc folder.
Reference
Hideki Kawahara, Toshie Matsui, Kohei Yatabe, Ken-Ichi Sakakibara, Minoru Tsuzaki, Masanori Morise, Toshio Irino: Mixture of orthogonal sequences made from extended time-stretched pulses enables measurement of involuntary voice fundamental frequency response to pitch perturbation, arXiv:2104.01444 (2021). (Link to PDF)
The following method is adopted for CAPRICEP and build in this tool.
Hideki Kawahara; Ken-Ichi Sakakibara; Mitsunori Mizumachi; Masanori Morise; Hideki Banno: Simultaneous measurement of time-invariant linear and nonlinear, and random and extra responses using frequency domain variant of velvet noise, Proc. APSIPA ASC, pp.174-183 (2020). (Link to PDF)
Interactive and real-time acoustic measurement tool (Compatible with 32-bit floating)
Try "realTimeTester" to invoke the tool.
Use "capResultReporter" for visualize and report the measurement results
Off-line acoustic measurement (Compatible with 32-bit floating)
Try:
app = struct;
app.CommonSignal = struct;
devices = getAudioDevices(audioPlayerRecorder);
[deviceID,tf] = listdlg('ListString',devices, 'SelectionMode','single');
if tf
app.CommonSignal.DeviceName = devices{deviceID};
app.DeviceLabel.Text = devices{deviceID};
fs = 44100;
app.CommonSignal.Reader = audioPlayerRecorder(fs,"RecorderChannelMapping", 1, ...
"BitDepth", "24-bit integer", "Device", devices{deviceID});
app.DriverLabel.Text = 'simultaneousIO'; %get(app.CommonSignal.Reader,"Driver");
tResponse = 400;
nRepetition = 30;
outChannel = 'L-ch';
option.calibrationConst = 200;
inChannel = 1;
option.DeviceName = devices{deviceID};
analysisStr = capricepResponseTest(fs, tResponse, nRepetition, ...
outChannel, inChannel, 'acoustic_system', option);
analysisStrCore = struct;
analysisStrCore.yRecorded = analysisStr.yRecorded;
analysisStrCore.pinkLPC = analysisStr.pinkLPC;
analysisStrCore.fs = fs;
analysisStrCore.tResponse = analysisStr.tResponse;
analysisStrCore.nRepetition = analysisStr.nRepetition;
analysisStrCore.outChannel = analysisStr.outChannel;
analysisStrCore.numChannels = analysisStr.numChannels;
analysisStrCore.selectedChannels = analysisStr.selectedChannels;
analysisStrCore.lAeq = analysisStr.lAeq;
analysisStrCore.calibrationConst = analysisStr.calibrationConst;
app.CommonSignal.outPath = ".";
fname = "test";
save(app.CommonSignal.outPath + "/" + fname, "analysisStrCore");
tmp = capResultReporter([char(app.CommonSignal.outPath) '/' char(fname)], 'NONE');
end
For usual room, tResponse = 400; provides better result in the low-frequency end. 800 is better for a classroom.
Sample files
The following files sound pervcptually indistinguishable (at least for me).
Please refer to Fig.5 of the reference. Please download and check.
The worst SNR (-1dB) file filtered by CAPRICEP
capricepWorstSNRminus1dB.wav
The best SNR (6dB) file filtered by CAPRICEP
capricepBestSNR6dB.wav
The original file (level adjusted to CAPRICEP samples)
originalLevelAdjusted.wav
Links to installer of compiled stand alone application
These installers are still experimental (17 Jan. 2021);
Installer for macOS
Link to installer Please download this folder as a whole. Then, execute as the installer application.
Installer for Windows10 (64bit)
Link to installer Please click this link. Then execute the downloaded installer application.