来源:https://stackoverflow.com/questions/10357992/how-to-generate-audio-from-a-numpy-array
需要安装 scipy
:pip install scipy -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
原答案
import numpy as np
from scipy.io.wavfile import write
rate = 44100
data = np.random.uniform(-1, 1, rate) # 1 second worth of random samples between -1 and 1
scaled = np.int16(data / np.max(np.abs(data)) * 32767)
write('test.wav', rate, scaled)
改进版
模型生成的音频数据写入文件
import numpy as np
from scipy.io.wavfile import write
from loguru import logger
import time
import os
import sys
def write_wav(data, rate, filename=None):
try:
if None == filename:
curtdir = os.path.dirname(os.path.abspath(__file__))
filename = os.path.join(curtdir, "tts", f"{time.time()}.wav")
os.makedirs(os.path.dirname(filename), exist_ok=True)
npzfile = filename + f"-{rate}.npz"
np.savez(npzfile, data)
#scaled = np.int16(data / np.max(np.abs(data)) * 32767)
write(filename, rate, data)
except Exception as e:
logger.exception(e)