x4nth055 / emotion-recognition-using-speech

Building and training Speech Emotion Recognizer that predicts human emotions using Python, Sci-kit learn and Keras
MIT License
572 stars 229 forks source link

requesting for configuring process documentation or instruction. #4

Closed Oblivion97 closed 4 years ago

Oblivion97 commented 5 years ago

How can I configure it for my native language?& if I want to test yours, how would I start the training & test the model?

x4nth055 commented 4 years ago

Hi, You can use custom data only as mentioned in README.md, after deleting my own custom data in data/train-custom and data/test-custom folders, you can add your own there. After that, you need to disable default datasets, here is the code for that:

from emotion_recognition import EmotionRecognizer
rec = EmotionRecognizer(None, emotions=["sad", "neutral", "happy"], tess_ravdess=False, emodb=False, custom_db=True)
rec.get_samples_by_class()

Outputs: (in my case)

         train  test  total
sad         21    16     37
neutral     21    16     37
happy       21    16     37
total       63    48    111

You can find the best model suited automatically:

rec.determine_best_model()

Outputs:

[+] Best model determined: MLPClassifier with 77.083% test accuracy

To add your custom data, all you need to do is converting your audio samples to 16000 sample rate as mentioned in README.md (please read it) and then labeling each sample by its emotion at the end of its name, here is an example: 20190615_014359_sad.wav will automatically classified as sad sample.

Tanish18 commented 4 years ago

Hi, Can I use your model to detect any other emotion like rudeness using my own custom-dataset? If yes, please guide.

Tanish18 commented 4 years ago

Hi, sorry to disturb you again, I am trying to use my own custom training dataset, I have done all the preprocessing of the files and changed the code as well. But I am getting the following error

deeprec = DeepEmotionRecognizer(emotions=['angry', 'sad', 'neutral', 'ps', 'happy'], n_rnn_layers=2, n_dense_layers=2, rnn_units=128, dense_units=128, emodb=False, tess_ravdess=False, custom_db=True) File "/home/ritika/emotion-recognition-using-speech/deep_emotion_recognition.py", line 116, in init self._compute_input_length() File "/home/ritika/emotion-recognition-using-speech/deep_emotion_recognition.py", line 151, in _compute_input_length self.load_data() File "/home/ritika/emotion-recognition-using-speech/deep_emotion_recognition.py", line 219, in load_data self.X_test = self.X_test.reshape((1, X_test_shape[0], X_test_shape[1])) IndexError: tuple index out of range

But when I change these tess_ravdess and emodb to True the code works fine, can you please help and let me know where am I missing the trick here?

Thank You

x4nth055 commented 4 years ago

Hey @Tanish18

Sorry for the late reply, I have fixed the issue, it was caused because the custom dataset doesn't have the emotions you specify.

For instance, if you specify 'angry' emotion, and you do not have angry samples in the custom dataset, it will raise this error, it was there because balance is set to True by default. Now I fixed it and it set it to False when there are no samples on some emotion classes.

So please pull the latest updates.

Thanks.