Ejemplo n.º 1
0
    def __init__(self, displaySignal):
        threading.Thread.__init__(self)

        """pyaudio open the sound card"""
        self.p = pyaudio.PyAudio()

        print pyaudio.get_portaudio_version_text()

        print "(portaduio version:", pyaudio.get_portaudio_version(), ")"

        self.audio_data = 0
        self.displaySignal = displaySignal
        self.c = SlotCommunicate()

        try:
            self.in_stream = self.p.open(format=cfg.PYAUDIO_FORMAT_INT16,
                channels = cfg.SOUND_CARD_CHANNELS,
                rate = cfg.SOUND_CARD_RATE,
                input= True,
                frames_per_buffer = cfg.SOUND_CARD_CHUNK)

            self.out_stream = self.p.open(format = cfg.PYAUDIO_FORMAT_INT16, channels = cfg.SOUND_CARD_CHANNELS,
                                         rate = cfg.SOUND_CARD_RATE,
                                         output = True)

            print "open sound card succ. Sound card rate is: ", cfg.SOUND_CARD_RATE
        except:
            print "open sound card failure!"
Ejemplo n.º 2
0
    def _init(self):
        self.p = pyaudio.PyAudio()
        self.state = Player.empty

        self.device = self.p.get_default_output_device_info()
        self.host = self.p.get_host_api_info_by_index(self.device['hostApi'])
        self.portaudio_version = pyaudio.get_portaudio_version_text()
Ejemplo n.º 3
0
 def __str__(self):
     s  = _Device.__str__(self)
     s += 'portaudio        : %s %s\n'       %(pyaudio.get_portaudio_version(),
                                               pyaudio.get_portaudio_version_text())
     s += 'pyaudio          : %s\n'          %pyaudio.__version__
     s += 'output device    : id %i, %s\n'   %(self._index_out, self._device_out)
     s += 'input device     : id %i, %s\n'   %(self._index_in,  self._device_in)
     return s
Ejemplo n.º 4
0
    def __init__(self, Fs=16000, TinSec=10):
        '''
        Fs: 取樣頻率,預設值為 16000,
        TinSec: 保存語音長度,預設值為 10 sec
        '''
        print('RyAudio use %s' % pa.get_portaudio_version_text())

        self.Fs = Fs
        self.spBufferSize = 1024
        self.fftWindowSize = self.spBufferSize

        self.aP = pa.PyAudio()
        self.iS = pa.Stream(PA_manager=self.aP,
                            input=True,
                            rate=self.Fs,
                            channels=1,
                            format=pa.paInt16)
        self.oS = pa.Stream(PA_manager=self.aP,
                            output=True,
                            rate=self.Fs,
                            channels=1,
                            format=pa.paInt16)
        self.iTh = None
        self.oTh = None

        #self.sound=     None
        #self.soundTime= 0
        self.gettingSound = True
        self.playingSound = True

        self.t = 0
        self.b = None  # byte string
        self.x = None  # ndarray
        self.fft = None
        self.f0 = 0  #None
        self.en = 0  #None
        self.fm = 0  #None # frequency mean
        self.fv = 0  #None # frequency var
        self.fs = 0  #None # frequency std
        self.enP = 0  #None # AllPass
        self.enPL = 0  #None # LowPass
        self.enPH = 0  #None # HighPass

        self.entropy = 0  #None

        self.frameI = 0

        #self.frameN= self.spBufferSize/4  #1024/4 = 256
        self.TinSec = TinSec  #10 # sec
        self.frameN = self.Fs * self.TinSec / self.spBufferSize  #self.spBufferSize/4  #1024/4 = 256
        self.frameN = int(self.frameN)

        self.specgram = pl.random([self.frameN, self.spBufferSize / 2])

        self.xBuf = pl.random([self.frameN, self.spBufferSize])
