音频转二进制编码
import io
import base64
def generate(self, sentences: List[str], device='cpu'):
assert isinstance(sentences, list) and isinstance(sentences[0], str), \
'Input data should be List[str], but got {}'.format(type(sentences))
paddle.set_device(device)
audio_data = []
for sentence in sentences:
wav = self(sentence)
with io.BytesIO() as buffer:
sf.write(buffer, wav.numpy(), samplerate=self.samplerate, format='wav')
audio_data.append(base64.b64encode(buffer.getvalue()).decode())
logger.info('{} wave files have been generated'.format(len(sentences)))
return audio_data
二进制转音频文件
import base64
def decode_audio_data(audio_data: str, output_path: str, samplerate: int):
audio_binary = base64.b64decode(audio_data.encode())
with open(output_path, 'wb') as f:
f.write(audio_binary)
return sf.read(output_path, dtype='float32')[0]