当前位置:   article > 正文

python怎么训练语音合成_Python实现语音识别和语音合成

python 训练声音

声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。

通过傅里叶变换,可以将时间域的声音函数分解为一系列不同频率的正弦函数的叠加,通过频率谱线的特殊分布,建立音频内容和文本的对应关系,以此作为模型训练的基础。

案例:画出语音信号的波形和频率分布

# -*- encoding:utf-8 -*-

import numpy as np

import numpy.fft as nf

import scipy.io.wavfile as wf

import matplotlib.pyplot as plt

sample_rate, sigs = wf.read('../machine_learning_date/freq.wav')

print(sample_rate) # 8000采样率

print(sigs.shape) # (3251,)

sigs = sigs / (2 ** 15) # 归一化

times = np.arange(len(sigs)) / sample_rate

freqs = nf.fftfreq(sigs.size, 1 / sample_rate)

ffts = nf.fft(sigs)

pows = np.abs(ffts)

plt.figure('Audio')

plt.subplot(121)

plt.title('Time Domain')

plt.xlabel('Time', fontsize=12)

plt.ylabel('Signal', fontsize=12)

plt.tick_params(labelsize=10)

plt.grid(linestyle=':')

plt.plot(times, sigs, c='dodgerblue', label='Signal')

plt.legend()

plt.subplot(122)

plt.title('Frequency Domain')

plt.xlabel('Frequency', fontsize=12)

plt.ylabel('Power', fontsize=12)

plt.tick_params(labelsize=10)

plt.grid(linestyle=':')

plt.plot(freqs[freqs >= 0], pows[freqs >= 0], c='orangered', label='Power')

plt.legend()

plt.tigh

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号