【Mo 人工智能技术博客】深度神经网络——中文语音识别

2023-10-27

1. 背景介绍

语音是人类自然的交互方式。计算机发明之后让机器能够“听懂”人类的语言、理解语言含义,并能做出正确回答就成为了人们追求的目标。这个过程主要采用了 3 种技术,即自动语音识别(automatic speech recognition,
ASR)、自然语言处理(natural language processing,
NLP)和语音合成(speech synthesis,SS)。语音识别技术的目的是让机器能听懂人类的语音,是一个典型的交叉学科任务。

2. 概述

语音识别系统模型由声学模型和语言模型两个部分组成,声学模型对应于语音到音素的概率计算,语言模型对应于音素到文字的概率计算。

一个连续语音识别系统大致可以由四个部分组成:特征提取,声学模型,语言模型和解码部分。具体过程是首先从语音数据中经过提取得到声学特征,然后经过模型训练统计得到一个声学模型,作为识别的模板,并结合语言模型经过解码处理得到一个识别结果。

声学模型是语音识别系统中关键的部分,它的作用是对声学单元产生的特征序列进行描述,对语音信号进行了分类。我们可以用声学模型来计算一段观测到的特征矢量属于各个声学单元的概率并根据似然准则将特征序列转化为状态序列。
本文数据集地址 清华大学THCHS30中文语音数据集
详细代码教程 中文语音识别

2.1 特征提取

神经网络不能将音频作为输入进行训练,所以第一步我们要对音频数据进行特征提取。常见的特征提取都是基于人类的发声机理和听觉感知,从发声机理到听觉感知认识声音的本质
常用的一些声学特征如下:

(1) 线性预测系数(LPC),线性预测分析是模拟人类的发声原理,通过分析声道短管级联的模型得到的。假设系统的传递函数跟全极点的数字滤波器是相似的,通常用 12一16个极点就可以描述语音信号的特征。所以对于 n 时刻的语音信号,
我们可以用之前时刻的信号的线性组合近似的模拟。然后计算语音信号的采样值和线性预测的采样值,并让这两者之间达到均方的误差(MSE)最小,就可以得到 LPC 。
(2) 感知线性预测(PLP),PLP 是一种基于听觉模型的特征参数。该参数是一种等效于 LPC 的特征,也是全极点模型预测多项式的一组系数。不同之处是
PLP 是基于入耳昕觉,通过计算应用到频谱分析中,将输入语音信号经过入耳听觉模型处理,替代 LPC 所用的时域信号,这样的优点是有利于抗噪语音特征的提取。

(3)梅尔频率倒谱系数(MFCC), MFCC 也是基于入耳听觉特性,梅尔频
率倒谱频带划分是在 Mel刻度上等距划的,Mel频率的尺度值与实际频率的对数分布关系更符合人耳的听觉特性,所以可以使得语音信号有着更好的表示。

(5)基于滤波器组的特征 Fbank(Filter bank), Fbank 特征提取方法就是相当
于 MFCC 去掉最后一步的离散余弦变换,跟 MFCC 特征, Fbank 特征保留了更多的原始语音数据。

(6)语谱图(Spectrogram),语谱图就是语音频谱图,一般是通过处理接收的时域信号得到频谱图,因此只要有足够时间长度的时域信号就可。语谱图的特点是观察语音不同频段的信号强度,可以看出随时间的变化情况。
本文就是通过将语谱图作为特征输入,利用 CNN 进行图像处理进行训练。语谱图可以理解为在一段时间内的频谱图叠加而成,因此提取语谱图的主要步骤分为:分帧、加窗、快速傅立叶变换(FFT)。

2.1.1 读取音频

第一步,我们需要找到利用 scipy 模块将音频转化为有用的信息, fs 为采样频率, wavsignal 为语音数据。我们的数据集的 fs 均为16khz 。

import scipy.io.wavfile as wav
filepath = 'test.wav'

fs, wavsignal = wav.read(filepath)

2.1.2 分帧、加窗

