Untitled

 avatar
unknown
plain_text
10 months ago
5.8 kB
18
Indexable
import ggwave
import pyaudio
import numpy as np

# Initialize GGWave
gg = ggwave.GGWave()

# The message to send
message = "Hello from Gibberlink demo"

# Encode the message into waveform
# Choose a protocol; you can pick based on audible vs ultrasonic, speed, etc.
protocol_id = 1  # for example
waveform = gg.encode(message, protocolId=protocol_id, volume=20)

# Play waveform via speaker
p = pyaudio.PyAudio()
stream_out = p.open(format=pyaudio.paFloat32,
                    channels=1,
                                        rate=48000,
                                                            output=True)
                                                            # Convert waveform bytes into appropriate numpy floats if needed
                                                            # (This depends on how ggwave.encode returns data)
                                                            stream_out.write(waveform)
                                                            stream_out.stop_stream()
                                                            stream_out.close()

                                                            # Now, to listen for a response (or same device echo for testing)
                                                            stream_in = p.open(format=pyaudio.paFloat32,
                                                                               channels=1,
                                                                                                  rate=48000,
                                                                                                                     input=True,
                                                                                                                                        frames_per_buffer=4096)

                                                                                                                                        print("Listening for message...")
                                                                                                                                        gg_instance = ggwave.init()

                                                                                                                                        try:
                                                                                                                                            while True:
                                                                                                                                                    data = stream_in.read(4096, exception_on_overflow=False)
                                                                                                                                                            result = gg.decode(gg_instance, data)
                                                                                                                                                                    if result is not None:
                                                                                                                                                                                try:
                                                                                                                                                                                                text = result.decode("utf-8")
                                                                                                                                                                                                            except:
                                                                                                                                                                                                                            text = str(result)
                                                                                                                                                                                                                                        print("Received:", text)
                                                                                                                                                                                                                                                    break
                                                                                                                                                                                                                                                    finally:
                                                                                                                                                                                                                                                        ggwave.free(gg_instance)
                                                                                                                                                                                                                                                            stream_in.stop_stream()
                                                                                                                                                                                                                                                                stream_in.close()
                                                                                                                                                                                                                                                                    p.terminate()
Editor is loading...
Leave a Comment