写歌词软件有哪些(歌词制作软件app)
2023-01-18 canyinms.com 【 字体:大 中 小 】
写歌词软件有哪些,歌词制作软件app。小编来告诉你更多相关信息。
作者 | 李秋键 责编 | Carol
出品 | AI科技大本营(ID:rgznai100)
自然语言处理作为人工智能的一个重要分支,在我们的生活中得到了广泛应用。其中RNN算法作为自然语言处理的经典算法之一,是文本生成的重要手段。而今天我们就将利用RNN算法建立一个写歌词的软件。其中的界面如下:
RNN指的是循环神经网络,Recurrent Neural Network。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。
RNN模型有比较多的变种,这里介绍最主流的RNN模型结构如下:
上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。
这幅图描述了在序列索引号tt附近RNN的模型。其中:
x(t)x(t)代表在序列索引号tt时训练样本的输入。同样的,x(t?1)x(t?1)和x(t+1)x(t+1)代表在序列索引号t?1t?1和t+1t+1时训练样本的输入。
h(t)h(t)代表在序列索引号tt时模型的隐藏状态。h(t)h(t)由x(t)x(t)和h(t?1)h(t?1)共同决定。
o(t)o(t)代表在序列索引号tt时模型的输出。o(t)o(t)只由模型当前的隐藏状态h(t)h(t)决定。
L(t)L(t)代表在序列索引号tt时模型的损失函数。
y(t)y(t)代表在序列索引号tt时训练样本序列的真实输出。
U,W,VU,W,V这三个矩阵是我们的模型的线性关系参数,它在整个RNN网络中是共享的,这点和DNN很不相同。也正因为是共享了,它体现了RNN的模型的“循环反馈”的思想。
基于以上认知,我们开始搭建我们的软件。
实验前的准备
首先我们使用的python版本是3.6.5所用到的库有TensorFlow,是用来训练和加载神经网络常见的框架,常常用于数值计算的开源软件库。节点表示数学操作,线则表示在节点间相互联系的多维数据数组,即张量(tensor);tkinter用来绘制GUI界面的库;
Pillow库在此项目中用来处理图片和字体等问题。因为我们的软件不是空白背景的。需要借助Image函数添加背景。
RNN算法搭建
1、数据集处理和准备:
我们训练的数据集使用各种歌手的歌词本作为训练集。其中数据集放在date.txt里,其中部分数据集如下:
2、模型的训练:
模型训练的代码直接运行train.py即可训练。其中流程如下:
首先要读取数据集 设定训练批次、步数等等
数据载入RNN进行训练即可
其中代码如下:
def train:
filename = \'date.txt\'
with open(filename, \'r\', encoding=\'utf-8\') as f:
text = f.read
reader = TxtReader(text=text, maxVocab=3500)
reader.save(\'voc.data\')
array = reader.text2array(text)
generator = GetBatch(array, n_seqs=100, n_steps=100)
model = CharRNN(
numClasses = reader.vocabLen,
mode =\'train\',
numSeqs = 100,
numSteps = 100,
lstmSize = 128,
numLayers = 2,
lr = 0.001,
Trainprob = 0.5,
useEmbedding = True,
numEmbedding = 128
model.train(
generator,
logStep = 10,
saveStep = 1000,
maxStep = 100000
3、RNN网络搭建:
RNN算法的搭建,我们定义整个神经网络类,然后分别定义初始化、输入、神经元定义等函数。损失函数和优化器使用均方差和AdamOptimizer优化器即可。
部分代码如下: 4、歌词的生成:
设置关键词变量,读取模型文件,输出结果即可。
代码如下:
def main(_):
reader = TxtReader(filename=\'voc.data\')
model = CharRNN(
numClasses = reader.vocabLen,
mode = \'test\',
lstmSize = 128,
numLayers = 2,
useEmbedding = True,
numEmbedding = 128
checkpoint = tf.train.latest_checkpoint(\'./models/\')
model.load(checkpoint)
key=\"雪花\"
prime = reader.text2array(key)
array = model.test(prime, size=reader.vocabLen, n_samples=300)
print(\"《\"+key+\"》\")
print(reader.array2text(array))
界面的定义和调用
界面中我们的布局是文本框、编辑框和按钮控件。程序的调用使用批处理文件调用以达到显示运行过程的效果。因为如果没有运行过程,难免会导致用户不清楚程序流程而强制运行容易导致卡死的情况。
其中Bat里直接写入:
python song.py
其中过程效果如下:
1、界面布局:
界面布局使用canvas画布以达到添加背景图片的效果。背景图片设置为1.jpg,按钮背景图片设置为3.jpg。图片也可以自己更换掉。然后文本框作为提示的效果,分别定义字体,大小等等即可
代码如下:
2、功能调用:
我们使用按钮中的command参数调用已设置好的函数即可。其中函数部分我们通过生成文本和删除文本的方式读入数据和写入数据。为了防止数据重叠故在要时刻监测重复软件。定义的函数内容如下:
def song:
ss=entry.get
f=open(\"1.txt\",\"w\")
f.write(ss)
f.close
os.startfile(\"1.bat\")
while True:
if os.path.exists(\"2.txt\"):
f=open(\"2.txt\")
ws=f.read
f.close
entry1.insert(\"0.0\", ws)
break
try:
os.remove(\"1.txt\")
os.remove(\"2.txt\")
except:
pass
3、GUI代码: 整个GUI界面代码如下:
到这里,我们整体的程序就搭建完成,下面为我们程序的运行过程和结果:
源码地址:
链接:https://pan.baidu.com/s/1EJsHIXbKUmRG-MdHcqkdFg
提取码:iz5m 作者简介 :
李秋键,CSDN 博客专家,CSDN达人课作者。硕士在读于中国矿业大学,开发有taptap安卓武侠游戏一部,vip视频解析,文意转换工具,写作机器人等项目,发表论文若干,多次高数竞赛获奖等等。
AI修复100年前晚清影像喜提热搜,这两大算法立功了
CycleGan人脸转为漫画脸,牛掰的知识又增加了 | 附代码
一次对语音技术的彻底批判
用大白话彻底搞懂 HBase RowKey 详细设计
为什么黑客无法攻击公开的区块链?
再见 Python,Hello Julia!
百万人学AI 万人在线大会, 15+场直播抢先看!
猜你喜欢
云南省玉溪市2023-03-24 15:26发布大风蓝色预警
福建省漳州市2023-03-24 16:17发布雷电黄色预警
福建省龙岩市2023-03-24 15:48发布雷电黄色预警
广西壮族自治区桂林市2023-03-24 17:35发布雷电黄色预警
甘肃省陇南市2023-03-24 18:00发布道路结冰黄色预警
吉林省松原市2023-03-24 15:55发布森林火险黄色预警
福建省福州市2023-03-24 15:50发布暴雨蓝色预警
广西壮族自治区贺州市2023-03-24 16:34发布雷电黄色预警
广西壮族自治区桂林市2023-03-24 15:48发布雷电黄色预警
江西省赣州市2023-03-24 18:38发布雷电黄色预警
如何自制蛋挞
肉火烧面怎么和面
奶茶几分糖好喝
过桥米线是哪里的?
面霜和乳液的区别
怎么摘隐形眼镜
粉饼和散粉的区别
冷烫和热烫的区别
高品质香水如何鉴别?用三步就可以解决
如何去除黑眼圈