语音信号在宏观上是不平稳的,在微观上是平稳的,具有短时平稳性(10—30ms内可以认为语音信号近似不变为一个音素的发音),一般情况下取 25ms 。
为了处理语音信号,我们要对语音信号进行加窗,也就是一次仅处理窗中的数据。因为实际的语音信号是很长的,我们不能也不必对非常长的数据进行一次性处理。明智的解决办法就是每次取一段数据,进行分析,然后再取下一段数据,再进行分析。我们的加窗操作指的就是汉明窗操作,原理就是把一帧内的数据乘以一个函数 并得到新的一帧数据。公式下文已给出。
怎么仅取一段数据呢?因为之后我们会对汉明窗中的数据进行快速傅立叶变换(FFT),它假设一个窗内的信号是代表一个周期的信号(也就是说窗的左端和右端大致可以连续),而通常一小段音频数据没有明显的周期性,加上汉明窗后,数据就比较接近周期函数了。
由于加上汉明窗,只有中间的数据体现出来了,两边的数据信息丢失了,所以等会移窗的时候会有重叠的部分,当窗口取了 25ms 时,步长可以取 10ms (其中 a 的值一般取0.46)。
公式为:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlL19fbGF0ZXgvZDRjYmM0ZjEyY2JlZmM3YTU1MDY5ODM2NDJhYzVlZjAuc3Zn?x-oss-process=image/format,png#card=math&code=W(n,a)=(1-a)-a*cos[\frac{2n\pi}{N-1}],0\geq n \leq N-1&height=34.59770114942529&width=332.2988505747127)

代码为:

import numpy as np

x=np.linspace(0, 400 - 1, 400, dtype = np.int64)#返回区间内的均匀数字
w = 0.54 - 0.46 * np.cos(2 * np.pi * (x) / (400 - 1))

time_window = 25
window_length = fs // 1000 * time_window

# 分帧
p_begin = 0
p_end = p_begin + window_length
frame = wavsignal[p_begin:p_end]

plt.figure(figsize=(15, 5))
ax4 = plt.subplot(121)
ax4.set_title('the original picture of one frame')
ax4.plot(frame)

# 加窗

frame = frame * w
ax5 = plt.subplot(122)
ax5.set_title('after hanmming')
ax5.plot(frame)
plt.show()

图片为效果为:
image.png

2.1.3 快速傅立叶变换 (FFT)

语音信号在时域上比较难看出其特性,所以通常转换为频域上的能量分布,所以我们对每帧经过窗函数处理的信号做快速傅立叶变换将时域图转换成各帧的频谱,然后我们可以对每个窗口的频谱叠加得到语谱图。

代码为:

from scipy.fftpack import fft

# 进行快速傅里叶变换
frame_fft = np.abs(fft(frame))[:200]
plt.plot(frame_fft)
plt.show()

# 取对数,求db
frame_log = np.log(frame_fft)
plt.plot(frame_log)
plt.show()

2.2 CTC(Connectionist Temporal Classification)

谈及语音识别,如果这里有一个剪辑音频的数据集和对应的转录,而我们不知道怎么把转录中的字符和音频中的音素对齐,这会大大增加了训练语音识别器的难度。如果不对数据进行调整处理,那就意味着不能用一些简单方法进行训练。对此,我们可以选择的第一个方法是制定一项规则,如“一个字符对应十个音素输入”,但人们的语速千差万别,这种做法很容易出现纰漏。为了保证模型的可靠性,第二种方法,即手动对齐每个字符在音频中的位置,训练的模型性能效果更佳,因为我们能知道每个输入时间步长的真实信息。但它的缺点也很明显——即便是大小合适的数据集,这样的做法依然非常耗时。事实上,制定规则准确率不佳、手动调试用时过长不仅仅出现在语音识别领域,其它工作,如手写识别、在视频中添加动作标记,同样会面对这些问题。
这种场景下,正是 CTC 用武之地。 CTC 是一种让网络自动学会对齐的好方法,十分适合语音识别和书写识别。为了描述地更形象一些,我们可以把输入序列(音频)映射为X=[x1,x2,…,xT],其相应的输出序列(转录)即为Y=[y1,y2,…,yU]。这之后,将字符与音素对齐的操作就相当于在X和Y之间建立一个准确的映射,详细内容可见CTC经典文章
损失函数部分代码:

def ctc_lambda(args):
    labels, y_pred, input_length, label_length = args
    y_pred = y_pred[:, :, :]
    return K.ctc_batch_cost(labels, y_pred, input_length, label_length)

解码部分代码:

#num_result为模型预测结果,num2word 对应拼音列表。
def decode_ctc(num_result, num2word):
	result = num_result[:, :, :]
	in_len = np.zeros((1), dtype = np.int32)
	in_len[0] = result.shape[1];
	r = K.ctc_decode(result, in_len, greedy = True, beam_width=10, top_paths=1)
	r1 = K.get_value(r[0][0])
	r1 = r1[0]
	text = []
	for i in r1:
		text.append(num2word[i])
	return r1, text

3. 声学模型

