mirror of
https://github.com/ggerganov/ggwave.git
synced 2026-03-17 07:56:00 +08:00
Add python bindings + package (#10)
* wip : python package * wip : minor fixes * wip : upload package to main pypi * wip : initial text encoding * wip : extending C api * wip : use map of global instances * wip : added decode functionality * update main README
This commit is contained in:
9
examples/ggwave-py/README.md
Normal file
9
examples/ggwave-py/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
## ggwave-py
|
||||
|
||||
Python examples using the `ggwave` python package
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
pip install ggwave
|
||||
```
|
||||
28
examples/ggwave-py/receive.py
Normal file
28
examples/ggwave-py/receive.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import ggwave
|
||||
import pyaudio
|
||||
|
||||
p = pyaudio.PyAudio()
|
||||
|
||||
stream = p.open(format=pyaudio.paFloat32, channels=1, rate=48000, input=True, frames_per_buffer=1024)
|
||||
|
||||
print('Listening ... Press Ctrl+C to stop')
|
||||
instance = ggwave.init()
|
||||
|
||||
try:
|
||||
while True:
|
||||
data = stream.read(1024)
|
||||
res = ggwave.decode(instance, data)
|
||||
if (not res is None):
|
||||
try:
|
||||
print('Received text: ' + res.decode("utf-8"))
|
||||
except:
|
||||
pass
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
ggwave.free(instance)
|
||||
|
||||
stream.stop_stream()
|
||||
stream.close()
|
||||
|
||||
p.terminate()
|
||||
16
examples/ggwave-py/send.py
Normal file
16
examples/ggwave-py/send.py
Normal file
@@ -0,0 +1,16 @@
|
||||
import ggwave
|
||||
import pyaudio
|
||||
import numpy as np
|
||||
|
||||
p = pyaudio.PyAudio()
|
||||
|
||||
# generate audio waveform for string "hello python"
|
||||
waveform = ggwave.encode("hello python", txProtocol = 1, volume = 20)
|
||||
|
||||
print("Transmitting text 'hello python' ...")
|
||||
stream = p.open(format=pyaudio.paInt16, channels=1, rate=48000, output=True, frames_per_buffer=4096)
|
||||
stream.write(np.array(waveform).astype(np.int16), len(waveform))
|
||||
stream.stop_stream()
|
||||
stream.close()
|
||||
|
||||
p.terminate()
|
||||
Reference in New Issue
Block a user