How to find the highest peaks in an audio signal?
5 views (last 30 days)
Show older comments
Hi,
I have a set of audio files(.wav). Each audio file is the recording of a user typing a 8 letter word. Each letter when typed produces two sounds 1. when key is pressed, 2. when key is released. Total 16 sounds are produced for one complete typing. My question is, How can I find the highest peak of each press and release and how can I extract the timing information when a peak is occurred?
To simply my question, How to extract the timing information when a sound is produced?
How can i solve this problem. Please anyone guide me on this.
Thanks in advance.
4 Comments
Star Strider
on 16 Feb 2015
I was hoping for the .wav file, not the image. I would have done a spectrogram of it to see if the key-press and key-release had different (and ideally repeatable) spectra, then if they did, design appropriate digital filters to detect them.
Oh, well...
Accepted Answer
Greg Dionne
on 24 Mar 2015
Try something like this to get you started:
y = audioread('U1_S1_T1.wav')
yLeft = y(:,1);
yrmsenvLeft = sqrt(conv(yLeft.^2,ones(200,1)/200,'same'))
plot([yLeft yrmsenvLeft])
0 Comments
More Answers (1)
Image Analyst
on 15 Feb 2015
I know it seems obvious, but how about just thresholding??
loudElements = signal > someValue; % Logical vector.
loudIndexes = find(loudElements); % Linear indexes - actual index numbers.
Anyway, it's a start. If you need something more robust and sophisticated, you'll have to tweak it and develop something better.
9 Comments
Image Analyst
on 17 Feb 2015
Type "ver" to see if you have it. If you want it, you'll have to contact the Mathworks.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!