模型主要利用 CNN 来处理图像并通过最大值池化来提取主要特征加入定义好的 CTC 损失函数来进行训练。当有了输入和标签的话,模型构造就可以自己进行设定,如果准确率得以提升,那么都是可取的。有兴趣也可以加入LSTM 等网络结构,关于 CNN 和池化操作网上资料很多,这里就不再赘述了。有兴趣的读者可以参考往期的卷积神经网络 AlexNet
代码:

class Amodel():
    """docstring for Amodel."""
    def __init__(self, vocab_size):
        super(Amodel, self).__init__()
        self.vocab_size = vocab_size
        self._model_init()
        self._ctc_init()
        self.opt_init()

    def _model_init(self):
        self.inputs = Input(name='the_inputs', shape=(None, 200, 1))
        self.h1 = cnn_cell(32, self.inputs)
        self.h2 = cnn_cell(64, self.h1)
        self.h3 = cnn_cell(128, self.h2)
        self.h4 = cnn_cell(128, self.h3, pool=False)
        # 200 / 8 * 128 = 3200
        self.h6 = Reshape((-1, 3200))(self.h4)
        self.h7 = dense(256)(self.h6)
        self.outputs = dense(self.vocab_size, activation='softmax')(self.h7)
        self.model = Model(inputs=self.inputs, outputs=self.outputs)

    def _ctc_init(self):
        self.labels = Input(name='the_labels', shape=[None], dtype='float32')
        self.input_length = Input(name='input_length', shape=[1], dtype='int64')
        self.label_length = Input(name='label_length', shape=[1], dtype='int64')
        self.loss_out = Lambda(ctc_lambda, output_shape=(1,), name='ctc')\
            ([self.labels, self.outputs, self.input_length, self.label_length])
        self.ctc_model = Model(inputs=[self.labels, self.inputs,
            self.input_length, self.label_length], outputs=self.loss_out)

    def opt_init(self):
        opt = Adam(lr = 0.0008, beta_1 = 0.9, beta_2 = 0.999, decay = 0.01, epsilon = 10e-8)
        self.ctc_model.compile(loss={'ctc': lambda y_true, output: output}, optimizer=opt)


4. 语言模型

4.1 介绍统计语言模型

统计语言模型是自然语言处理的基础,它是一种具有一定上下文相关特性的数学模型,本质上也是概率图模型的一种,并且广泛应用于机器翻译、语音识别、拼音输入、图像文字识别、拼写纠错、查找错别字和搜索引擎等。在很多任务中,计算机需要知道一个文字序列是否能构成一个大家理解、无错别字且有意义的句子,比如这几句话:

许多人可能不太清楚到底机器学习是什么,而它事实上已经成为我们日常生活中不可或缺的重要组成部分。
不太清楚许多人可能机器学习是什么到底,而它成为已经日常我们生活中组成部分不可或缺的重要。
不清太多人机可楚器学许能习是么到什底,而已常我它成经日为们组生中成活部不重可的或缺分要。

第一个句子符合语法规范,词义清楚,第二个句子词义尚且还清楚,第三个连词义都模模糊糊了。这正是从基于规则角度去理解的,在上个世纪70年代以前,科学家们也是这样想的。而之后,贾里尼克使用了一个简单的统计模型就解决了这个问题。从统计角度来看,第一个句子的概率很大,比如是 ,而第二个其次,比如是 ,第三个最小,比如是 。按照这种模型,第一个句子出现的概率是第二个的 10 的 20 次方倍,更不用说第三个句子了,所以第一个句子最符合常理。

4.2 模型建立

假设 S 为生成的句子,有一连串的词w1,w2,…wn构成,则句子 S 出现的概率为:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlL19fbGF0ZXgvNzk3Mjg5OGFlYmM0ZTdjZjYzMDAwY2NmZmEzNGU2MjEuc3Zn?x-oss-process=image/format,png#card=math&code=P(S) = P(w1,w2,…,wn) = P(w1)*P(w2|w1)*P(w3|w1,w2)…P(wn|w1,w2,…,wn-1)&height=18.50574712643678&width=603.448275862069)
由于计算机内存空间和算力的限制,我们明显需要更加合理的运算方法。一般来说,仅考虑与前一个词有关,就可以有着相当不错的准确率,在实际使用中,通常考虑与前两个词有关就足够了,极少情况下才考虑与前三个有关,因此我们可以选择采取下列这个公式:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlL19fbGF0ZXgvNjY5MzUyNDY5ZDIwNmJlMDhkN2EyMjViYzBiNjMwZWMuc3Zn?x-oss-process=image/format,png#card=math&code=P(S) = P(w1,w2,…,wn) = P(w1)*P(w2|w1)*P(w3| w2)…P(wn|wn-1)&height=18.50574712643678&width=502.0689655172414)
而 P 我们可以通过爬取资料统计词频来进行计算概率。

