Skip to content

Commit

Permalink
python : add local file saving example (#123)
Browse files Browse the repository at this point in the history
Added python example showing how to save .wav file locally without using HTTP service using wave & numpy libraries.
  • Loading branch information
demianzenkov authored Sep 26, 2024
1 parent 69f809b commit e2b650f
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions examples/ggwave-to-file/ggwave-to-file-local.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import ggwave
import wave
import numpy as np

# Parameters
volume_ = 20
sample_rate_ = 48000
filename = "output.wav"

# Generate audio waveform for string "hello python"
waveform = ggwave.encode("hello python", protocolId=5, volume=volume_)

# Convert byte data into float32
waveform_float32 = np.frombuffer(waveform, dtype=np.float32)

# Normalize the float32 data to the range of int16
waveform_int16 = np.int16(waveform_float32 * 32767)

# Save the waveform to a .wav file
with wave.open(filename, "wb") as wf:
wf.setnchannels(1) # mono audio
wf.setsampwidth(2) # 2 bytes per sample (16-bit PCM)
wf.setframerate(sample_rate_) # sample rate
wf.writeframes(waveform_int16.tobytes()) # write the waveform as bytes

0 comments on commit e2b650f

Please sign in to comment.