This commit is contained in:
yumoqing 2025-05-25 17:53:12 +08:00
parent 5bf16f60ec
commit 1af817ea4c

View File

@ -53,6 +53,20 @@ ode_method = "euler"
sway_sampling_coef = -1.0
speed = 1.0
def audio_ndarray_to_base64(waveform: np.ndarray, sample_rate: int = 16000) -> str:
# 如果是单通道,确保 shape 为 (samples, 1)
if waveform.ndim == 1:
waveform = waveform.reshape(-1, 1)
# 写入内存 bufferWAV 格式)
buffer = io.BytesIO()
sf.write(buffer, waveform, samplerate=sample_rate, format='WAV')
buffer.seek(0)
# base64 编码
b64_audio = base64.b64encode(buffer.read()).decode('utf-8')
return b64_audio
def write_wav_buffer(wav, nchannels, framerate):
fs = FileStorage()
fn = fs._name2path(f'{getID()}.wav', userid='tmp')
@ -182,7 +196,7 @@ class F5TTS:
async def inference_stream(self, prompt, speaker, speed_factor=1.0):
for d in self._inference_stream(prompt, speaker, speed_factor=speed_factor)
audio_b64=sound_ndarray2b64(d['audio'], d['sample_rate'])
audio_b64=audio_ndarray_to_base64(d['audio'], d['sample_rate'])
d['audio'] = audio_b64
yield d