save numpy array to wav audio file 保存为音频文件

创建日期: 2024-07-12 10:04 | 作者: 风波 | 浏览次数: 15 | 分类: Python

来源:https://stackoverflow.com/questions/10357992/how-to-generate-audio-from-a-numpy-array

需要安装 scipypip 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)
15 浏览
12 爬虫
0 评论