Changkun Ou

Changkun Ou欧长坤

Science and art, life in between.科学与艺术,生活在其间。

Bridging HCI, AI, and systems programming. Building intelligent human-in-the-loop optimization systems. Informed by psychology, sociology, cognitive science, and philosophy.连接人机交互、AI 与系统编程。构建智能的人在环优化系统。融合心理学、社会学、认知科学与哲学。

Hash 碰撞的一种思路

今天在熊猫 TV 上看乌云白帽子大会,下面有三道互动的题目挺有意思的。 前面两题都很简单,第一题是解一个莫斯电码、第二题答案很简单,但是要提交答案需要在网页源码上懂点手脚。 第三题是重头戏,不过难度也不高,题目如下: 第三题每个人的答案都不一样,图片里被我划掉的这部分是我的用户名(手机号) K。 红色部分的一串数字就是经过上面的 DEKHash 算出的结果,所以题意就很明显了,找到 K' 使得 DEKHash(K') == DEKHash(K)。 题目中给出的是 Java 代码,我作为 Java 黑,显然是不能忍受的,所以弄成了 C++的版本: 1 2 3 4 5 6 7 long DEKHash(string str) { long hash = str.length(); for(int i = 0; i < str.length(); i++) { hash = ((hash<<5)^(hash>>27))^str.at(i); } return hash; } 下面来看我是怎么寻找这样的 K'。

Read More阅读更多 →

记一次完整的 Kaldi-TIMIT 示例运行

整个例子从 Sat Jun 4 22:45:55 CST 2016 开始,于 Sun Jun 5 11:16:53 CST 2016 结束,共经历约 12 个小时。 在 TIMIT 的代码中,一共分为了以下几个示例: 数据预处理; MFCC 特征提取 & 训练集和测试集的 CMVN,这里只提取了 MFCC,Kaldi 里支持 MFCC,PLP,PITCH; 单音树训练和解码,是语音识别最基础的部分 三音素的训练和解码(Deltas + Delta-Deltas) 三音素模型基础上做了LDA + MLLT变换的训练和解码 三音素模型基础上做了LDA + MLLT +SAT变换的训练和解码 三音素模型基础上做了SGMM2的训练和解码,SGMM2是povey 提出的 三音素模型基础上做了 MMI + SGMM2 的训练和解码 DNN 混合训练和解码(povey 版本模型,看网上说不建议使用?) 系统融合(DNN+SGMM) Karel DNN 通用深度学习模型的训练和解码 获取结果

Read More阅读更多 →

Kaldi 上的 TIMIT 例子

Kaldi 上提供了很多例子让我们学习,这里有一个 Kaldi 上提供例子的列表: http://kaldi-asr.org/doc/examples.html 但是大部分的数据库来源于LDC,并且需要成为会员才能下载。 我们这里使用一个叫做 TIMIT 的例子,当然他也是需要付费才能使用的数据集。 然而幸运的是我们可以在这个链接里找到所有的内容: http://www.fon.hum.uva.nl/david/ma_ssp/2007/TIMIT/ 因为版权问题我不准备提供直接下载的链接,但是我作为老司机可以指一条路:wget -r,剩下的就看你自己的造化了。 数据拿到后,目录下会多出很多 .html 的文件。我这里写了一个脚本用于删除这些多余的文件,并将小写目录转换成大写目录(在 Kaldi 的 TIMIT 脚本中写出的目录都是大写的):

Read More阅读更多 →

Kaldi 安装与部署

Kaldi 是一个用于语音识别的开发平台(工具包),目前已经较为成熟,而且文档很多。 本文提供一个 Kaldi 在 Mac OS X 10.11。5 下的安装教程,如果你用 Windows,请买一台 Mac。 下载源码 Kaldi 在 Github 上开源,我们应该直接下载他最新的源码执行编译。 1 git clone https://github.com/kaldi-asr/kaldi 编译 编译这种大型框架不应该去互联网上搜索任何安装教程,而是应该阅读官方的安装教程。(那我写这篇文章干嘛呢…(╯‵□′)╯︵┻━┻

Read More阅读更多 →

从科研写作谈起

目录 写在前面的话 科研创意的来源 准备篇 主题的选取 确定论文的类型 提出论点 会议投稿 期刊投稿 写作篇 写作动机 写作阶段 工具篇 写作工具 版本控制和存储 文献工具 图表工具 后记 进一步阅读的文献 ## 写在前面的话 马上就要进入研究生阶段了,本科的最后一个学期很多人问我为什么不直接找工作,而是选择继续读研。这里面有两个原因: 喜欢做研究,可以说我读研的最根本目的就是搞研究、做科研; 学历不补回来,这个算作是次要目的,那就是提高自己的学历。 总的来说,我个人的想法就是:一辈子只有一次机会,钱什么时候都可以赚,但错过了深造的机会,就一切都不可挽回了。 作为整个大学阶段的总结,我决定写一系列文章来总结我在大学中学到的一些科研经验和心得,并以此激励我在日后的路上发表更多更有价值的论文。

Read More阅读更多 →

Swift API 设计指南

原文链接:https://swift.org/documentation/api-design-guidelines/ 译者:Changkun Ou 2016-05-11 初稿 本文未经授权禁止转载 目录 目录 基本准则 命名 明确用法 为使用舒适而努力 合理使用术语 约定 一般约定 形参 实参标签 特殊说明 译者注: Argument 和 Parameter 两个词在很多文献中均翻译为参数,这是一个历史遗留问题。 但实际上 Argument 专用于 Actual Argument(实际参数,实参),Parameter 专用于 Formal Parameter(形式参数,形参)。 本译文在上下文没有歧义的情况下均翻译为参数,在其他情况下使用实参和形参来对 Argument 和 Parameter 加以区分。 进一步阅读:ISO/IEC 9899 - 在这份标准中,第 3 页的 actual parameter 和第 6 页的 formal argument 两种说法均被弃用。

Read More阅读更多 →

有趣的人类

中国人对于这种坐下来玩玩手表、动动手指然后填两张表就拿钱的方式还是很不习惯的?居然还死活不肯收… 此外,德国人还是很欣然接受的,可能是小费拿惯

Read More阅读更多 →

Githug 通关记录及指南

好吧,找到了一个和 git 有关的游戏: https://github.com/Gazler/githug 遂玩之… 挺有意思的.. 安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ➜ ~/Downloads sudo gem install githug Password: Fetching: mime-types-1.25.1.gem (100%) Successfully installed mime-types-1.25.1 Fetching: diff-lcs-1.2.5.gem (100%) Successfully installed diff-lcs-1.2.5 Fetching: grit-2.3.0.gem (100%) Successfully installed grit-2.3.0 Fetching: thor-0.14.6.gem (100%) Successfully installed thor-0.14.6 Fetching: githug-0.4.6.gem (100%) Successfully installed githug-0.4.6 Parsing documentation for mime-types-1.25.1 Installing ri documentation for mime-types-1.25.1 Parsing documentation for diff-lcs-1.2.5 Installing ri documentation for diff-lcs-1.2.5 Parsing documentation for grit-2.3.0 Installing ri documentation for grit-2.3.0 Parsing documentation for thor-0.14.6 Installing ri documentation for thor-0.14.6 Parsing documentation for githug-0.4.6 Installing ri documentation for githug-0.4.6 5 gems installed

Read More阅读更多 →