This works. I’m just saving the mp3 and then reading it back in.
import anvil.server
from gtts import gTTS
from io import BytesIO
import os
@anvil.server.callable
def speak(audio_string):
mp3_fp = BytesIO()
tts = gTTS(audio_string, lang='en')
tts.write_to_fp(mp3_fp)
tts.save("my_file.mp3")
with open('my_file.mp3', 'rb') as f:
data=f.read()
tts_blob = anvil.BlobMedia('audio/mpeg', data, name='audio.mp3')
os.remove('my_file.mp3')
return tts_blob