当前位置: 首页 > news >正文

如何设置中国建设银行网站网页版游戏大全在线玩

如何设置中国建设银行网站,网页版游戏大全在线玩,合伙企业怎么注册公司,廊坊企业建站文章目录 概述一、soundgenerator.py文件soundgenerator.py实现代码一、convert_spectrogram_to_audio方法librosa.db_to_amplitudelibrosa.istft generate方法 二、generate.py文件实现代码load_fsdd函数说明select_spectrogram函数说明save_signals函数说明main函数说明 三、… 文章目录 概述一、soundgenerator.py文件soundgenerator.py实现代码一、convert_spectrogram_to_audio方法librosa.db_to_amplitudelibrosa.istft generate方法 二、generate.py文件实现代码load_fsdd函数说明select_spectrogram函数说明save_signals函数说明main函数说明 三、运行异常File Not FoundKeyError: /root/PycharmProjects/VAEGenerate/Mycode/fsdd/spectrogram/6_nicolas_15.wav.npy 总结 概述 这部分主要是在已经训练好的模型的基础上利用模型生成声音主要是两个py文件分别是soundgenerator.py和generate.py, 前一个文件是声明一个SoundGenerator类实现如下功能 将频谱图中的db转为振幅将频谱图转为波形图 后一个是具体调用的已经训练好的模型和SoundGenerator类进行声音生成的文件。 下面是针对各个模块进行的说明并展示最后的执行效果。 一、soundgenerator.py文件 soundgenerator.py实现代码 import librosafrom preprocess import MinMaxNormaliserclass SoundGenerator: Soundgenerator负责从频谱图生成对应的声音 def __init__(self, vae, hop_length):self.vae vaeself.hop_length hop_lengthself._min_max_normaliser MinMaxNormaliser(0, 1)def generate(self, spectrograms, min_max_values):generated_spectrograms, latent_representations \self.vae.reconstruct(spectrograms)signals self.convert_spectrograms_to_audio(generated_spectrograms, min_max_values)return signals, latent_representationsdef convert_spectrograms_to_audio(self, spectrograms, min_max_values):signals []for spectrogram, min_max_value in zip(spectrograms, min_max_values):# reshape the log spectrogramlog_spectrogram spectrogram[:, :, 0]# apply denormalisationdenorm_log_spec self._min_max_normaliser.denormalise(log_spectrogram, min_max_value[min], min_max_value[max])# log spectrogram - spectrogramspec librosa.db_to_amplitude(denorm_log_spec)# apply Griffin-Limsignal librosa.istft(spec, hop_lengthself.hop_length)# append signal to signalssignals.append(signal)return signals一、convert_spectrogram_to_audio方法 def convert_spectrograms_to_audio(self, spectrograms, min_max_values):signals []for spectrogram, min_max_value in zip(spectrograms, min_max_values):log_spectrogram spectrogram[:, :, 0] # 对频谱图进行调整denorm_log_spec self._min_max_normaliser.denormalise(log_spectrogram, min_max_value[min], min_max_value[max]) # 对数据进行反正则化进行恢复spec librosa.db_to_amplitude(denorm_log_spec) # 将分贝图转成振幅signal librosa.istft(spec, hop_lengthself.hop_length) # 使用反短傅立叶变化将数据恢复到频域signals.append(signal) # 将数据加载signal中并进行返回return signals这部分是负责将频谱图转成音频文件基本流程图下 对生成的数据进行逆正则化还原成原来的范围下的数据将分贝频域图转成振幅的数据模式librosa.db_to_amplitude将时频图还原成线性的时间域的波形图 librosa.db_to_amplitude 参考连接 功能描述将dB尺度下的频谱图转变成振幅频谱图使用分贝来衡量振幅原理下面的公式知道就行了不用记着 d b t o a m p l i t u d e ( S d b ) 10.0 ∗ ∗ ( 0.5 ∗ S d b / 10 l o g 10 ( r e f ) ) db_to_amplitude(S_db) ~ 10.0**(0.5 * S_db/10 log10(ref)) dbt​oa​mplitude(Sd​b) 10.0∗∗(0.5∗Sd​b/10log10(ref)) 输入 有分贝构成的数组 输出 是一个np.ndarray线性振幅频谱图 librosa.istft 功能描述 短时傅立叶变换的逆函数将时频领域的频谱图转成时间序列的频域图 输入 stft_matrix需要转换的频谱图数组hop_length窗口移动的步长 输出 ynp.ndarray有原来的stft_matrix重建之后的时间序列的信号 generate方法 def generate(self, spectrograms, min_max_values):generated_spectrograms, latent_representations \self.vae.reconstruct(spectrograms)signals self.convert_spectrograms_to_audio(generated_spectrograms, min_max_values)return signals, latent_representations这是生成函数的总函数具体流程如下 调用vae模型的重建方法根据潜在特征模型生成新的频谱图然后调用上一节将的函数将频谱图转成波形返回波形图和对应的特征表示 二、generate.py文件 实现代码 调用函数如下 load_fsdd加载频谱文件select_spectrograms选择频谱文件save_signals保存生成的文件main主要的执行函数 import os import pickleimport numpy as np import soundfile as sffrom soundgenerator import SoundGenerator from vae import VAE from train_vae import SPECTROGRAMS_PATHHOP_LENGTH 256 SAVE_DIR_ORIGINAL samples/original/ SAVE_DIR_GENERATED samples/generated/ MIN_MAX_VALUES_PATH /home/valerio/datasets/fsdd/min_max_values.pkldef load_fsdd(spectrograms_path):x_train []file_paths []for root, _, file_names in os.walk(spectrograms_path):for file_name in file_names:file_path os.path.join(root, file_name)spectrogram np.load(file_path) # (n_bins, n_frames, 1) 这部分不是很懂需要了解一下确定具体的一些要求 x_train.append(spectrogram)file_paths.append(file_path)x_train np.array(x_train)x_train x_train[..., np.newaxis] # - (3000, 256, 64, 1)return x_train, file_pathsdef select_spectrograms(spectrograms,file_paths,min_max_values,num_spectrograms2):sampled_indexes np.random.choice(range(len(spectrograms)), num_spectrograms)sampled_spectrogrmas spectrograms[sampled_indexes]file_paths [file_paths[index] for index in sampled_indexes]sampled_min_max_values [min_max_values[file_path] for file_path infile_paths]print(file_paths)print(sampled_min_max_values)return sampled_spectrogrmas, sampled_min_max_valuesdef save_signals(signals, save_dir, sample_rate22050):for i, signal in enumerate(signals):save_path os.path.join(save_dir, str(i) .wav)sf.write(save_path, signal, sample_rate)if __name__ __main__:# initialise sound generatorvae VAE.load(model)sound_generator SoundGenerator(vae, HOP_LENGTH)# load spectrograms min max valueswith open(MIN_MAX_VALUES_PATH, rb) as f:min_max_values pickle.load(f)specs, file_paths load_fsdd(SPECTROGRAMS_PATH)# sample spectrograms min max valuessampled_specs, sampled_min_max_values select_spectrograms(specs,file_paths,min_max_values,5)# generate audio for sampled spectrogramssignals, _ sound_generator.generate(sampled_specs,sampled_min_max_values)# convert spectrogram samples to audiooriginal_signals sound_generator.convert_spectrograms_to_audio(sampled_specs, sampled_min_max_values)# save audio signalssave_signals(signals, SAVE_DIR_GENERATED)save_signals(original_signals, SAVE_DIR_ORIGINAL)load_fsdd函数说明 def load_fsdd(spectrograms_path):x_train []file_paths []for root, _, file_names in os.walk(spectrograms_path):for file_name in file_names:file_path os.path.join(root, file_name)spectrogram np.load(file_path) # (n_bins, n_frames, 1)x_train.append(spectrogram)file_paths.append(file_path)x_train np.array(x_train)x_train x_train[..., np.newaxis] # - (3000, 256, 64, 1)return x_train, file_paths这部分是用来加载频谱图的spectrograms_path保存的是频谱文件的地址并将单个数据合并成数据集。因为处理之后的频谱图是二维的[n_bins,n_frames]但是模型是需要输入三维的数据所以增加一个最后的维度为1,充当channel数据同时获取对应频谱文件的保存路径。 select_spectrogram函数说明 def select_spectrograms(spectrograms,file_paths,min_max_values,num_spectrograms2):在加载的频谱文件数据spectrograms中随机抽取num_specctrograms个频谱并返回对应的min_max_values以便进行逆正则化:param spectrograms:处理过之后的频谱文件:param file_paths:每一个频谱图的对应的文件路径用于获取对应的最大最小值:param min_max_values:每一个频谱文件对应的最值:param num_spectrograms:需要提取的频谱图数量:return:sampled_indexes np.random.choice(range(len(spectrograms)), num_spectrograms) # 随机采样sampled_spectrogrmas spectrograms[sampled_indexes] # 获取抽样之后的数据图file_paths [file_paths[index] for index in sampled_indexes] # 获取对应索引的文件路径sampled_min_max_values [min_max_values[file_path] for file_path in # 获取对应频谱图的最大最小值索引file_paths]print(file_paths)print(sampled_min_max_values)return sampled_spectrogrmas, sampled_min_max_values # 返回采样之后频谱图以及对应的最值在频谱图中随机抽样特定数量的样本数据用于生成模型并返回对应样本的最值以便进行逆正则化 save_signals函数说明 import soundfile as sf def save_signals(signals, save_dir, sample_rate22050):将波形信号保存为对应wav文件:param signals:生成的波形信号:param save_dir:保存的路径:param sample_rate:采样率:return:for i, signal in enumerate(signals):save_path os.path.join(save_dir, str(i) .wav)sf.write(save_path, signal, sample_rate)这部分是将数据保存为对应的波形图用到了soundfile包这个python自带的包用于保存对应的数据 main函数说明 主要步骤 1、初始化一个sound generator实例 2、加载对应文件下的频谱图文件和最值文件 3、从频谱图和最值文件进行对应采样 4、生成与采样样例针对的音频 5、将生成的频谱图转成波形图 6、保存对应的音频信号# 初始化对应 vae VAE.load(model) sound_generator SoundGenerator(vae, HOP_LENGTH)# load spectrograms min max values with open(MIN_MAX_VALUES_PATH, rb) as f:min_max_values pickle.load(f)specs, file_paths load_fsdd(SPECTROGRAMS_PATH)# sample spectrograms min max values sampled_specs, sampled_min_max_values select_spectrograms(specs,file_paths,min_max_values,5)# generate audio for sampled spectrograms # 这里不仅仅生成了对应的信号还返回了对应的特征空间所以需要提前保存一下 signals, _ sound_generator.generate(sampled_specs,sampled_min_max_values)# convert spectrogram samples to audio # 注意这里是原来的频谱图也转成了对应的声音主要是和生成的声音进行对比 original_signals sound_generator.convert_spectrograms_to_audio(sampled_specs, sampled_min_max_values)# save audio signals save_signals(signals, SAVE_DIR_GENERATED) save_signals(original_signals, SAVE_DIR_ORIGINAL)这个main函数串联起了soundgenerator.py文件和generate.py文件包含了完整的生成函数的流程 三、运行异常 File Not Found 代码中需要在当前的工程项目中创建两个文件 KeyError: ‘/root/PycharmProjects/VAEGenerate/Mycode/fsdd/spectrogram/6_nicolas_15.wav.npy’ 这个字典是有问题的说明是preprocess的问题所以重新回过去修改代码。preprocess pipeline中save_feature中并没有返回对应的路径。 运行成功生成对应的数据 总结 这部分已经根据给的声音成功生成了相关的声音如果只讲这个估计时间不够所以我还需要将这部分的代码应用到对应的自动编码器中然后对比一下对应的生成效果同时还需要看一下相关的理论知识尝试使用不同的特征进行生成。我在怀疑自己这样写有什么意义本来就不是那么复杂的东西不过我自己太差了还是得好好看吧。那我花那么久的时间去实现这个真的有意义吗自己的研究方向又是什么那哎现在就是我想做那就做。
http://www.w-s-a.com/news/724237/