Ejemplo n.º 5
0
def find_device():
    print("=" * 90)
    print("PortAudio System Info:")
    print("=" * 90)
    print("Version: %d" % pyaudio.get_portaudio_version())
    print("Version Text: %s" % pyaudio.get_portaudio_version_text())
    print("Number of Host APIs: %d" % max_apis)
    print("Number of Devices  : %d\n" % max_devs)

    Found = 0  # Device found? (1 = Yes / 0 = No)
    #for each audio device, determine if is an input or an output and add it to the appropriate list and dictionary
    for i in range(0, numdevices):
        if p.get_device_info_by_host_api_device_index(
                0, i).get('maxInputChannels') > 0:
            print(" Input Device id {0} - {1}".format(
                i,
                p.get_device_info_by_host_api_device_index(0, i).get('name')))
            if 'Audio' in str(
                    p.get_device_info_by_host_api_device_index(0,
                                                               i).get('name')):
                Found = 1
                DEVICE = i

        if p.get_device_info_by_host_api_device_index(
                0, i).get('maxOutputChannels') > 0:
            print("Output Device id {0} - {1}".format(
                i,
                p.get_device_info_by_host_api_device_index(0, i).get('name')))

    if Found == 1:
        # Manually using the device index of Samson Microphone
        devinfo = p.get_device_info_by_index(DEVICE)
        print('\nSelected device is: {0}\n'.format(devinfo.get('name')))

        try:
            if p.is_format_supported(
                    RATE,  # Sample rate
                    input_device=devinfo["index"],  # Which device to select
                    input_channels=devinfo[
                        'maxInputChannels'],  # Number of channels
                    input_format=FORMAT):  # Default
                #output_format=FORMAT):
                print('\nSupported Device -{0}- has -{1}- Channels\n'.format(
                    str(devinfo["index"]), str(devinfo['maxInputChannels'])))
            #print ('\nSupported Device -{0}- has -{1}- Channels\n'.format(str(devinfo["index"]),str(devinfo['maxInputChannels'])))
        except ValueError:
            print("\n16 bit Format is NOT supported!?!")

    else:
        print("\nNo Audio device found... Exit for now")
        sys.exit()
    return devinfo  # return all of the Audio Devices specifications
Ejemplo n.º 6
0
    def __init__(self, Fs= 16000, TinSec= 10):
        '''
        Fs: 取樣頻率,預設值為 16000,
        TinSec: 保存語音長度,預設值為 10 sec
        '''
        print('RyAudio use %s'%pa.get_portaudio_version_text())
        
        self.Fs= Fs
        self.spBufferSize=           1024
        self.fftWindowSize= self.spBufferSize

        self.aP= pa.PyAudio()
        self.iS= pa.Stream(PA_manager= self.aP, input= True, rate= self.Fs, channels= 1, format= pa.paInt16)
        self.oS= pa.Stream(PA_manager= self.aP, output= True, rate= self.Fs, channels= 1, format= pa.paInt16)
        self.iTh= None
        self.oTh= None

        #self.sound=     None
        #self.soundTime= 0
        self.gettingSound= True
        self.playingSound= True

        self.t= 0
        self.b= None  # byte string
        self.x= None  # ndarray
        self.fft= None
        self.f0= 0#None
        self.en= 0#None
        self.fm= 0#None # frequency mean
        self.fv= 0#None # frequency var
        self.fs= 0#None # frequency std
        self.enP= 0#None # AllPass
        self.enPL= 0#None # LowPass
        self.enPH= 0#None # HighPass

        self.entropy= 0#None

        self.frameI=   0

        #self.frameN= self.spBufferSize/4  #1024/4 = 256
        self.TinSec= TinSec #10 # sec
        self.frameN= self.Fs*self.TinSec/self.spBufferSize #self.spBufferSize/4  #1024/4 = 256
        self.frameN= int(self.frameN)

        self.specgram= pl.random([self.frameN, self.spBufferSize/2])

        self.xBuf= pl.random([self.frameN, self.spBufferSize])
Ejemplo n.º 7
0
def print_pyaudio_info(manager):
    print("portaudio version:")
    print("  " + pyaudio.get_portaudio_version_text())
    print()

    print("available devices:")
    apis_list = [
        manager.get_host_api_info_by_index(i)["name"]
        for i in range(manager.get_host_api_count())
    ]

    table = []
    for index in range(manager.get_device_count()):
        info = manager.get_device_info_by_index(index)

        ind = str(index)
        name = info["name"]
        api = apis_list[info["hostApi"]]
        freq = str(info["defaultSampleRate"] / 1000)
        chin = str(info["maxInputChannels"])
        chout = str(info["maxOutputChannels"])

        table.append((ind, name, api, freq, chin, chout))

    ind_len = max(len(entry[0]) for entry in table)
    name_len = max(len(entry[1]) for entry in table)
    api_len = max(len(entry[2]) for entry in table)
    freq_len = max(len(entry[3]) for entry in table)
    chin_len = max(len(entry[4]) for entry in table)
    chout_len = max(len(entry[5]) for entry in table)

    for ind, name, api, freq, chin, chout in table:
        print(
            f"  {ind:>{ind_len}}. {name:{name_len}}  by  {api:{api_len}}"
            f"  ({freq:>{freq_len}} kHz, in: {chin:>{chin_len}}, out: {chout:>{chout_len}})"
        )

    print()

    default_input_device_index = manager.get_default_input_device_info(
    )["index"]
    default_output_device_index = manager.get_default_output_device_info(
    )["index"]
    print(f"default input device: {default_input_device_index}")
    print(f"default output device: {default_output_device_index}")