4.3 拼音到文本的实现

拼音转汉字的算法是动态规划,跟寻找最短路径的算法基本相同。我们可以将汉语输入看成一个通信问题,每一个拼音可以对应多个汉字,而每个汉字一次只读一个音,把每一个拼音对应的字从左到有连起来,就成为了一张有向图。未命名图片.png

5. 模型测试

声学模型测试:
image.png
语言模型测试:
image.png
由于模型简单和数据集过少,模型效果并不是很好。
项目源码地址:https://momodel.cn/explore/5d5b589e1afd9472fe093a9e?type=app

6. 参考资料

论文:语音识别技术的研究进展与展望
博客:ASRT_SpeechRecognition
博客:DeepSpeechRecognition

关于我们

Mo(网址:momodel.cn)是一个支持 Python 的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。


Mo 人工智能俱乐部 是由网站的研发与产品设计团队发起、致力于降低人工智能开发与使用门槛的俱乐部。团队具备大数据处理分析、可视化与数据建模经验,已承担多领域智能项目,具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术,并以此来促进数据驱动的科学研究。

目前俱乐部每周六在杭州举办以机器学习为主题的线下技术沙龙活动,不定期进行论文分享与学术交流。希望能汇聚来自各行各业对人工智能感兴趣的朋友,不断交流共同成长,推动人工智能民主化、应用普及化。

欢迎关注我们的微信公众号:MomodelAI

同时,欢迎使用 「Mo AI编程」 微信小程序

以及登录官网,了解更多信息:Mo 平台

Mo,发现意外,创造可能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Mo 人工智能技术博客】深度神经网络——中文语音识别 的相关文章

  • (discord.py) 尝试更改成员角色时,“用户”对象没有属性“角色”

    因此 我正在尝试编写一个机器人 让某人在命令中指定的主持人指定的一段时间内暂停角色 我知道该变量称为 小时 即使它目前以秒为单位 我稍后会解决这个问题 基本上 它是由主持人在消息 暂停 personmention numberofhours
  • Python BigQuery 存储。并行读取多个流

    我有以下玩具代码 import pandas as pd from google cloud import bigquery storage v1beta1 import os import google auth os environ G
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数

