Esempio n. 1
0
class Audio:
    RESPEAKER_RATE = 16000
    RESPEAKER_CHANNELS = 1
    RESPEAKER_WIDTH = 2
    # import sounddevice as sd
    # print sd.query_devices()
    RESPEAKER_INDEX = 2  # refer to input device id
    CHUNK = 1024
    RECORD_SECONDS = 5
    WAVE_OUTPUT_FILENAME = "sc.wav"

    def __init__(self):
        dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
        self.mic_tuning = Tuning(dev)
        self.mic_tuning.set_vad_threshold(3.5)
        self.recording = False

    def readDOA(self):
        return self.mic_tuning.direction

    def readVAD(self):
        return self.mic_tuning.is_voice()

    @staticmethod
    def getSampleSize():
        p = pyaudio.PyAudio()
        return p.get_sample_size(p.get_format_from_width(
            Audio.RESPEAKER_WIDTH))

    def record(self):
        p = pyaudio.PyAudio()

        try:
            stream = p.open(rate=Audio.RESPEAKER_RATE,
                            format=p.get_format_from_width(
                                Audio.RESPEAKER_WIDTH),
                            channels=Audio.RESPEAKER_CHANNELS,
                            input=True)
        except IOError:
            return

        frames = []

        for i in range(
                0,
                int(Audio.RESPEAKER_RATE / Audio.CHUNK *
                    Audio.RECORD_SECONDS)):
            data = stream.read(Audio.CHUNK)
            frames.append(data)

        stream.stop_stream()
        stream.close()

        wf = wave.open(Audio.WAVE_OUTPUT_FILENAME, 'wb')
        wf.setnchannels(1)
        wf.setsampwidth(
            p.get_sample_size(p.get_format_from_width(Audio.RESPEAKER_WIDTH)))
        wf.setframerate(Audio.RESPEAKER_RATE)
        wf.writeframes(b''.join(frames))
        wf.close()
Esempio n. 2
0
def main():
    # find microphone array device
    dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
    # print("Device: {}".format(dev))

    # if the device exists
    if dev:
        last_doa = 0
        mic = Tuning(dev)

        file_ts = datetime.today().strftime("%Y%m%d%H%M%S")

        with open("log_" + file_ts + ".csv", "w") as csvfile:
            csvwriter = csv.writer(csvfile)
            csvwriter.writerow(["Timestamp", "VAD", "DOA"])

            while True:
                ts = time.time()
                vad = mic.is_voice()
                doa = mic.direction

                # print to console
                print("[{:.2f}] VAD: {} DOA: {}°".format(ts, vad, doa))

                # write to csv
                csvwriter.writerow([[ts, vad, doa]])

                # wait
                time.sleep(0.5)

    # if the device does not exist
    else:
        print("ReSpeaker Mic Array v2.0 device not found")
        return
Esempio n. 3
0
def respeaker():
    global dev
    pub = rospy.Publisher('ReSpeaker', Int32, queue_size=1)
    rospy.init_node('ReSpeaker_Pub', anonymous=True)
    mic_tuning = Tuning(dev)
    rate = rospy.Rate(10)
    while not rospy.is_shutdown():
        try:
            if mic_tuning.is_voice() == 1:
                direction_str = (360-mic_tuning.direction)*1280/360
                pub.publish(direction_str)
        except KeyboardInterrupt:
            break
        rate.sleep()
Esempio n. 4
0
from tuning import Tuning
import usb.core
import usb.util
import time

if __name__ == '__main__':
    dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
    if dev:
        Mic_tuning = Tuning(dev)
        while True:
            try:
                if Mic_tuning.is_voice():
                    print("I detected voice activity at angle %d" % Mic_tuning.direction)
                time.sleep(0.2)
            except KeyboardInterrupt:
                break
from tuning import Tuning
import usb.core
import usb.util
import time

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
#print dev
if dev:
    Mic_tuning = Tuning(dev)
    print Mic_tuning.is_voice()
    while True:
        try:
            print Mic_tuning.is_voice()
            time.sleep(1)
        except KeyboardInterrupt:
            break
