1. 引言
由于数字媒体技术的进步,数字视频和音乐已经在人类生活中普遍存在。视频被广泛用于记录和捕捉重要的时刻,如婚礼,毕业典礼和生日聚会等。此外,随着YouTube、Flickr、抖音、快手等社交媒体网站上传的视频内容越来越多,用户可以轻松自由地分享自己的个人视频,然而冗长未经编辑的视频看起来很无趣。因此,让视频更具吸引力逐渐成为人们的基本需求。目前有几种方法可以自动编辑视频使其变得更有趣:一种是视频摘要,主要目的是从原始视频中发现重要部分,自动生成简洁但有信息的摘要帮助用户理解,并且目前在视频自动摘要方面已经有了大量的研究成果 [1];另一种方法是在视频中添加背景音乐使得视频更加生动,基本原理是通过对视觉与听觉跨模态信息的分析显示,这种视听互补信息在改善多媒体语义信息理解方面具有重要的利用价值 [2]。视频和音乐都是被广泛使用的媒体,但它们之间的联系并没有被很好地探索。有效的视频与音乐匹配技术在跨模态检索、音乐检索以及自动生成音乐视频等方面都有广泛的应用。
视觉刺激会使人们在听音乐时产生共鸣,而音乐则会在视觉感知中为场景增色。仅有音乐或只有视频图像给人的感觉较为乏味,但当图像或剪辑的视频与音乐同时出现时将带来人们更好的视听觉享受。因此对于现代电影和电视节目,音乐是重要组成部分。而如何将音乐和视频图像更好的匹配融合,成为时代发展的研究课题。许多研究人员从不同角度开展了诸多的研究,比如Olivier collignon等人用自我报告和对比反应时间的方法证明视听情绪内容一致的时能提升带来的情绪的感受,当不一致时视听内容的表达将会产生相互抑制的影响 [3]。
用户在与他人分享精彩视频之前,需要进行视频编辑和气氛渲染,选择一种合适的背景音乐嵌入到所拍摄视频中成为最有效的方式之一 [4]。因此,人们强烈需要一种自动背景音乐推荐APP,从而在显著减少用户工作量的同时,也使得用户可以选择和视频情感更加匹配的音乐而不是盲目跟风选择当下流行音乐。合适的背景音乐能更好渲染视频想要表达的情感,且目前短视频行业经常出现某些音乐滥用的问题,一首音乐大火之后,会出现大量用户选择跟风使用此音乐,而不在乎此音乐与自己视频内容是否相匹配,使得同质化视频越来越多。总之,用户在制作短视频时,多局限于使用出现次数较多的背景音乐,缺乏新意。长此以往,同质化的短视频在平台上不断传播,造成用户审美疲劳甚至产生厌烦,其观看短视频满意度会大幅度。针对以上问题,本文根据视频图像和音乐之间的情感语义相似性,通过python的kivy框架来设计开发一款跨平台的视频配乐软件,主要目的是使用户在为视频选择背景音乐时有更加多元化的选择,帮助用户打造不落俗套的作品。
2. 软件需求分析
在软件设计阶段和软件生命周期中,需求分析是非常重要的阶段。本文设计并开发了一种识别并推荐相应情感音乐的配乐软件,该软件能够对图片或视频中的情感进行识别,并将识别到的情感类型进行分类,用户可选择心仪的情感类型,系统依据用户的选择推荐相应情感类型的音乐供给用户选择,从而达到为视频或图片匹配符合情感配乐的目的。软件设计涉及到了视频解码、情感识别、历史记录展示、音乐推荐等功能。需求分析的内容是为要开发的软件提供完整,清晰和特定的要求,并确定软件需要哪些功能来实现相应任务。在需求调研阶段,研究者深入挖掘了用户场景,发现用户的确定需求和潜在需求从而确定软件各功能,并根据四象限分析法确定各需求优先级,其中P0优先级最高。具体需求及功能如表1。
Table 1. Specific needs and functions
表1. 具体需求及功能
2.1. 软件框架构建
本文软件框架如图1所示,整个软件系统主要包含两个主要资料库:视频图像数据库和音乐资料库。在构建视频图像数据库时,使用差分法 [5] 提取视频关键帧来代表整个视频。并且邀请多名相关专业背景的师生为两个数据集进行了标注,取得视频图像和音乐的情绪标签,且为每个视频提取的关键帧图像配五首歌曲,使得每一组匹配的视频图像–音乐对使用一类共同的情感标签。随后用深度神经网络对成对的视频图像–音乐数据进行训练,建立起视频图像–音乐的关联模型,实现为视频图像推荐情感相似的音乐。具体来说,将提取的关键帧序列图片进行尺寸归一化处理,然后使用两个独立VGG19网络分别提取视频图像和音乐的深度特征,并将视频图像和音乐的特征映射到共同的语义空间,采用相似性度量发掘视频图像和音乐之间的关联,进而进行视频图像和音乐之间的互检。用户模块是用户使用本软件的流程,用户输入自己的视频,软件会先提取视频的关键帧,然后提取关键帧的特征,接着识别关键帧的情感,输出推荐的背景音乐列表,用户可以在推荐的列表内挑选出自己认为更匹配的音乐。
2.2. APP核心功能业务流程
根据软件自身定位可知,给视频配乐是此软件的核心功能,因此在软件开发阶段应首先考虑此功能的开发设计,给视频配乐的业务流程如图2所示。
3. APP技术实现
3.1. 开发框架
本文的APP在Linux系统中完成开发,基于python的Kivy框架设计。Kivy是基于python的一个开源的GUI图像用户界面(Graphical User Interface,简称GUI)工具,用来快速创建跨平台的python应用 [6]。由于其跨平台性,kivy开发的软件可以在Windows,Linux,Mac,Android和IOS设备上运行。Kivy框架是用Python和Cython编写,使用Cython来加速与图形渲染,矩阵计算以及事件分派和属性操作有关的所有组件。硬件加速则是通过openGL ES 2实现。Kivy提供了一种kv语言,使得界面UI文件和程序文件可以相互分离,界面UI文件在扩展名为.kv的文件中创建,用户可以独立于python代码修改调试应用程序的GUI界面,并且应用程序的代码也更清晰易懂。相比较于其他图像界面框架Tkinter,Pyqt,PyGTK等,kivy兼容性强,API文档和开发教程丰富。因此本文选择用Kivy实现基于情感语义匹配的视频配乐软件。
3.2. 打包工具
本文在python-for-android(p4a)编译,p4a是一个开源构建工具,可将python代码打包到独立的android APK中,使用p4a需要手动下载Android SDK和Android NDK的安装包,随后安装构建工具,配置SDK和NDK的环境变量。Kivy的APK就是常规的Android APP,和其他的APP一样可以四处发布,比如谷歌Play商店等等。p4a工具最初是为了kivy跨平台图像框架开发的,但现在支持多种前端框架,也可以轻松扩展打包用到其他类型的Python应用程序Android app上。
Figure 2. Core function business process
图2. 核心功能业务流程
3.3. APP项目打包流程
将程序打包为apk,首先要先创建项目文件夹,文件夹里主要包含程序文件main.py和UI界面文件MYAPP.kv。之后创建p4a打包的配置文件“.p4a”,生成的.p4a配置文件,代码如下:
———dist_name ccw
———android_api 19
———sdk_dir/home/kivydev/andr/android-sdk-linux
———ndk_dir/home/kivydev/andr/crystax-ndk-10.3.2
———requirements python3, kivy tensorflow, numpy, keras
———private.
———package com.myapp.ccw
———name ccw
———version 1.0
———bootstrap sdl2
随后通过命令“p4a apk”打包apk,完成打包后会生成apk文件,把apk文件复制到共享文件夹,在手机或安卓模拟器中安装即可。
4. APP展示
本节展示APP成品,主要包括用户使用流程和页面展示。关于使用流程,用户可自行选择上传本地视频或者拍摄视频,随后系统对上传视频进行情感识别,得到视频情感后,推荐情感相似音乐,用户可根据系统推荐的音乐选择心仪合适的。由于时间和技术等原因,我们目前只实现了一部分功能,实现的部分功能如图3所示,主界面包括上传本地视频功能键,拍摄视频功能键以及历史记录模块;过渡页面是系统对上传的视频进行情感识别,页面中会出现识别进程以提示用户;识别出视频情感后,进入识别情感类别页,在此页面用户可以在识别的情感类别里选择自己认为更符合视频情感的情感类别,之后进入推荐歌曲页,在此页面会显示APP根据用户选择的情感类别所推荐的音乐,用户可根据其推荐音乐自行选择。并且本APP也可以查询历史记录,进入历史查询页面可以查询自己以往的视频配乐记录,便于用户操作。
5. 总结
本文基于python语言,利用kivy跨平台图形框架为短视频配乐开发了一款基于Android移动终端的配乐App,得益于kivy对快速开发的支持,本App可以快速实现。本文软件在Linux系统中完成开发,然后移植到Android手机上,大大提高了软件的实用性。基于情感语义的短视频配乐APP优点如下:一方面可实现视频自动配乐,减少用户编辑短视频的工作量,并且基于情感进行短视频配乐能更好的渲染视频得到用户想要表达的效果;另一方面为用户提供了一种有效手段去改善短视频背景音乐单一,缺乏新意的行业现状。