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

网站开发太简单了框架网站优化排名易下拉用法

网站开发太简单了框架,网站优化排名易下拉用法,网站等保建设,太原网站优化公司前言 以下内容均来源于官方教程#xff1a;简单的音频识别#xff1a;识别关键字 音频识别 下载数据集 下载地址#xff1a;http://storage.googleapis.com/download.tensorflow.org/data/mini_speech_commands.zip 可以直接浏览器访问下载。 下载完成后将其解压到项目…前言 以下内容均来源于官方教程简单的音频识别识别关键字 音频识别 下载数据集 下载地址http://storage.googleapis.com/download.tensorflow.org/data/mini_speech_commands.zip 可以直接浏览器访问下载。 下载完成后将其解压到项目里从文件夹里可以看到有8个子文件夹文件夹的名称就是8个语音命令。 注意我们只需要mini_speech_commands文件夹其他的不需要 加载数据集 # 加载训练数据集、验证集 train_ds, val_ds tf.keras.utils.audio_dataset_from_directory(directory./data/mini_speech_commands, # 数据集路径batch_size64, # 批次validation_split0.2, # 验证集占数据集的20%seed0, # 指定随机生成数据集的种子# 每个样本的输出序列长度。音频剪辑在 1kHz 时为 16 秒或更短。将较短的填充到正好 1 秒并且会修剪较长的填充以便可以轻松批量处理output_sequence_length16000,subsetboth # 训练集和验证集两者同时使用 )获取类别 # 获取命令的类别 label_names np.array(train_ds.class_names) print(命令类别, label_names)刚好与子文件的名称和顺序一致。 维度压缩 文档中说此数据集仅包含单声道音频因此需要 对输入的音频数据进行维度压缩 单声道mono音频只有一个声道。这意味着所有的音频信号被混合到一个通道中不区分左右声道。在单声道音频中所有的声音通过单个扬声器播放。单声道音频适用于大部分音频应用如电话通信、语音录音等。 多声道stereo音频有两个声道左声道left channel和右声道right channel。通过左右声道的不同信号可以在音频空间上创建立体声效果。多声道音频提供了更加丰富的音频体验可以更好地模拟现实环境中的声音分布。常见的应用包括音乐播放、电影声音、游戏音效等。 def squeeze(audio,labels):audio tf.squeeze(audio,axis-1)return audio,labelstrain_ds train_ds.map(squeeze,tf.data.AUTOTUNE) val_ds val_ds.map(squeeze,tf.data.AUTOTUNE)拆分验证集 这块没太看明白在干嘛 test_ds val_ds.shard(num_shards2, index0) val_ds val_ds.shard(num_shards2, index1) for example_audio, example_labels in train_ds.take(1):print(example_audio.shape)print(example_labels.shape)绘制音频波形 这块只是让我们可视化的观察音频的波形这块后面可以注释掉 plt.figure(figsize(8, 5)) rows 3 cols 3 n rows * cols for i in range(n):plt.subplot(rows, cols, i1)audio_signal example_audio[i]plt.plot(audio_signal)plt.title(label_names[example_labels[i]])plt.yticks(np.arange(-1.2, 1.2, 0.2))plt.ylim([-1.1, 1.1]) plt.tight_layout() plt.show()将波形转换为频谱图 将波形转换为频谱图的目的是为了更好地分析和理解音频信号。 波形是时域上的表示它展示了音频信号在时间轴上的变化。然而频谱图是频域上的表示它将音频信号分解为不同的频率成分并显示每个频率成分的能量或振幅。 通过将波形转换为频谱图我们可以更清晰地看到音频信号中哪些频率成分对于特定的声音或事件是重要的。这对于音频处理任务如语音识别、音频分类、音频分割等以及音频信号理解和分析非常有帮助。 def get_spectrogram(waveform):spectrogram tf.signal.stft(waveform, frame_length255, frame_step128)spectrogram tf.abs(spectrogram)spectrogram spectrogram[..., tf.newaxis]return spectrogram浏览数据 打印一个示例的张量化波形和相应频谱图的形状并播放原始音频 for i in range(3):label label_names[example_labels[i]]waveform example_audio[i]spectrogram get_spectrogram(waveform)print(Label:, label)print(Waveform shape:, waveform.shape)print(Spectrogram shape:, spectrogram.shape)print(Audio playback)display.display(display.Audio(waveform, rate16000))从音频数据集创建频谱图数据集 # 从音频数据集创建频谱图数据集 def make_spec_ds(ds):return ds.map(map_funclambda audio,label: (get_spectrogram(audio), label),num_parallel_callstf.data.AUTOTUNE)train_spectrogram_ds make_spec_ds(train_ds) val_spectrogram_ds make_spec_ds(val_ds) test_spectrogram_ds make_spec_ds(test_ds)减少训练模型时的读取延迟 train_spectrogram_ds train_spectrogram_ds.cache().shuffle(10000).prefetch(tf.data.AUTOTUNE) val_spectrogram_ds val_spectrogram_ds.cache().prefetch(tf.data.AUTOTUNE) test_spectrogram_ds test_spectrogram_ds.cache().prefetch(tf.data.AUTOTUNE)使用卷积神经网络创建并训练模型 # 使用卷积神经网络创建模型 input_shape example_spectrograms.shape[1:] print(Input shape:, input_shape) num_labels len(label_names) norm_layer tf.keras.layers.Normalization() # 创建规范化层便于更好的进行模型训练和推断 norm_layer.adapt(datatrain_spectrogram_ds.map(map_funclambda spec, label: spec))model tf.keras.models.Sequential([tf.keras.layers.Input(shapeinput_shape),tf.keras.layers.Resizing(32, 32),norm_layer,tf.keras.layers.Conv2D(32, 3, activationrelu),tf.keras.layers.Conv2D(64, 3, activationrelu),tf.keras.layers.MaxPool2D(),tf.keras.layers.Dropout(0.25),tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activationrelu),tf.keras.layers.Dropout(0.5),tf.keras.layers.Dense(num_labels), ])model.summary()# 编译模型 model.compile(optimizertf.keras.optimizers.Adam(), # 优化器losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue), # 损失函数metrics[accuracy] # 准确率作为评估标准 )# 训练模型并记录训练的日志 history model.fit(train_spectrogram_ds,validation_dataval_spectrogram_ds,epochs10,callbackstf.keras.callbacks.EarlyStopping(verbose1, patience2), )评估性能 model.evaluate(test_spectrogram_ds, return_dictTrue)导出模型 class ExportModel(tf.Module):def __init__(self, model):self.model model# Accept either a string-filename or a batch of waveforms.# YOu could add additional signatures for a single wave, or a ragged-batch.self.__call__.get_concrete_function(xtf.TensorSpec(shape(), dtypetf.string))self.__call__.get_concrete_function(xtf.TensorSpec(shape[None, 16000], dtypetf.float32))tf.functiondef __call__(self, x):# If they pass a string, load the file and decode it.if x.dtype tf.string:x tf.io.read_file(x)x, _ tf.audio.decode_wav(x, desired_channels1, desired_samples16000,)x tf.squeeze(x, axis-1)x x[tf.newaxis, :]x get_spectrogram(x)result self.model(x, trainingFalse)class_ids tf.argmax(result, axis-1)class_names tf.gather(label_names, class_ids)return {predictions: result,class_ids: class_ids,class_names: class_names}export ExportModel(model) export(tf.constant(./data/mini_speech_commands/no/012c8314_nohash_0.wav))tf.saved_model.save(export, saved)下面是保存的模型 完整代码 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from IPython import display# 加载训练数据集、验证集 train_ds, val_ds tf.keras.utils.audio_dataset_from_directory(directory./data/mini_speech_commands, # 数据集路径batch_size64, # 批次validation_split0.2, # 验证集占数据集的20%seed0, # 指定随机生成数据集的种子# 每个样本的输出序列长度。音频剪辑在 1kHz 时为 16 秒或更短。将较短的填充到正好 1 秒并且会修剪较长的填充以便可以轻松批量处理output_sequence_length16000,subsetboth # 训练集和验证集两者同时使用 )# 获取命令的类别 label_names np.array(train_ds.class_names) print(命令类别, label_names)# 输入数据压缩def squeeze(audio, labels):audio tf.squeeze(audio, axis-1)return audio, labelstrain_ds train_ds.map(squeeze, tf.data.AUTOTUNE) val_ds val_ds.map(squeeze, tf.data.AUTOTUNE)# 拆分验证集 test_ds val_ds.shard(num_shards2, index0) val_ds val_ds.shard(num_shards2, index1)for example_audio, example_labels in train_ds.take(1):print(example_audio.shape)print(example_labels.shape)# 绘制音频波形 # plt.figure(figsize(8, 5)) # rows 3 # cols 3 # n rows * cols # for i in range(n): # plt.subplot(rows, cols, i1) # audio_signal example_audio[i] # plt.plot(audio_signal) # plt.title(label_names[example_labels[i]]) # plt.yticks(np.arange(-1.2, 1.2, 0.2)) # plt.ylim([-1.1, 1.1]) # plt.tight_layout() # plt.show()# 将波形转换为频谱图 def get_spectrogram(waveform):spectrogram tf.signal.stft(waveform, frame_length255, frame_step128)spectrogram tf.abs(spectrogram)spectrogram spectrogram[..., tf.newaxis]return spectrogram# 浏览数据 for i in range(3):label label_names[example_labels[i]]waveform example_audio[i]spectrogram get_spectrogram(waveform)print(Label:, label)print(Waveform shape:, waveform.shape)print(Spectrogram shape:, spectrogram.shape)print(Audio playback)display.display(display.Audio(waveform, rate16000))# 从音频数据集创建频谱图数据集def make_spec_ds(ds):return ds.map(map_funclambda audio, label: (get_spectrogram(audio), label),num_parallel_callstf.data.AUTOTUNE)train_spectrogram_ds make_spec_ds(train_ds) val_spectrogram_ds make_spec_ds(val_ds) test_spectrogram_ds make_spec_ds(test_ds)# 检查数据集的不同示例的频谱图 for example_spectrograms, example_spect_labels in train_spectrogram_ds.take(1):break# 减少训练模型时的读取延迟 train_spectrogram_ds train_spectrogram_ds.cache().shuffle(10000).prefetch(tf.data.AUTOTUNE) val_spectrogram_ds val_spectrogram_ds.cache().prefetch(tf.data.AUTOTUNE) test_spectrogram_ds test_spectrogram_ds.cache().prefetch(tf.data.AUTOTUNE)# 使用卷积神经网络创建模型 input_shape example_spectrograms.shape[1:] print(Input shape:, input_shape) num_labels len(label_names) norm_layer tf.keras.layers.Normalization() # 创建规范化层便于更好的进行模型训练和推断 norm_layer.adapt(datatrain_spectrogram_ds.map(map_funclambda spec, label: spec))model tf.keras.models.Sequential([tf.keras.layers.Input(shapeinput_shape),tf.keras.layers.Resizing(32, 32),norm_layer,tf.keras.layers.Conv2D(32, 3, activationrelu),tf.keras.layers.Conv2D(64, 3, activationrelu),tf.keras.layers.MaxPool2D(),tf.keras.layers.Dropout(0.25),tf.keras.layers.Flatten(),tf.keras.layers.Dense(128, activationrelu),tf.keras.layers.Dropout(0.5),tf.keras.layers.Dense(num_labels), ])model.summary()# 编译模型 model.compile(optimizertf.keras.optimizers.Adam(), # 优化器losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue), # 损失函数metrics[accuracy] # 准确率作为评估标准 )# 训练模型并记录训练的日志 history model.fit(train_spectrogram_ds,validation_dataval_spectrogram_ds,epochs10,callbackstf.keras.callbacks.EarlyStopping(verbose1, patience2), )# 评估性能 model.evaluate(test_spectrogram_ds, return_dictTrue)# 导出模型class ExportModel(tf.Module):def __init__(self, model):self.model modelself.__call__.get_concrete_function(xtf.TensorSpec(shape(), dtypetf.string))self.__call__.get_concrete_function(xtf.TensorSpec(shape[None, 16000], dtypetf.float32))tf.functiondef __call__(self, x):if x.dtype tf.string:x tf.io.read_file(x)x, _ tf.audio.decode_wav(x, desired_channels1, desired_samples16000,)x tf.squeeze(x, axis-1)x x[tf.newaxis, :]x get_spectrogram(x)result self.model(x, trainingFalse)class_ids tf.argmax(result, axis-1)class_names tf.gather(label_names, class_ids)return {predictions: result,class_ids: class_ids,class_names: class_names}export ExportModel(model) export(tf.constant(./data/mini_speech_commands/no/012c8314_nohash_0.wav))tf.saved_model.save(export, saved)加载使用导出的模型 使用模型预测down的音频 import tensorflow as tf# 直接加载模型的目录 new_model tf.saved_model.load(./saved) res new_model(./data/mini_speech_commands/down/004ae714_nohash_0.wav) print(结果,res)class_names [down, go, left, no, right, stop, up, yes] class_index res[class_ids].numpy()[0] class_name class_names[class_index] print(类别名称, class_name)
http://www.w-s-a.com/news/94094/

相关文章:

  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo
  • 电子毕业设计代做网站wordpress 插件放在那
  • 黄石规划建设局网站怎么做存储网站
  • 网站安装wordpress滨江网站建设
  • 河南官网网站建设一般使用的分辨率显示密度是
  • dedecms新网站 上传到万网的空间宝洁公司网站做的怎么样
  • 网站建设语录优惠券的网站怎么做的
  • 白山市住房和建设局网站有实力高端网站设计地址
  • 沧州网站建设制作设计优化深圳网站自然优化
  • 企业做网站 乐云seowordpress中修改html
  • 网站细节门户wordpress主题下载
  • 全景网站模版wordpress套餐
  • 华为云建网站dw制作一个手机网站模板
  • 定陶菏泽网站建设河北新出现的传染病
  • 商业网站建设案例教程郑州服装网站建设公司
  • 网站内容怎么做专业的企业管理软件
  • 深圳网站制作公司排名微网站和微信公共平台的区别
  • 权威的唐山网站建设扁平网站欣赏
  • 网站外链建设工作计划应用公园app免费制作
  • 东莞营销型网站建设全自动建站系统
  • 网络在线培训网站建设方案虚拟主机配置WordPress
  • 建设工程信息查询哪个网站好台州做优化