生成扫频音频(也可以生成单频点音频)

生成扫频音频(也可以生成单频点音频)

import numpy as np
import scipy.signal as signal
from scipy.io import wavfile


def generate_sweep_wav(file_name, sampwidth, framerate, frequency_begin, frequency_end, nchannels, time,
                       amplifier=2 ** -1, method='linear'):
    """
    生成扫频信号
    amplifier=2 ** -1(刚好居中一半,正常范围是-1~1)
    注释掉wave_data = wave_data.astype(np.short)
    """

    # generate the time bar
    t = np.arange(0, time, 1.0 / framerate)
    # generate the chirp signal from 300 to 3300Hz
    wave_data = signal.chirp(t, frequency_begin, time, frequency_end,
                             method=method) * amplifier  # method{‘linear’, ‘quadratic’, ‘logarithmic’, ‘hyperbolic’}, optional--Kind of frequency sweep.
    # cast to the type of short
    # wave_data = wave_data.astype(np.short)  # 不能加,加了都是0了。(本来是-1~1的范围)

    print("wave_data.shape:{}".format(wave_data.shape))
    if nchannels > 1:
        if wave_data.ndim == 1:
            wave_data.shape = (-1, 1)
            wave_data = np.tile(wave_data, int(nchannels))
            print("wave_data.shape:{}".format(wave_data.shape))

            print("np.min(wave_data):{}".format(np.min(wave_data)))
            print("np.max(wave_data):{}".format(np.max(wave_data)))

    if file_name:
        wavfile.write(file_name, framerate, wave_data)

    dtype = wave_data.dtype  #

    return wave_data, framerate, dtype, nchannels


file_name, sampwidth, framerate, frequency_begin, frequency_end, nchannels, time = "3000Hz.wav", 8, 44100, 3000, 3000, 2, 0.2
generate_sweep_wav(file_name, sampwidth, framerate, frequency_begin, frequency_end, nchannels, time, amplifier=0.5, method='linear')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值