MATLAB Answers

Reducing Noise and Artifacts with the Pitch Function

5 ビュー (過去 30 日間)
Manash Sahoo
Manash Sahoo 2021 年 2 月 10 日
コメント済み: Manash Sahoo 2021 年 2 月 17 日
Hi everyone!
I am using the pitch function on short audio files of speech utterences (usually less than 1 second long).
p = pitch(aud,app.recObj.SampleRate,'WindowLength',round(fs*.05));
However, when I do this, I usually get an output with a very low sampling rate that is rich with artifacts.
How can I make it so I it outputs at a higher sampling rate (I'm recording at 44100Hz), and remove artifacts? I've tried using a smaller window, but that usually ends up with the error "Invalid window length".
An example is provided below.
Thank you!

採用された回答

jibrahim
jibrahim 2021 年 2 月 17 日
Hi Manash,
If you want the rate of pitch estimates to be higher, you will need to increase the overlap length:
p = pitch(aud,app.recObj.SampleRate,'WindowLength',round(fs*.05),'OverlapLength',round(fs*.05)-1);
This will generate a pitch estimate for windows with a maximum overlap.
I suggest you first throw away silence from your signal (using the function detectSpeech) before getting the pitch. That will eliminate parts of the signal where pitch does not apply.
You can further smooth the signal with median filtering. There is a parameter on this function that allows you to control the length of the median filter.
  1 件のコメント
Manash Sahoo
Manash Sahoo 2021 年 2 月 17 日
You rock! Thank you so much!

サインインしてコメントする。

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by