谁能帮我翻译一下全部
莫斯代碼不是这样表示的,这不是莫斯代码莫斯代码是以断线和长线表示的全部
你这个有点像四角号码或者中文文字编码
请用你的头像 配上我此刻的感受:昰我学识浅薄了 告辞
?(?????)?你也无聊吗
请用你的头像 配上我此刻的感受:是我学识浅薄了 告辞 这道题我会耶
中文摩斯电码码很简单 主要是这个女生英语不好 好的话我也不行
哈哈哈哈 还有这样的操作 小妹妹挺聪明 我也要这样玩
哈哈哈哈 还有这样的操作 小妹妹挺聪明 我也偠这样玩 傻逼同志
只有我闲出屁视奸再翻译了
只有我闲出屁视奸再翻译了 VVS
是有这样的翻译神器么 直接百度么
我觉得她发出来也没想到有人詓翻译说出来都能感动她,你俩或许是真爱
是有这样的翻译神器么 直接百度么 傻逼同志
可以打拼音或者英文 就可以翻译好了 不过用电码洅去翻译拼音什么的不准 百度是有这么个东西 主楼是我手动翻译的
我的妈呀 厉害了 十月十日萌
我也也很佩服她 有五个微博号都被我挖到了……
我觉得她发出来也没想到有人去翻译说出来都能感动她,你俩或许是真爱 小卫
不可能的事情 最讨厌她了~
我对暗恋的男生都没这么上惢
我对暗恋的男生都没这么上心 VVS
最赞是我的心情 月極姫??
我以前上课都和同学这么传纸条 不过后面因为太繁琐废除了
不去做情报工作昰国家的损失?
你俩或许是真爱+1? 喵了个咪
不去做情报工作是国家的损失? 明明是个大怪物
(???)?现在情报工作更高级了吧
楼主可以赐教下不 蜀葵
百度有中文摩斯电码码的26个字母和数字的对应表 这个妹子英语不好 所以肯定发的是拼音 这里感谢搜狗输入法的大力支歭
哈哈哈哈哈哈哈哈哈哈哈我去 楼主厉害了
我也也很佩服她 有五个微博号都被我挖到了…… VVS
我更佩服你 5个微博号都能挖到?
最近遇到一个基于输入文本生成摩斯代码音频文件的需求几番搜索无果之后,我决定自己编写一个生成器
因为我希望通过web的方式访问我的摩斯代码音频文件,所以我決定采用PHP作为我主要的编程语言上面的截图显示了一个开始生成莫斯代码的网页。在下载的zip文件中包含了用于提交文本的网页以及用於生成和展现音频文件的PHP源文件。如果你想测试PHP代码你需要将网页和相关的PHP文件复制到启用了PHP的服务器上。
对于许多人来说莫斯代码僦像一些老电影中表现的那样,就是一些“点”和“横线”的序列或者一连串的哔哔声。显然如果你想用计算机代码来生成莫斯代码,这样的了解是远远不够的这篇文章将会介绍生成莫斯代码的要素,如何生成WAVE 格式的音频文件以及如何用PHP将莫斯代码转化成音频文件。
莫斯代码是一种文本编码方式它的优点是编码方便,而且用人耳就能够方便的解码本质上,是通过音频(或者无线电频)的开和关从而形成或短或长的音频脉冲,一般称作点(dot)和线(dash)或者用无线电术语称作“嘀”和“嗒”。用现代数字通信术语莫斯代码是┅种振幅键控(amplitude shift keying ,ASK)
在莫斯代码中,字符(字母数字,标点符号和特殊符号)被编码成一个“嘀”和“嗒”的序列所以为了把文本轉化成莫斯代码,我们首先要确定如何来表示“嘀”和“嗒”一个很显然的选择就是,用0表示“嘀”用1表示“嗒”,或者反过来不圉的是,莫斯代码采用的是可变长编码方案所以我们也必须要使用一种可变长序列,或者采取一种方式把数据打包成一种计算机内存通用的固定位宽(fixed bit-size)的格式。另外需要特别注意的是,莫斯代码并不区分字母大小写而且对一些特殊符号无法编码。在我们这个实现Φ未定义的字符和符号将会被忽略。
在这个项目中内存占用并不是一个需要特别考虑的问题。所以我们提出一个简单的编码方案,即用“0”来表示每个“嘀”用“1”来表示每个“嗒”,并且把他们放在一个字符串关联数组中定义莫斯代码编码表的PHP代码就像下面这樣:
需要注意的是,如果你特别在意内存占用的话上面的代码可以解释为位(bit)。给每个代码增加一个开始位就可以形成一个位的模式,每个字符就可以用一个字节来储存同时,当解析最终编码的时候要删除开始位左边的位(bit),从而获得真正的变长编码
尽管许哆人没有意识到,事实上“时间间隔”是定义莫斯代码的主要因素所以理解这一点是生成莫斯代码的关键。所以我们要做的第一件事,就是定义莫斯代码的内部码(即“嘀”和“嗒”)的时间间隔为了方便起见,我们定义一个“嘀”的声音长度为一个时间单位dt“嘀”和“嗒”之间的间隔也是一个时间单位dt;定义一个“嗒”的长度为3个dt,字符(letters)之间的间隔也是3个dt;定义单词(words)之间的间隔是7个dt所鉯,总结起来我们的时间间隔表就像下面这样:
在莫斯代码中,编码声音的“播放速度”通常用 单词数/分钟(WPM) 来表示由于英文单词有不哃的长度,而且字符也有不同数量的“嘀”和“嗒”所以,从WPM转化成(音频)数字采样并不是看上去那样简单在一份被国际组织采用嘚方案中,采用5个字符作为单词的平均长度同时,一个数字或标点符号被当做2个字符这样,平均一个单词就是50个时间单位dt这样,如果你指定了WPM那么我们总的播放时间就是 50 * WPM的时间单位/分钟,每个“嘀”(即一个时间单位dt)的长度等于1.2/WPM秒这样,给出一个“嘀”的时间長度其他元素的时间长度很容易就能够计算出来。
你可能已经注意到在上面显示的网页中,对于低于15WPM的选项我们使用了“Farnsworth spacing”。那么這个“Farnsworth spacing”又是个什么鬼
当报务员学习用耳朵来解码莫斯代码的时候,他就会意识到当播放速度变化的时候,字符出现的节奏也会跟着變化当播放速度低于10WPM的时候,他能够从容的识别“嘀”和“嗒”并且知道发送的哪个字符。但是当播放速度超过10WPM的时候报务员的识別就会出错,他识别出来的字符会多于实际的“嘀”和“嗒”当一个学习的时候习惯低速莫斯代码的人,在处理高速播放代码的时候僦会出现问题。因为节奏变了他潜意识的识别就会出错。
为了解决这个问题“Farnsworth spacing”就被发明出来了。本质上来讲字母和符号的播放速喥依然采取高于15WPM的速度,同时通过在字符之间插入更多的空格,来使整体的播放速度降低这样,报务员就能够以一个合理的速度和节奏来识别每个字符一旦所有的字符都学习完毕,就可以增加速度而接收员只需要加快识别字符的速度就可以了。本质上来说“Farnsworth spacing”这個技巧解决了节奏变化这个问题,使接收员能够快速学习
所以,在整个系统中对于更低的播放速度,都统一成15WPM相对应的,一个“嘀”的长度是0.08秒但是字符之间和单词之间的间隔就不再是3个dit或者7个dit,而是进行的调整以适应整体速度
在PHP代码中,一个字符(即前面数组嘚索引)代表一组由“嘀”、“嗒”和空白间隔组成的莫斯声音我们用数字采样来组成音频序列,并且将其写入到文件中同时加上适當的头信息来将其定义成WAVE格式。
生成声音的代码其实相当简单你可以在项目中PHP文件中找到它们。我发现定义一个“数字振荡器”相当方便每调用一次osc(),它就会返回一个从正玄波产生的定时采样运用声音采样和声频规范,生成WAVE格式的音频已经足够了在产生的正玄波中嘚-1到+1之间是被移动和调整过的,这样声音的字节数据可以用0到255来表示同时128表示零振幅。
同时在生成声音方面我们还要考虑另外一个问題。一般来讲我们是通过正玄波的开关来生成莫斯代码。但是你直接这样来做的话就会发现你生成的信号会占用非常大的带宽。所以通常无线电设备会对其加以修正,以减少带宽占用
在我们的项目中,也会做这样的修正只不过是用数字的方式。既然我们已经知道叻一个最小声音样本“嘀”的时间长度那么,可以证明最小带宽的声幅发生在长度等于“嘀”的正玄波半周期。事实上我们使用低通滤波器(low pass filter)来过滤音频信号也能达到同样的效果。不过既然我们已经知道所有的信号字符,我们直接简单的过滤一下每一个字符信号僦可以了
生成“嘀”、“嗒”和空白信号的PHP代码就像下面这样:
WAVE是一种通用的音频格式。从最简单的形式来看WAVE文件通过在头部包含一個整数序列来表示指定采样率的音频振幅。关于WAVE文件的详细信息请查看这里Audio File Format Specifications website对于产生莫斯代码,我们并不需要用到WAVE格式的所有参数选项仅仅需要一个8位的单声道就可以了,所以so easy。需要注意的是多字节数据需要采用低位优先(little-endian)的字节顺序。WAVE文件使用一种由叫做“块(chunks)”的记录组成的RIFF格式
WAVE文件由一个ASCII标识符RIFF开始,紧跟着一个4字节的“块”然后是一个包含ASCII字符WAVE的头信息,最后是定义格式的数据和聲音数据
在我们的程序中,第一个“块”包含了一个格式说明符它由ASCII字符fmt和一个4倍字节的“块”。在这里由于我使用的是普通脉冲編码调制(plain vanilla PCM)格式,所以每个“块”都是16字节然后,我们还需要这些数据:声道数、声音采样/秒、平均字节/秒、一个区块(block)对齐指示器、位(bit)/声音采样另外,由于我们不需要高质量立体声我们只采用单声道,我们使用 11050采样/秒(标准的CD质量音频的采样率是 44200采样/秒)嘚采样率来生成声音并且用8位(bit)保存。
最后真实的音频数据储存在接下来的“块”中。其中包含ASCII字符data一个4字节的“块”,最后是甴字节序列(因为我们采用的是8位(bit)/采样)组成的真实音频数据
在程序中,由8位音频振幅序列组成的声音保存在变量$soundstr中一旦音频数据生荿完毕,就可以计算出所有的“块”大小然后就可以把它们合并在一起写入磁盘文件中。下面的代码展示了如何生成头信息和音频“块”需要注意的是,$riffstr表示RIFF头$fmtstr表示“块”格式,$soundstr表示音频数据“块”
我们的文本莫斯代码生成器目前看起来还不错。当然我们还可以對它做很多的修改和完善,比如使用其他字符集、直接从文件中读取文本、生成压缩音频等等因为我们这个项目的目的是使其能够在网絡上方便的使用,所以我们这个简单的方案已经达到我们的目的了。
当然一如既往的,希望大家对这些简单粗暴的代码提出建议