Ejemplo n.º 8
0
def get_device_dict() -> dict:
    # Key: device ID. Value: Device name
    devices = {}

    print("PortAudio version text: ", pyaudio.get_portaudio_version_text())
    print("Host API count: ", py_audio.get_host_api_count())

    print("Default host API info: ", py_audio.get_default_host_api_info())

    default_index = py_audio.get_default_host_api_info()["index"]

    for i in range(py_audio.get_default_host_api_info()["deviceCount"]):
        devinfo = py_audio.get_device_info_by_host_api_device_index(default_index, i)
        if py_audio.get_device_info_by_host_api_device_index(default_index, i).get('maxInputChannels')>0:
            print("Device with audio, index: ", i, " name: ", devinfo["name"], " channels: ", py_audio.get_device_info_by_host_api_device_index(default_index, i).get('maxInputChannels'))
            devices[i] = (devinfo["name"], py_audio.get_device_info_by_host_api_device_index(default_index, i).get('maxInputChannels'))

    return devices
Ejemplo n.º 9
0
    def __init__(self, config, verbose, logger):
        """Initialize an MQTT client.

        Args:
            config (:class:`.ServerConfig`): The configuration of
                the MQTT client.
            verbose (bool): Whether or not the MQTT client runs in verbose
                mode.
            logger (:class:`logging.Logger`): The Logger object for logging
                messages.
        """
        self.config = config
        self.verbose = verbose
        self.logger = logger
        self.mqtt = Client()
        self.logger.debug('Using %s', pyaudio.get_portaudio_version_text())
        self.logger.debug('Creating PyAudio object...')
        self.audio = pyaudio.PyAudio()

        self.initialize()

        self.mqtt.on_connect = self.on_connect
        self.mqtt.on_disconnect = self.on_disconnect
        self.connect()
Ejemplo n.º 10
0
 def query_api_version(self) -> str:
     return pyaudio.get_portaudio_version_text()  # type: ignore
Ejemplo n.º 11
0
"""

import pyaudio

standard_sample_rates = [
    8000.0, 9600.0, 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0,
    44100.0, 48000.0, 88200.0, 96000.0, 192000.0
]

p = pyaudio.PyAudio()
max_apis = p.get_host_api_count()
max_devs = p.get_device_count()

print("\nPortAudio System Info:\n======================")
print("Version: %d" % pyaudio.get_portaudio_version())
print("Version Text: %s" % pyaudio.get_portaudio_version_text())
print("Number of Host APIs: %d" % max_apis)
print("Number of Devices  : %d" % max_devs)

print("\nHost APIs:\n==========")

for i in range(max_apis):
    apiinfo = p.get_host_api_info_by_index(i)
    for k in list(apiinfo.items()):
        print("%s: %s" % k)
    print("--------------------------")

print("\nDevices:\n========")

for i in range(max_devs):
    devinfo = p.get_device_info_by_index(i)
Ejemplo n.º 12
0
 def query_api_version(self):
     return pyaudio.get_portaudio_version_text()
Ejemplo n.º 13
0
# -*- encoding=utf-8 -*-

import pyaudio

print dir(pyaudio)

print pyaudio.get_portaudio_version()
print pyaudio.get_portaudio_version_text()

audio_hdl = pyaudio.PyAudio()

print dir(audio_hdl)

default_host_api_info = audio_hdl.get_default_host_api_info()
print default_host_api_info

default_input_device_info = audio_hdl.get_default_input_device_info()
print default_input_device_info

default_output_device_info = audio_hdl.get_default_output_device_info()
print default_output_device_info

device_count = audio_hdl.get_device_count()
print device_count

host_api_count = audio_hdl.get_host_api_count()
print host_api_count

host_api_info_by_index = audio_hdl.get_host_api_info_by_index(1)
print host_api_info_by_index
Ejemplo n.º 14
0
available serial ports.
"""

import sys
print('Python ' + sys.version)

try:
    import pykob
    print('PyKOB ' + pykob.VERSION)
except:
    print('PyKOB not installed')

try:
    import pyaudio
    pa = pyaudio.PyAudio()
    print('PyAudio ' + pyaudio.get_portaudio_version_text())
except:
    print('PyAudio not installed')

try:
    import serial
    print('pySerial ' + serial.VERSION)
    import serial.tools.list_ports
    for p in serial.tools.list_ports.comports():
        print(p)
except:
    print('pySerial not installed')

try:
    import tkinter as tk
    from tkinter import ttk