bugfix
This commit is contained in:
parent
5bf16f60ec
commit
1af817ea4c
16
app/f5tts.py
16
app/f5tts.py
@ -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)
|
||||
|
||||
# 写入内存 buffer(WAV 格式)
|
||||
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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user