aboutsummaryrefslogtreecommitdiff
path: root/Recv.py
blob: 76de3e8ff93f411e7f56d50501a3dac0311a0161 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import struct

import numpy as np
import pyaudio
import threading
from utils import *


class Recv:
    def __init__(self, start_freq=19500):
        self.start_freq = start_freq
        self.freq_range = 500
        self.sampling_rate = 44100
        self.p = pyaudio.PyAudio()
        self.bytes_per_transmit = 1


        # TODO: use stream to send back the data
        self.CHUNK = 2048 * 2
        self.FORMAT = pyaudio.paInt32
        self.CHANNELS = 1
        self.RATE = 44100
        self.pause = False
        # stream object
        self.p = pyaudio.PyAudio()
        self.stream = self.p.open(
            format=self.FORMAT,
            channels=self.CHANNELS,
            rate=self.RATE,
            input=True,
            output=True,
            frames_per_buffer=self.CHUNK,
        )

    def read_audio_stream(self):
        data = self.stream.read(self.CHUNK)
        data_int = struct.unpack(str(self.CHUNK) + 'i', data)
        return data_int

    def listen(self):
        while True:
            data = self.read_audio_stream()
            recv_freq_range = self.freq_range / 2
            wave_to_bits(data, self.start_freq, recv_freq_range, self.bytes_per_transmit)


def main():
    recv = Recv()
    recv.listen()


if __name__ == "__main__":
    main()