File size: 711 Bytes
214ea91 a536c15 214ea91 a536c15 |
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 |
import math
from numba import jit
import wave
from io import BytesIO
import numpy as np
from .av import wav2
def float_to_int16(audio: np.ndarray) -> np.ndarray:
am = int(math.ceil(float(np.abs(audio).max())) * 32768)
am = 32767 * 32768 // am
return np.multiply(audio, am).astype(np.int16)
def pcm_arr_to_mp3_view(wav: np.ndarray):
buf = BytesIO()
with wave.open(buf, "wb") as wf:
wf.setnchannels(1) # Mono channel
wf.setsampwidth(2) # Sample width in bytes
wf.setframerate(24000) # Sample rate in Hz
wf.writeframes(float_to_int16(wav))
buf.seek(0, 0)
buf2 = BytesIO()
wav2(buf, buf2, "mp3")
buf.seek(0, 0)
return buf2.getbuffer() |