Used Pyaudion for Mac os

This commit is contained in:
Sohail Hosseini 2023-08-24 18:35:07 -04:00
parent 7264e73508
commit 540bfb1bf7
5 changed files with 21 additions and 23 deletions

View File

@ -1,5 +1,5 @@
import custom_speech_recognition as sr import custom_speech_recognition as sr
import pyaudiowpatch as pyaudio import pyaudio
from datetime import datetime from datetime import datetime
RECORD_TIMEOUT = 3 RECORD_TIMEOUT = 3
@ -38,22 +38,20 @@ class DefaultMicRecorder(BaseRecorder):
class DefaultSpeakerRecorder(BaseRecorder): class DefaultSpeakerRecorder(BaseRecorder):
def __init__(self): def __init__(self):
with pyaudio.PyAudio() as p: p = pyaudio.PyAudio()
wasapi_info = p.get_host_api_info_by_type(pyaudio.paWASAPI)
default_speakers = p.get_device_info_by_index(wasapi_info["defaultOutputDevice"])
if not default_speakers["isLoopbackDevice"]: # Get default input device information
for loopback in p.get_loopback_device_info_generator(): default_input_device_info = p.get_default_input_device_info()
if default_speakers["name"] in loopback["name"]:
default_speakers = loopback
break
else:
print("[ERROR] No loopback device found.")
source = sr.Microphone(speaker=True, source = sr.Microphone(
device_index= default_speakers["index"], device_index=default_input_device_info["index"],
sample_rate=int(default_speakers["defaultSampleRate"]), sample_rate=int(default_input_device_info["defaultSampleRate"]),
chunk_size=pyaudio.get_sample_size(pyaudio.paInt16), chunk_size=pyaudio.get_sample_size(pyaudio.paInt16),
channels=default_speakers["maxInputChannels"]) channels=default_input_device_info["maxInputChannels"]
)
super().__init__(source=source, source_name="Speaker") super().__init__(source=source, source_name="Speaker")
self.adjust_for_noise("Default Speaker", "Please make or play some noise from the Default Speaker...") self.adjust_for_noise("Default Speaker", "Please make or play some noise from the Default Speaker...")
# Don't forget to close PyAudio object when you're done
p.terminate()

View File

@ -7,7 +7,7 @@ import tempfile
import custom_speech_recognition as sr import custom_speech_recognition as sr
import io import io
from datetime import timedelta from datetime import timedelta
import pyaudiowpatch as pyaudio import pyaudio
from heapq import merge from heapq import merge
PHRASE_TIMEOUT = 3.05 PHRASE_TIMEOUT = 3.05

View File

@ -16,7 +16,7 @@ Follow these steps to set up and run Ecoute on your local machine.
### 📋 Prerequisites ### 📋 Prerequisites
- Python >=3.8.0 - Python >=3.8.0
- An OpenAI API key that can access OpenAI API (set up a paid account OpenAI account) - An OpenAI API key
- Windows OS (Not tested on others) - Windows OS (Not tested on others)
- FFmpeg - FFmpeg

View File

@ -107,7 +107,7 @@ class Microphone(AudioSource):
Imports the pyaudio module and checks its version. Throws exceptions if pyaudio can't be found or a wrong version is installed Imports the pyaudio module and checks its version. Throws exceptions if pyaudio can't be found or a wrong version is installed
""" """
try: try:
import pyaudiowpatch as pyaudio import pyaudio
except ImportError: except ImportError:
raise AttributeError("Could not find PyAudio; check installation") raise AttributeError("Could not find PyAudio; check installation")
from distutils.version import LooseVersion from distutils.version import LooseVersion

View File

@ -3,6 +3,6 @@ openai-whisper==20230314
Wave==0.0.2 Wave==0.0.2
openai==0.27.6 openai==0.27.6
customtkinter==5.1.3 customtkinter==5.1.3
PyAudioWPatch==0.2.12.5 PyAudio # for Mac
--extra-index-url https://download.pytorch.org/whl/cu117 # --extra-index-url https://download.pytorch.org/whl/cu117
torch torch