chat-tts / tool /np.py
chenjgtea
拆分gpu、cpu模式运行模式
a536c15
raw
history blame contribute delete
711 Bytes
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()