相关文章:

  • 网站开发知识网上怎么申请个人营业执照
  • 音乐网站建设费用营销策略都有哪些4p
  • 深圳制作网站怎么样wordpress 学习视频
  • 新公司注册网站传奇手游大型网站
  • 无极网站网站涉案多少人被抓网站的按钮怎么做
  • ds216j做网站做购物网站那个好
  • 做淘宝门头的网站阿里巴巴官网app
  • 安踏网站建设策划方案如何通过域名访问网站
  • 建设网站破解版seo查询 站长之家
  • 太原模板建站平台旅游企业网站建设工作的通知
  • 网站国外建设超级简历模板官网
  • 上海网站建设市场医药网站怎么做
  • 宁夏成城建设集团网站网店美工课本
  • 哪些网站的简历做的比较好政务服务 网站 建设方案
  • 如何建设个人网站凡科怎么样vps安装wordpress后怎样登录
  • 学seo朝阳区seo
  • 网站开发团队成员皮具网站建设
  • 国外外贸需求网站响应式布局网页
  • 手机端便民服务平台网站建设昆明网络哪家好
  • 产品网站建设找哪家舟山信息港
  • 唐山网站建设汉狮怎么样seol英文啥意思
  • 深圳小程序网站开发公司网页制作模板视频教程
  • 电子商务网站开发开题报告wordpress更改后台地址
  • 网站静态前端是什么工作
  • 餐饮门户网站 方案怎么做创业好项目
  • 做百度手机网站推广普通话的宣传标语
  • 记事本可以做网站吗网站服务器是主机吗
  • 手机网站被拦截怎么办怎么解决东营建设信息网网
  • 外贸网站模板免费微信网站开发技术
  • 视频盗版网站怎么做福州网站seo