def audio(tag, tensor, sample_rate=44100):
tensor = make_np(tensor)
tensor = tensor.squeeze()
if abs(tensor).max() > 1:
print("warning: audio amplitude out of range, auto clipped.")
tensor = tensor.clip(-1, 1)
assert(tensor.ndim == 1), "input tensor should be 1 dimensional."
tensor_list = [int(32767.0 * x) for x in tensor]
import io
import wave
import struct
fio = io.BytesIO()
Wave_write = wave.open(fio, "wb")
Wave_write.setnchannels(1)
Wave_write.setsampwidth(2)
Wave_write.setframerate(sample_rate)
tensor_enc = b""
tensor_enc += struct.pack("<" + "h" * len(tensor_list), *tensor_list)
Wave_write.writeframes(tensor_enc)
Wave_write.close()
audio_string = fio.getvalue()
After Change
print("warning: audio amplitude out of range, auto clipped.")
tensor = tensor.clip(-1, 1)
if tensor.ndim == 1: // old API, which expects single channel audio
tensor = np.expand_dims(tensor, axis=1)
assert(tensor.ndim == 2), "Input tensor should be 2 dimensional."
length_frames, num_channels = tensor.shape
assert num_channels == 1 or num_channels == 2, "The second dimension should be 1 or 2."
with io.BytesIO() as fio:
soundfile.write(fio, tensor, samplerate=sample_rate, format="wav")
audio_string = fio.getvalue()
audio = Summary.Audio(sample_rate=sample_rate,
num_channels=num_channels,