吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4523|回复: 12
收起左侧

[Python 转载] 摩尔斯电码互转语音输出滴滴答答

  [复制链接]
hjc757 发表于 2020-10-4 17:03
本帖最后由 hjc757 于 2020-10-4 17:06 编辑


借鉴部分网络代码,大部分都是原创。
输入英文转摩尔斯码文本加cw语音
输入摩尔斯代码...---...如此,转英文
用到的库都是自带的,无需另行安装。
可以输出做个性铃声,感觉很拉风

[Python] 纯文本查看 复制代码
import wave
import math
import struct
ff=wave.open("morse.wav","w")
ff.setframerate(8000)
ff.setnchannels(1)
ff.setsampwidth(2)

def wv(t=0,f=0,v=0.5,wf=ff,sr=8000):
    '''
    t:写入时长
    f:声音频率
    v:音量
    wf:一个可以写入的音频文件
    sr:采样率
    '''
    tt=0
    dt=1.0/sr
    while tt<=t:
        s=math.sin(tt*math.pi*2*f)*v*32768 #采样,调节音量,映射到[-2^15,2^15)
        s=int(s)
        fd=struct.pack("h",s) #转换成8bit二进制数据
        wf.writeframes(fd) #写入音频文件
        tt+=dt #时间流逝
        
MORSE_CODE_DICT = { 'A':'.-', 'B':'-...',
                    'C':'-.-.', 'D':'-..', 'E':'.',
                    'F':'..-.', 'G':'--.', 'H':'....',
                    'I':'..', 'J':'.---', 'K':'-.-',
                    'L':'.-..', 'M':'--', 'N':'-.',
                    'O':'---', 'P':'.--.', 'Q':'--.-',
                    'R':'.-.', 'S':'...', 'T':'-',
                    'U':'..-', 'V':'...-', 'W':'.--',
                    'X':'-..-', 'Y':'-.--', 'Z':'--..',
                    '1':'.----', '2':'..---', '3':'...--',
                    '4':'....-', '5':'.....', '6':'-....',
                    '7':'--...', '8':'---..', '9':'----.',
                    '0':'-----', ', ':'--..--', '.':'.-.-.-',
                    '?':'..--..', '/':'-..-.', '-':'-....-',
                    '(':'-.--.', ')':'-.--.-'}

def encrypt(message):
    cipher = ''
    for letter in message:
        if letter != ' ':
            cipher += MORSE_CODE_DICT[letter] + ' '
        else:
            cipher += ' '
    return cipher

def decrypt(message):

    message += ' '

    decipher = ''
    citext = ''
    for letter in message:
        if (letter != ' '):
            i = 0
            citext += letter
        else:
            i += 1
            if i == 2 :
                decipher += ' '
            else:
                decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT
                .values()).index(citext)]
                citext = ''
    return decipher

def main(msg):
    message = msg
    if u'\u0039' >= message >= u'\u0030' or u'\u005a' >= message >= u'\u0041' or u'\u007a'>= message >= u'\u0061': #判断是否只有数字字母
        li = encrypt(message.upper())
        print (li)
        mo = []
        for i in li:
            if i=="-":
                mo.append("2")
                mo.append("0")
            elif i == ".":
                mo.append("1")
                mo.append("0")
            elif i==" ":
                mo.append("3")
        print(mo)
        lo = []
        for i in mo:
            if i =="0" or i == "1":
                lo.append(1)
            elif i =="2" or i == "3":
                lo.append(3)
        print(lo)
        note= {"1":600,"2":600,"3":0,"0":0} #600是滴答正玄波频率,如更改2个都改
        for i in range(len(mo)):
            wv(lo[i]/17.0,note[mo[i]]) #改变17数值cw快慢
        ff.close()
    else:
        result = decrypt(message)
        print (result)

if __name__ == '__main__':
    main("cq cq cq This is bg6stn")

免费评分

参与人数 3吾爱币 +7 热心值 +3 收起 理由
萌鬼出没 + 1 + 1 我很赞同!
寒山沸雪 + 1 + 1 我很赞同!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hjc757 发表于 2020-10-4 18:15
hjc757 发表于 2020-10-4 18:13
最后一行换成你手机号就可以了

报来电号码,这个配合tasker试试吧。tadker本身也带摩尔斯码
 楼主| hjc757 发表于 2020-10-4 18:13
jyjjf 发表于 2020-10-4 17:50
这个要是来电报手机号码用电码那就刁了

最后一行换成你手机号就可以了
 楼主| hjc757 发表于 2020-10-4 17:05
用到的库都是自带的,无需另行安装,可以输出做个性铃声
jefel 发表于 2020-10-4 17:37
作品多多,有才!
jyjjf 发表于 2020-10-4 17:50
这个要是来电报手机号码用电码那就刁了
钢蛋蛋哥 发表于 2020-10-4 18:05
牛 感谢分享
闪亮登场 发表于 2020-10-4 18:33
感谢分享
cike0319 发表于 2020-10-4 19:15
感谢分享
National 发表于 2020-10-4 20:28
感谢,我正喜欢玩这个
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表