Browse Source

Les repliques sont maintenant stockée de manière compact en opus et converties au vol en wav.

Jean-Francois Burdet 6 years ago
parent
commit
c4ffb50131
42 changed files with 18 additions and 3 deletions
  1. 1 1
      README.md
  2. 17 2
      lenny.py
  3. BIN
      replies/random/atchoum.opus
  4. BIN
      replies/random/atchoum.wav
  5. BIN
      replies/random/baillement_mal_dormi.opus
  6. BIN
      replies/random/baillement_mal_dormi.wav
  7. BIN
      replies/random/bruit_chien.opus
  8. BIN
      replies/random/bruit_chien.wav
  9. BIN
      replies/random/ca_va_me_couter_combien.opus
  10. BIN
      replies/random/ca_va_me_couter_combien.wav
  11. BIN
      replies/random/cest_quoi_votre_nom_deja.opus
  12. BIN
      replies/random/cest_quoi_votre_nom_deja.wav
  13. BIN
      replies/random/entends_pas_bien.opus
  14. BIN
      replies/random/entends_pas_bien.wav
  15. BIN
      replies/random/me_semble_deja_appelle.opus
  16. BIN
      replies/random/me_semble_deja_appelle.wav
  17. BIN
      replies/random/niece_jeter_un_oeil.opus
  18. BIN
      replies/random/niece_jeter_un_oeil.wav
  19. BIN
      replies/random/on_ma_fait_la_morale.opus
  20. BIN
      replies/random/on_ma_fait_la_morale.wav
  21. BIN
      replies/random/oui_oui_cest_ca.opus
  22. BIN
      replies/random/oui_oui_cest_ca.wav
  23. BIN
      replies/random/oui_tres_bien_oui.opus
  24. BIN
      replies/random/oui_tres_bien_oui.wav
  25. BIN
      replies/random/rappeler_nom_entreprise.opus
  26. BIN
      replies/random/rappeler_nom_entreprise.wav
  27. BIN
      replies/random/satane_telephone_entends_rien.opus
  28. BIN
      replies/random/satane_telephone_entends_rien.wav
  29. BIN
      replies/random/toutafait.opus
  30. BIN
      replies/random/toutafait.wav
  31. BIN
      replies/random/vous_etes_sympathique.opus
  32. BIN
      replies/random/vous_etes_sympathique.wav
  33. BIN
      replies/random/vous_pouvez_repeter.opus
  34. BIN
      replies/random/vous_pouvez_repeter.wav
  35. BIN
      replies/start_sequence/00_allo.opus
  36. BIN
      replies/start_sequence/00_allo.wav
  37. BIN
      replies/start_sequence/01_quoi_jai_pas_compris.opus
  38. BIN
      replies/start_sequence/01_quoi_jai_pas_compris.wav
  39. BIN
      replies/start_sequence/02_oui_oui_cest_ca.opus
  40. BIN
      replies/start_sequence/02_oui_oui_cest_ca.wav
  41. BIN
      replies/start_sequence/03_oui_tres_bien_oui.opus
  42. BIN
      replies/start_sequence/03_oui_tres_bien_oui.wav

+ 1 - 1
README.md

@@ -29,7 +29,7 @@ les logiciels suivants :
 L'installation décrite ci-dessous est basée sur Arch Linux, avec une installation serveur:
 
 ```
-sudo pacman -S python2 lame linphone libxslt
+sudo pacman -S python2 lame linphone libxslt opus opus-tools
 sudo useradd -m  -s /bin/bash callblocker
 sudo su - callblocker
 git clone https://dev.burdet.ch/git/jfburdet/itslenny.git

+ 17 - 2
lenny.py

@@ -59,6 +59,7 @@ class RepliesFactory(object):
         self._start_replies = None
         self._random_replies = None
         self._pos = None
+        self._latest = None
         self.reset()
 
     def reset(self):
@@ -67,11 +68,20 @@ class RepliesFactory(object):
         self.reset_start()
 
     def reset_start(self):
-        self._start_replies = glob.glob(self._base_path + "/start_sequence/*.wav")
+        self._start_replies = glob.glob(self._base_path + "/start_sequence/*.opus")
         self._start_replies.sort()
 
     def reset_random(self):
-        self._random_replies = glob.glob(self._base_path + "/random/*.wav")
+        self._random_replies = glob.glob(self._base_path + "/random/*.opus")
+
+    def clear_latest(self):
+        os.remove(self._latest)
+
+    @staticmethod
+    def convert_from_opus(opus_fname):
+        wav_file = tempfile.NamedTemporaryFile(delete=False, suffix=".wav").name
+        subprocess.call("opusdec " + opus_fname + " " + wav_file, shell=True)
+        return wav_file
 
     def next(self):
         # On commence par la sequence du début
@@ -85,6 +95,9 @@ class RepliesFactory(object):
             result = random.choice(self._random_replies)
             self._random_replies.remove(result)
 
+        result = self.convert_from_opus(result)
+
+        self._latest = result
         return result
 
 
@@ -161,6 +174,8 @@ class SipConnection(object):
             sleep(duration)
             core.play_file = ""
 
+            self._replies.clear_latest()
+
             # On laisse l'autre l'occassion de reparler
             self._conversation.status = ConversationStatus.WAITFORANSWER
 

BIN
replies/random/atchoum.opus


BIN
replies/random/atchoum.wav


BIN
replies/random/baillement_mal_dormi.opus


BIN
replies/random/baillement_mal_dormi.wav


BIN
replies/random/bruit_chien.opus


BIN
replies/random/bruit_chien.wav


BIN
replies/random/ca_va_me_couter_combien.opus


BIN
replies/random/ca_va_me_couter_combien.wav


BIN
replies/random/cest_quoi_votre_nom_deja.opus


BIN
replies/random/cest_quoi_votre_nom_deja.wav


BIN
replies/random/entends_pas_bien.opus


BIN
replies/random/entends_pas_bien.wav


BIN
replies/random/me_semble_deja_appelle.opus


BIN
replies/random/me_semble_deja_appelle.wav


BIN
replies/random/niece_jeter_un_oeil.opus


BIN
replies/random/niece_jeter_un_oeil.wav


BIN
replies/random/on_ma_fait_la_morale.opus


BIN
replies/random/on_ma_fait_la_morale.wav


BIN
replies/random/oui_oui_cest_ca.opus


BIN
replies/random/oui_oui_cest_ca.wav


BIN
replies/random/oui_tres_bien_oui.opus


BIN
replies/random/oui_tres_bien_oui.wav


BIN
replies/random/rappeler_nom_entreprise.opus


BIN
replies/random/rappeler_nom_entreprise.wav


BIN
replies/random/satane_telephone_entends_rien.opus


BIN
replies/random/satane_telephone_entends_rien.wav


BIN
replies/random/toutafait.opus


BIN
replies/random/toutafait.wav


BIN
replies/random/vous_etes_sympathique.opus


BIN
replies/random/vous_etes_sympathique.wav


BIN
replies/random/vous_pouvez_repeter.opus


BIN
replies/random/vous_pouvez_repeter.wav


BIN
replies/start_sequence/00_allo.opus


BIN
replies/start_sequence/00_allo.wav


BIN
replies/start_sequence/01_quoi_jai_pas_compris.opus


BIN
replies/start_sequence/01_quoi_jai_pas_compris.wav


BIN
replies/start_sequence/02_oui_oui_cest_ca.opus


BIN
replies/start_sequence/02_oui_oui_cest_ca.wav


BIN
replies/start_sequence/03_oui_tres_bien_oui.opus


BIN
replies/start_sequence/03_oui_tres_bien_oui.wav