随机推荐

  • Canvas实战效果——代码雨、无规则运动背景、改变图片像素、元素拖动

    Canvas实战效果 代码雨 改变图片像素 元素拖动 摘要 概述 1 Canvas相关API操作 2 使用canvas实现代码雨效果 2 1 准备工作 2 2 绘制文字到canvas上 2 3 随机文字与随机颜色 2 4 让字符往下运动 2
  • 小米造车未有定论,鱼和熊掌可否兼得?

    CSDN 编者按 造车 造车 全世界都在造车 百度造车大热之后 雷布斯也有加入的趋势 小米模棱两可的回应让人遐想联翩 给我的感觉是 造车行列小米肯定是要加入的 关键是啥时候正式立项 从哪些方面着手 整理 Carol 出品 CSDN ID C
  • 浅读多模态学习综述

    摘要 在多模态深度学习发展前期总结当前多模态深度学习 发现在不同多模态组合和学习目标下 多模态深度学习实现过程中的共有问题 并对共有问题进行分类 叙述解决各类问题的方法 具体来说 从涉及自然语言 视觉 听觉的多模态学习中考虑了语言翻译 事件
  • Nginx 负载均衡upstream_check_module 健康检查

    大家都知道 前端nginx做反向代理 如果后端服务器宕掉的话 nginx是不能把这台real server踢出upstream的 所以还会有请求转发到后端的这台real server上面去 虽然nginx可以在localtion中启用pro
  • Spring+SpringMVC+Hibernate整合

    前几个星期老师在课堂上教了我们Spring和SpringMVC以及Hibernate 但自己一直没有实践过 所以今天就用Spring SpringMVC Hibernate整合做了一个用户登陆的模块 好让自己以后搞项目有一个可以参考的流程
  • 【大数据Hive】hive 事务表使用详解

    目录 一 前言 二 Hive事务背景知识 hive事务实现原理 hive事务原理之 delta文件夹命名格式
  • cgroup实践---使用cgroup限制mongodb进程内存

    多个业务需要共享mongodb集群资源 采用cgroup做资源隔离 限制mongod进程的内存 1 mkdir cgroup mount t cgroup o memory mongomemcg cgroup 创建cgroup环境 2 mk
  • 《区块链技术与应用》北大肖臻老师——课程笔记【4-5】

    区块链技术与应用 北大肖臻老师 课程笔记 4 5 一 比特币协议 比特币脚本 BitCoin Script Paxos协议 比特币 中的共识协议 consensus in BitCoin 女巫攻击 sybil attack 分叉攻击 for
  • 前沿交互技术在游戏中的应用

    获取数据的挑战 不过 生物特征识别的数据收集并不简单 在成本和时间承诺方面 它几乎是折扣可用性的极端对立 所有这些方法都需要专门的设备和软件来收集测量值并记录数据 对数据的分析也可能很耗时 并且需要比调查和可用性方法更高的统计复杂度 Per
  • 服务器端使用visdom进行可视化并更换端口(亲测有效)

    Visdom 是 Facebook 开源的一款用于创建 组织和共享实时丰富数据的可视化工具 通常结合pytorch结合使用很方便 服务器端使用visdom进行可视化 启动visdom本地可视化的方法很简单 只要在终端输入visdom或pyt
  • 笔记本怎么查看hdmi版本_同宗不同命!看着一样的笔记本的接口为啥差这么多?...

    点击上方 电脑爱好者 关注我们 每一款最新上市的笔记本身上都会配备两种USB接口 一种是标准的USB Type A 另一种就是USB Type C 后者也就是新款手机常用的支持正反插的新型接口 但是 长得一样 的USB接口 在传输速度和功能
  • [Linux]套接字通信

    摘于https subingwen cn 作者 苏丙榅 侵删 文章目录 1 套接字 socket 1 1 概念 1 2 网络协议 1 3 socket编程 1 3 1 字节序 1 3 2 IP地址转换 1 3 3 sockaddr 数据结构
  • xshell传输文件到服务器(ubuntu)(上传下载)

    一 利用xshell上传下载内容 点击xftp按钮 绿色按钮 出现一个对话框 对话框左边是本地的文件预览 对话框右边是服务器当前路径的文件预览 上传下载文件 直接拖拉内容 二 其他方式 1 xshell连接服务器 本地虚拟机 2 首先在服务
  • batch_size

    目录 3 5 Batch Size 3 5 1 为什么需要 Batch Size 3 5 2 Batch Size 值的选择 3 5 3 在合理范围内 增大Batch Siz
  • Qt 中QButtonGroup 的用法

    今天我们介绍下QButtonGroup的用法 按照字面意思理解就是按钮组 QButtonGroup能够用到很多地方 比如和QStackedWidget合起来使用能够达到实现tab 也可以单独使用形成多个按钮单选的需求 构造 QButtonG
  • vite+vue3+ts (1-创建工程)

    1 使用npm创建工程 node版本必须在12以上 npm init vitejs app 2 输入工程名 选择vue vue ts PS D vite gt npm init vitejs app npx 7 安装成功 用时 1 703
  • 【图片识别】基于Hough变化的答题卡识别(Matlab代码实现)

    本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 为了提高视频图像关键帧提取及修复效果 设计了一种基于计算机视觉的视频图像关键帧提取及修复方法 基于计算机视觉进行视频图像采集 采用阈值分割法建立灰
  • Error (suppressible): (vsim-3601) Iteration limit 10000000 reached at time 10520 ns.

    modelsim仿真拨错 vsim 3601 Iteration limit 10000000 reached 仿真迭代达到限制次数 超出迭代界限 问题 代码中存在逻辑回环 即将一个组合逻辑单元赋值产生的敏感变量与另一个组合逻辑相关 同时作
  • SQL数据库笛卡尔积、投影、选择、连接运算

    笛卡尔积 笛卡尔积之后 列数 R列数 S列数 行数 R列数 S列数 投影 主要从列的角度进行运算 投影之后不仅取消了原关系中某些列 也可能取消某些元组 元组就是行 目的是为了避免重复行 选择 图片中 式子意思是 从关系R中找到B列里等于 并
  • 【Mo 人工智能技术博客】深度神经网络——中文语音识别

    1 背景介绍 语音是人类自然的交互方式 计算机发明之后让机器能够 听懂 人类的语言 理解语言含义 并能做出正确回答就成为了人们追求的目标 这个过程主要采用了 3 种技术 即自动语音识别 automatic speech recognitio