1. 城镇大全网
  2. 综合百科

歌词软件(教你用 AI 做一个写歌词的软件)

歌词软件(教你用 AI 做一个写歌词的软件)

自然语言处理作为人工智能的一个重要分支,在我们的生活中得到了广泛应用。其中RNN算法作为自然语言处理的经典算法之一,是文本生成的重要手段。而今天我们就将利用RNN算法建立一个写歌词的软件。其中的界面如下:

RNN指的是循环神经网络,Recurrent Neural Network。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。

RNN模型有比较多的变种,这里介绍最主流的RNN模型结构如下:

上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。

这幅图描述了在序列索引号tt附近RNN的模型。其中:

    实验前的准备

    首先我们使用的python版本是3.6.5所用到的库有TensorFlow,是用来训练和加载神经网络常见的框架,常常用于数值计算的开源软件库。节点表示数学操作,线则表示在节点间相互联系的多维数据数组,即张量(tensor);tkinter用来绘制GUI界面的库;

    Pillow库在此项目中用来处理图片和字体等问题。因为我们的软件不是空白背景的。需要借助Image函数添加背景。

    RNN算法搭建

    1、数据集处理和准备:

    我们训练的数据集使用各种歌手的歌词本作为训练集。其中数据集放在date.txt里,其中部分数据集如下:

    2、模型的训练:

    模型训练的代码直接运行train.py即可训练。其中流程如下:

      界面的定义和调用

      界面中我们的布局是文本框、编辑框和按钮控件。程序的调用使用批处理文件调用以达到显示运行过程的效果。因为如果没有运行过程,难免会导致用户不清楚程序流程而强制运行容易导致卡死的情况。

      其中Bat里直接写入:

      python song.py

      其中过程效果如下:

      1、界面布局:

      界面布局使用canvas画布以达到添加背景图片的效果。背景图片设置为1.jpg,按钮背景图片设置为3.jpg。图片也可以自己更换掉。然后文本框作为提示的效果,分别定义字体,大小等等即可

      代码如下:

      root = tk.Tk
      root.title('AI写歌词')# 背景canvas = tk.Canvas(root, width=800, height=500, bd=0, highlightthickness=0)imgpath = '1.jpg'img = Image.open(imgpath)photo = ImageTk.PhotoImage(img)imgpath2 = '3.jpg'img2 = Image.open(imgpath2)photo2 = ImageTk.PhotoImage(img2)canvas.create_image(700, 400, image=photo)canvas.packlabel=tk.Label(text=请输入关键词:,font=(微软雅黑,20))entry = tk.Entry(root, insertbackground='blue', highlightthickness=2,font=(微软雅黑,15))entry.packentry1 = tk.Text(height=15,width=115)entry1.pack

      2、功能调用:

      我们使用按钮中的command参数调用已设置好的函数即可。其中函数部分我们通过生成文本和删除文本的方式读入数据和写入数据。为了防止数据重叠故在要时刻监测重复软件。定义的函数内容如下:

      def song:
      ss=entry.getf=open(1.txt,w)f.write(ss)f.closeos.startfile(1.bat)while True:if os.path.exists(2.txt):f=open(2.txt)ws=f.readf.closeentry1.insert(0.0, ws)breaktry:os.remove(1.txt)os.remove(2.txt)except:pass

      3、GUI代码:

      整个GUI界面代码如下:

      import tkinter as tk
      from PIL import ImageTk, Imageimport ostry:os.remove(1.txt)os.remove(2.txt)except:passimport osdef song:ss=entry.getf=open(1.txt,w)f.write(ss)f.closeos.startfile(1.bat)while True:if os.path.exists(2.txt):f=open(2.txt)ws=f.readf.closeentry1.insert(0.0, ws)breaktry:os.remove(1.txt)os.remove(2.txt)except:passroot = tk.Tkroot.title('AI写歌词')# 背景canvas = tk.Canvas(root, width=800, height=500, bd=0, highlightthickness=0)imgpath = '1.jpg'img = Image.open(imgpath)photo = ImageTk.PhotoImage(img)imgpath2 = '3.jpg'img2 = Image.open(imgpath2)photo2 = ImageTk.PhotoImage(img2)canvas.create_image(700, 400, image=photo)canvas.packlabel=tk.Label(text=请输入关键词:,font=(微软雅黑,20))entry = tk.Entry(root, insertbackground='blue', highlightthickness=2,font=(微软雅黑,15))entry.packentry1 = tk.Text(height=15,width=115)entry1.packbnt = tk.Button(width=15,height=2,image=photo2,command=song)canvas.create_window(100, 50, width=200, height=30,window=label)canvas.create_window(500, 50, width=630, height=30,window=entry)canvas.create_window(400, 100, width=220, height=50,window=bnt)canvas.create_window(400, 335, width=600, height=400,window=entry1)root.mainloop

      到这里,我们整体的程序就搭建完成,下面为我们程序的运行过程和结果:


      猜你喜欢:综合百科

      综合百科歌词软件(教你用 AI 做一个写歌词的软件)

      转载请注明:原文链接 | http://www.nnxc.com.cn/10043356867.html