Voice Audio Data and Pitch Extraction

I want to extract numerical data from raw voice audio files(.wav)- take out the numeric pitch (Hz) and do specturm analysis in a voice audio file. However, I want to have the pitch throughout the audio file with time stamps to a later to be converted to a .csv or .txt, and for other analysis like spectrum and stats.
How do I do that? I am looking for succesful code. I am new to Matlab, but I have the audio packages already installed. So far I seen parts of what I want to do on the internet, but they never work. As for now the data is not noisy, but I might need to clean some with extra sound in the background.
Thanks for your help in advance.

 Accepted Answer

You can use the pitch function to get pitch values along with the time stamps
[x,fs] = audioread("SingingAMajor-16-mono-18secs.ogg");
winLength = round(0.05*fs);
overlapLength = round(0.045*fs);
[f0,idx] = pitch(x,fs,Method="SRH",WindowLength=winLength,OverlapLength=overlapLength);
tf0 = idx/fs;

3 Comments

Thank you. How this is not getting me the time stamp for the whole audio file
The internal code uses
hopLength = params.WindowLength - params.OverlapLength;
numHops = floor((size(x,1)-params.WindowLength)/hopLength);
varargout{2} = cast(((0:numHops)*hopLength + params.WindowLength)','like',x);
So it is more or less creating windows, and you are getting an index for each window.

Sign in to comment.

More Answers (0)

Categories

Find more on Audio Processing Algorithm Design in Help Center and File Exchange

Asked:

on 13 Oct 2022

Commented:

on 3 Nov 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!