语音识别之自定义参数生成音频信号

代码如下:

#-*- coding:utf-8 -*-
'''
   生成音频信号
'''
import numpy as np
import matplotlib.pyplot as plt
from scipy.io.wavfile import write

# 定义存储音频的输出文件
output_file = 'output_generated.wav'

# 指定音频的生成参数
# 指定生成一个3s长度的信号
duration = 3
# 采样频率为44100 单位为HZ
sampling_freq = 44100
# 音频的频率为587HZ
tone_freq = 587
# 时间轴上的值从-2*pi到2*pi
min_val = -2*np.pi
max_val = 2*np.pi
# 生成时间轴和音频信号
t = np.linspace(min_val,max_val,duration*sampling_freq)
audio = np.sin(2*np.pi*tone_freq*t)
# 为信号增加一些噪声
noise = 0.4*np.random.rand(duration*sampling_freq)
audio += noise
# 转换为16位整型数
# 放缩因子
scaling_factor=pow(2,15)-1
# 正则化
audio_normlized = audio/np.max(np.abs(audio))
audio_scaled=np.int16(audio_normlized*scaling_factor)

# 写入输出文件
write(output_file,sampling_freq,audio_scaled)

# 用前100个点 画出信号
audio = audio[:100]

# 生成时间轴
x_values=np.arange(0,len(audio),1) / float(sampling_freq)

# 将时间轴的单位转换为秒
x_values *= 1000

# 画出音频信号图
plt.plot(x_values,audio,color='black')
plt.xlabel('Time (ms)')
plt.ylabel('Amplitude')
plt.title('Audio signal')
plt.show()



效果图如下:

这里写图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