Esempio n. 6
0
from tuning import Tuning
import usb.core
import usb.util
import time

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
#print dev
if dev:
    Mic_tuning = Tuning(dev)
    print Mic_tuning.is_voice()
    Mic_tuning.set_vad_threshold(15.0)
    while True:
        try:
            # print Mic_tuning.read('GAMMAVAD_SR')
            print(Mic_tuning.read('SPEECHDETECTED'),Mic_tuning.is_voice())
            # print Mic_tuning.is_voice()
            time.sleep(0.05)
        except KeyboardInterrupt:
            break
Esempio n. 7
0
from tuning import Tuning
import usb.core
import usb.util
import time

if __name__ == '__main__':
    dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
    if dev:
        Mic_tuning = Tuning(dev)
        while True:
            try:
                print("Voice activity %d" % Mic_tuning.is_voice())
                time.sleep(0.2)
            except KeyboardInterrupt:
                break
Esempio n. 8
0
    head_pub = rospy.Publisher('/qt_robot/head_position/command',
                               Float64MultiArray,
                               queue_size=1)

    # wait for publisher connections
    wtime_begin = rospy.get_time()
    while (head_pub.get_num_connections() == 0):
        rospy.loginfo("waiting for publisher connections...")
        if rospy.get_time() - wtime_begin > 10.0:
            rospy.logerr("Timeout while waiting for publisher connection!")
            sys.exit()
        rospy.sleep(1)

    # centering the head
    href = Float64MultiArray(data=[0, 0])
    head_pub.publish(href)
    rospy.sleep(1)

    microphone = Tuning(dev)
    while not rospy.is_shutdown():
        if not microphone.is_voice():
            continue
        mic = abs(microphone.direction - 180)
        angle = mic - MICROPHONE_ANGLE_OFFSET
        rospy.loginfo("mic: %d , head: %d" % (mic, angle))
        href.data = [angle, 0]
        head_pub.publish(href)

    rospy.loginfo("shutdowned!")
Esempio n. 9
0
from tuning import Tuning
import usb.core
import usb.util
import time

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
# print dev
if dev:
    Mic_tuning = Tuning(dev)
    print
    Mic_tuning.is_voice()
    while True:
        try:
            print(Mic_tuning.is_voice())
            time.sleep(1)
        except KeyboardInterrupt:
            break
Esempio n. 10
0
from tuning import Tuning
import usb.core
import usb.util
import time

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
#print dev
if dev:
    Mic_tuning = Tuning(dev)
    print Mic_tuning.is_voice()
    while True:
        try:
            # print Mic_tuning.is_voice()
            # time.sleep(1)
            if Mic_tuning.is_voice() == 1:
                print 1
        except KeyboardInterrupt:
            break
Esempio n. 11
0
#!/usr/bin/env python
import usb.util
from tuning import Tuning

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
mic_tuning = Tuning(dev)
while True:
    if mic_tuning.is_voice() == 1:
        direction_str = (360 - mic_tuning.direction) * 1280 / 360
        print(direction_str)
        break
Esempio n. 12
0
from tuning import Tuning
from pixel_ring import pixel_ring
import usb.core
import usb.util
import time

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
#print dev
if dev:
    Mic_tuning = Tuning(dev)
    # print Mic_tuning.is_voice(), Mic_tuning.direction
    i = Mic_tuning.is_voice()
    j = Mic_tuning.direction
    while True:
        Mic_tuning.set_vad_threshold(1.5)
        #		pixel_ring.set_brightness(0x00)	#turn off LED to conserve power
        try:
            #if (Mic_tuning.is_voice == True): #Attempting to refine code to only show when Mic_tuning.is_voice is 1
            print Mic_tuning.is_voice(
            ), Mic_tuning.direction  #Displays values 0 for noise or 1 for
            # human voice and Degrees
            time.sleep(1)
        except KeyboardInterrupt:
            break
Esempio n. 13
0
PORT = 10100

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)

if dev is None:
    print("Device not found.")

else:
    Mic_tuning = Tuning(dev)

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print('Addr:{}'.format((HOST, PORT)))
    print('Starting:{}'.format(datetime.now().isoformat()))
    print('Press CTRL+C to end.')

    while True:
        try:
            b = 'True' if Mic_tuning.is_voice() else 'False'
            t = datetime.now().isoformat()
            text = str.format('{},{},{}', Mic_tuning.direction, b, t)
            sock.sendto(bytes(text, 'utf-8'), (HOST, PORT))
            print(text)
            time.sleep(0.05)
        except KeyboardInterrupt:
            print('Ctrl+C')
            break

    sock.close()

    print('Done.')