Recently, I have a research project that need me to cut a large number of wav files containing the voice from movies, youtube videos or songs based on words for statistical analysis. The sounds are in the language of Cantonese, English and Putonghua.
What I need to do is to cut the sound in wav file which contain many words to wav files in which each contains only one word.
For example, the sound contains the words "It may be hard to do it in English". What I am doing now is to use Audacity to first reduce the noise, and then cut the sound to 9 files each contains "It", "may", "be", "hard", "to", "do", "it", "in", "English" accordingly.
For Chinese, the waveform for each word is separated and I am thinking of a python program to cut the sound based on the sound intensity. I read this question Is there a function in python which returns the Amplitude/Sound Pressure Level of a sound file(like .wav) file? and found that scipy.io.wavefile.read() can return an array that seems to be based on the sound level with the sampling rate. I also read this Remove background noise from audio file (python or matlab) for dealing with the array. Is there other libraries or better methods to do it?
For English, I have to do speech recognition and match the recognized word and the sound segment that produced the recognized word, so that I can separate the sound segments to different files. What libraries can I use to do this thing, and how should I do it?