realtimestt_test.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from RealtimeSTT import AudioToTextRecorder
  2. from colorama import Fore, Back, Style
  3. import colorama
  4. import os
  5. if __name__ == '__main__':
  6. print("Initializing RealtimeSTT test...")
  7. colorama.init()
  8. full_sentences = []
  9. displayed_text = ""
  10. def clear_console():
  11. os.system('clear' if os.name == 'posix' else 'cls')
  12. def text_detected(text):
  13. global displayed_text
  14. sentences_with_style = [
  15. f"{Fore.YELLOW + sentence + Style.RESET_ALL if i % 2 == 0 else Fore.CYAN + sentence + Style.RESET_ALL} "
  16. for i, sentence in enumerate(full_sentences)
  17. ]
  18. new_text = "".join(sentences_with_style).strip() + " " + text if len(sentences_with_style) > 0 else text
  19. if new_text != displayed_text:
  20. displayed_text = new_text
  21. clear_console()
  22. print(displayed_text, end="", flush=True)
  23. # def text_detected(text):
  24. # global displayed_text
  25. # clear_console()
  26. # print(text)
  27. # sentences_with_style = [
  28. # f"{Fore.YELLOW + sentence + Style.RESET_ALL if i % 2 == 0 else Fore.CYAN + sentence + Style.RESET_ALL} "
  29. # for i, sentence in enumerate(full_sentences)
  30. # ]
  31. # new_text = "".join(sentences_with_style).strip() + " " + text if len(sentences_with_style) > 0 else text
  32. # if new_text != displayed_text:
  33. # displayed_text = new_text
  34. # clear_console()
  35. # print(displayed_text, end="", flush=True)
  36. def process_text(text):
  37. full_sentences.append(text)
  38. text_detected("")
  39. recorder_config = {
  40. 'spinner': False,
  41. 'model': 'large-v2',
  42. 'language': 'en',
  43. 'silero_sensitivity': 0.4,
  44. 'webrtc_sensitivity': 2,
  45. 'post_speech_silence_duration': 0.4,
  46. 'min_length_of_recording': 0,
  47. 'min_gap_between_recordings': 0,
  48. 'enable_realtime_transcription': True,
  49. 'realtime_processing_pause': 0.2,
  50. 'realtime_model_type': 'tiny.en',
  51. 'on_realtime_transcription_update': text_detected,
  52. #'on_realtime_transcription_stabilized': text_detected,
  53. }
  54. recorder = AudioToTextRecorder(**recorder_config)
  55. clear_console()
  56. print("Say something...", end="", flush=True)
  57. while True:
  58. recorder.text(process_text)