分类
后端开发

转载:架构整洁之道, 看这一篇就够了!

本文转载自微信公众号:阿里技术,作者:韩帅

https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247490231&idx=1&sn=b12ac5475855701c7d5ab73bb4d2b8c0

程序的世界飞速发展,今天所掌握的技能可能明年就过时了,但有些知识历久弥新,掌握了它们,你在程序的海洋中就不会迷路,架构思想就是这样的知识。
本文是《架构整洁之道》的读书心得,作者将书中内容拆解后再组织,不仅加入了个人的独到见解,而且用一张详细的知识脉络图帮助大家了解整本书的精华。如果你读过这本书,可以将本文当做一次思想交流,如果你还没看过这本书,更要阅读这篇文章,相信你会得到不同于以往的启发。

分类
ASRT Python学习笔记 程序设计

Python实现录音和播放功能

我们在需要跟用户使用语音进行交互的场景中,经常需要使用到录音的功能,比如网络语音通话和语音助手等,而完整的从底层实现录音功能往往是相当困难的,通常通过调用相关API来实现。这里我们介绍一种使用Python(3.x)中的PyAudio软件包来实现录音的方法。

分类
数据结构和算法 程序设计

C++ 常用STL库总结

我们在使用C++开发相关软件、实现一些算法的时候,不可避免的会使用到STL标准库,本文对这个标准库常用的几种数据结构和算法库进行了整理。代码样例来自HowieMen,感谢。

分类
ASRT 后端开发 智能语音技术 模式识别 深度学习

ASRT:一个中文语音识别系统

ASRT是一套基于深度学习实现的语音识别系统,全称为Auto Speech Recognition Tool,由AI柠檬博主开发并在GitHub上开源(GPL 3.0协议)。本项目声学模型通过采用卷积神经网络(CNN)和连接性时序分类(CTC)方法,使用大量中文语音数据集进行训练,将声音转录为中文拼音,并通过语言模型,将拼音序列转换为中文文本。算法模型在测试集上已经获得了80%的正确率。基于该模型,在Windows平台上实现了一个基于ASRT的语音识别应用软件,取得了较好应用效果。这个应用软件包含Windows 10 UWP商店应用和Windows 版.Net平台桌面应用,也一起开源在GitHub上了。

分类
操作系统原理 数据结构和算法 程序设计

C语言基于MPI并行计算矩阵的乘法

矩阵的计算是并行计算里的一个很重要的问题。矩阵是一种网格化的数据,是一组同类型数值的集合,矩阵的出现,使得代数系统更完善,对各种实际问题的求解产生了巨大的作用。但是其庞大的计算量往往令人生畏,稍微大一点的矩阵,计算就变得非常繁琐,不仅仅是人,而且串行计算的程序,也同样会变得非常缓慢。这时我们就需要并行计算来解决这些问题了。

本文使用分治思想,利用主从节点方式,实现了一个并行计算的矩阵相乘程序,并将结果跟串行程序做了对比,计算了其加速比。

分类
Python学习笔记 操作系统原理 程序设计

使用C语言和Python基于MPI并行计算PI的值

圆周率PI是一个很神奇的数字,自古以来,包括数学家在内的很多人都曾使用过各种各样的算法去估算PI的真实值,并且都取得了一定的成就。古巴比伦人使用3.125作为PI的近似值,约公元前1700年的古埃及人则提出PI=3.1604,中国的祖冲之(430-501)则使用355/113作为近似值,使得PI值精确到了7位数。随着计算机的问世,以及科学技术发展的需要,PI的近似值目前精确位数早已突破万亿位。PI值除了有其每一位、每两位、每三位都符合均匀分布的统计规律特性之外,还可以用来检测计算机硬件的可靠性,而且,也可以用来入门并行计算。

分类
程序设计 综合技术

并行计算入门:mpich的安装与测试

在很多应用场景下,我们普遍需要进行并行计算,而不仅仅是并发。举个例子,比如机器学习中,我们常常使用GPU来并行训练神经网络;在例如Hadoop这种大数据计算平台等分布式系统中,不同的计算机之间,程序的执行也是并行的;同一台计算机中,多核处理器的不同CPU内核之间的计算也是并行的,系统可以此来均衡负载以及提高速度。那么,当我们有需要的时候,也可自己通过编写并行程序来进行计算,以实现我们所需要的功能,MPI就是这样的一个框架。

分类
操作系统原理 程序设计

进程间通信的五种方式原理及代码实现

在计算机系统中,进程之间有时需要进行数据的通信,但是不同进程之间的数据存储是相互隔离的,每一个进程只能访问自己占有的数据,这时候,我们就需要使用用于进程间通信的机制了。不过,除了套接字外,进程间通信的前提是两进程必须是父子进程关系,没有这种关系的进程间不能直接进行通信,而是需要利用其共同的父进程进行信息的中转。文本为计算机专业学生和从业者必学的基础知识。

进程间有以下几种通信机制:

分类
ASRT Python学习笔记 智能语音技术 程序设计

Python读取wav格式文件

我们经常需要处理wav格式的文件,读取其中的声音信号和相关参数,来做一些事情。如果我们使用C++来做,那么需要对文件的底层存储格式有一个透彻的了解才行,而且考虑不周还有可能出Bug;如果使用MatLab来做,虽然只有一行代码就可以读取文件,但是MatLab语言自身的局限性使得写出的代码难以在实际中投入使用。因此,兼顾简介易用和实用性,用Python来做就显得比较好了。

分类
信号处理 智能语音技术 程序设计

为声音文件添加白噪音

在数字信号的处理中,我们在研究一些问题的时候,经常会用到噪音,甚至有时候专门产生噪音并添加到某些信号中来研究一些问题。比如,图像和语音识别等任务中添加一些不同的噪音来测试机器学习模型在有噪音环境下的识别率。我们就需要使用一些方法来产生噪音并且添加到原信号中去。

噪声从物理角度上看,是声波的频率、强弱变化无规律、杂乱无章的声音。[1] 白噪声,是一种功率谱密度为常数的随机信号或随机过程。“白色”仅意味着信号是不相关的,白噪声定义要求其均值为零,但没有对信号应当服从哪种概率分布作出任何假设。如果某白噪声过程服从高斯分布,则它是“高斯白噪声”。类似的,还有泊松白噪声、柯西白噪声等。[2]