Git Product home page Git Product logo

new-wyxg's Introduction

我要写歌算法服务重构

团队解散后由于appstore和域名只续费了一年,今年线上服务已经无法访问了,我重构了所有核心算法代码,重新打包成docker版本,将各种难找的库都打进了镜像,实现了一键部署。暂时没有提供线上服务,望理解。。。

创业不易,以此留作我们这群人青春的纪念吧

软件整体介绍

本软件共分三个模块,作曲模块、伴奏模块与演唱模块。

作曲模块负责根据输入的文本歌词,生成符合人类审美的随机旋律的MIDI格式音频文件。

伴奏模块负责根据输入的MIDI音频文件,以及MIDI文件内在的和弦进行规律,按照预先设定好的各种乐器组合模板,生成伴奏MIDI文件。

演唱模块负责将旋律MIDI的音乐信息解析并通过预先录制好的不同音色的人声音源文件进行录制,以生成WAV格式的波形声音文件,最后将主旋律的人声音乐同伴奏文件进行合成,生成最终的音乐。

作曲模块

本模块使用python语言编写,完全开源,包含非常详细的代码注释完整

阅读源码需要先学习基本乐理、MIDI音乐格式以及音乐和弦理论知识

具体功能描述

  • 指定主歌的歌词句数(1句=2小节):取值范围(0,1,2, 4), -1表示随机
  • 指定副歌的歌词句数(1句=2小节):取值范围(0,1,2,4), -1表示随机
  • 指定是否使用弱起小结
  • 指定弱起的拍数
  • 指定曲速的取值范围(例如60~160,单位拍/分钟)
  • 指定使用和弦的序号(即程序中所包含的和弦字典序号)
  • 指定midi文件输出路径
  • 添加简单和弦伴奏,提供三种伴奏型,柱式和弦、分解和弦和混合和弦。可分别为主歌与副歌指定不同伴奏型。
  • 指定主旋律演奏乐器
  • 指定伴奏演奏乐器
  • 赠送两套MIDI音源文件,hubbe64音源及piano钢琴音源
  • 指定主旋律音符力度
  • 指定伴奏音符力度
  • 指定是否只导出旋律。参数控制:0=只导出旋律, 1=导出旋律+伴奏, 2=导出旋律+伴奏 2个midi(此处简单和弦伴奏)

伴奏模块

本模块使用python语言编写,完全开源,包含详细的代码注释

阅读本源码需要预先掌握基本乐理以及音乐和弦理论知识

具体功能描述

  • 提供专家调参的四种伴奏风格:流行、摇滚、民谣、电子
  • 提供100个伴奏进行模板
  • 指定伴奏的歌曲结构,包含空白、前奏、主歌、间奏、副歌、尾奏、桥段等结构元素
  • 指定伴奏歌曲结构长度,即每个结构的小节数,1句=2小节
  • 指定歌曲情感,可选择高兴与伤心两种情感
  • 可选指定伴奏模板,默认为随机
  • 可选指定和弦生成旋律,默认随机
  • 和弦类型随机功能,-1=随机,0=大调随机,1=小调随机
  • 指定伴奏曲速,建议同旋律保持一致。
  • 指定midi文件输出路径

演唱模块

本模块使用C++语言编写,绝大部分开源

阅读本模块源码需要预先掌握底层音频处理技术及频谱分析等知识

具体功能描述

  • 输入指定歌词(文本,字数需要与旋律midi保持一致)、指定旋律(midi文件),生成人声演唱的歌曲文件(wav文件)
  • 提供两个已录制完成的音源文件,一男一女
  • 支持滑音功能,即平滑过渡不同音高的发音。默认开启
  • 音量调整,不建议通过代码修改,建议使用timidity等软件直接调整

部署环境要求

由于软件环境依赖及其复杂,建议根据如下环境部署,否则可能会有兼容性问题。

  • CentOS 6.5 64bit
  • Python 2.6.6
  • gcc 4.4.7
  • timidity 2.14.0
  • lame 3.99.5-1

测试用例

http://1.117.109.129:8080/code/?content=%E5%B0%8F%E8%91%A1%E8%90%84%E5%B0%8F%E8%91%A1%E8%90%84%E5%B0%8F%E5%91%80%E5%B0%8F%E8%91%A1%E8%90%84,%E4%BD%A0%E5%A5%BD%E5%91%80%E4%BD%A0%E5%A5%BD%E5%91%80%E4%BD%A0%E5%91%80%E4%BD%A0%E5%A5%BD%E5%91%80&velocity=90&source=1&genre=0&emotion=0

new-wyxg's People

Contributors

lhzwb2008 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.