KR101934057B1 - 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체 - Google Patents

계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체 Download PDF

Info

Publication number
KR101934057B1
KR101934057B1 KR1020170114840A KR20170114840A KR101934057B1 KR 101934057 B1 KR101934057 B1 KR 101934057B1 KR 1020170114840 A KR1020170114840 A KR 1020170114840A KR 20170114840 A KR20170114840 A KR 20170114840A KR 101934057 B1 KR101934057 B1 KR 101934057B1
Authority
KR
South Korea
Prior art keywords
neural network
artificial neural
learning
series data
time series
Prior art date
Application number
KR1020170114840A
Other languages
English (en)
Inventor
정성훈
Original Assignee
한성대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한성대학교 산학협력단 filed Critical 한성대학교 산학협력단
Priority to KR1020170114840A priority Critical patent/KR101934057B1/ko
Application granted granted Critical
Publication of KR101934057B1 publication Critical patent/KR101934057B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H1/00Details of electrophonic musical instruments
    • G10H1/0008Associated control or indicating means
    • G10H1/0025Automatic or semi-automatic music composition, e.g. producing random music, applying rules from music theory or modifying a musical piece
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2210/00Aspects or methods of musical processing having intrinsic musical character, i.e. involving musical theory or musical parameters or relying on musical knowledge, as applied in electrophonic musical tools or instruments
    • G10H2210/101Music Composition or musical creation; Tools or processes therefor
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2250/00Aspects of algorithms or signal processing methods without intrinsic musical character, yet specifically adapted for or used in electrophonic musical processing
    • G10H2250/005Algorithms for electrophonic musical instruments or musical processing, e.g. for automatic composition or resource allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Auxiliary Devices For Music (AREA)

Abstract

본 발명은 인공 신경망을 이용하여 자동 작곡함에 있어서 특히 두 개의 동일한 입력에 대하여 다른 출력이 있더라도 이를 구분하여 학습을 정상적으로 진행할 수 있고, 생성곡에 반복적인 멜로디를 부여할 수 있으며, 전/중/후반부 별로 멜로디가 전개되는 음악적 구성을 만들 수 있는 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체를 제공에 관한 것이다.
본 발명에 따른 계층적 인공 신경망을 이용한 자동 작곡 방법은, 제1 계층의 인공신경망이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환하여 시계열 데이터를 생성하는 단계; 상기 시계열 데이터를 이용하여 상기 제1 계층의 인공신경망을 학습시키는 단계; 상기 제1 계층의 인공신경망이 초기 신규곡을 출력하는 단계; 제2 계층의 제1 인공신경망이 상기 초기 신규곡 중 제1 영역의 멜로디를 학습하여 전반부 신규곡을 출력하는 단계; 제2 계층의 제2 인공신경망이 상기 초기 신규곡 중 제2 영역의 멜로디를 학습하여 중반부 신규곡을 출력하는 단계; 제2 계층의 제3 인공신경망이 상기 초기 신규곡 중 제3 영역의 멜로디를 학습하여 후반부 신규곡을 출력하는 단계; 및 상기 전반부 신규곡, 상기 중반부 신규곡 및 상기 후반부 신규곡을 연결하여 하나의 최종 신규곡을 생성하는 단계를 포함한다.

Description

계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체{METHOD AND RECORDING MEDIUM FOR AUTOMATIC COMPOSITION USING HIERARCHICAL ARTIFICIAL NEURAL NETWORKS}
본 발명은 자동 작곡 방법에 관한 것으로서, 보다 상세하게는 인공 신경망에 기존곡을 학습시킨 후, 학습된 신경망을 이용하여 새로운 곡을 자동 생성할 수 있는 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체에 관한 것이다.
컴퓨터를 이용하여 자동으로 작곡을 하려는 시도는 비교적 오래전부터 있어왔다. 이러한 연구는 알고리즘 작곡이라고 분류되어왔으며 작곡이라는 목적에서 알 수 있듯이 주로 대부분 인공 지능 분야에서 개발된 방법들이 사용되어왔다.
첫 번째 방법으로, 자동작곡을 수행하는 알고리즘을 만든 것으로 문법에 기반 한 것, 규칙에 기반 한 것, 사례에 기반 한 것 등이 있다. 문법에 기반 한 것은 언어에서 문법을 통하여 글을 만드는 것을 모사하여 이를 작곡에 응용한 것이다. 규칙에 기반 한 것은 멜로디를 생성하는 규칙을 만들어 이를 기반으로 곡을 만드는 것이다. 사례에 기반 한 것은 기존 곡을 소절별로 데이터베이스화하고 작곡 시 기존 곡에서 소절을 이용하여 작곡하는 것이다.
두 번째 방법으로, 최적화 기법에 의한 것이 있다. 작곡에 주로 사용된 최적화 기법은 진화알고리즘(Evolutionary Algorithms)으로서 집단개체를 진화시켜서 최적화시키는 방법이다. 특히 개체를 트리로 표현하는 유전프로그램(Genetic Programming)은 곡의 음에서 마디로, 마디에서 음절로 계층적으로 구성되기 때문에 작곡에서 매우 유용한 기법이다. 그러나 최적화 방법에 있어서 가장 큰 문제점은 개체를 평가하는 방법이 어렵다는 것이다. 개체로 표현된 짧은 곡이 얼마나 음악적으로 적합한지를 제대로 평가해야 진화가 일어나서 점점 더 좋은 곡이 표현된다.
그러나 컴퓨터가 스스로 곡을 평가하는 것은 상당히 어려운 일이다. 그래서 보통 사람이 각 개체를 평가하는 방법을 많이 사용하지만 매우 많은 개체를 수십에서 수백세대에 걸쳐 모두 평가하는 것은 사람에게도 매우 지루하고 힘든 작업이 된다. 또한 곡에 대한 평가는 매우 주관적이어서 일관된 잣대를 제시하기도 어렵다. 이러한 적합도 평가의 어려움을 어느 정도 완화하기 위하여 곡에 대한 평가를 인공신경망의 학습 기능을 통하여 수행하는 연구도 있다. 그러나 학습된 인공신경망의 곡에 대한 평가가 제대로 수행되는 것을 보장하기는 매우 어렵다.
세 번째 방법으로, 기계학습에 의한 것이 있다. 기계학습은 컴퓨터가 스스로 주어진 데이터를 학습하는 것으로서 대표적인 것으로 인공 신경망이 있다. 인공신경망은 주어진 데이터를 학습하고 학습된 데이터와 같거나 유사한 데이터를 출력할 수 있다.
인공신경망을 이용한 방법은 기존의 곡을 학습하여 곡을 출력하기 때문에 비교적 작곡가가 작곡한 곡과 유사한 느낌을 갖는 곡을 출력한다. 그러나 곡에는 반복되는 부분이 많기 때문에 곡을 학습하기 어렵고 매우 오랜 시간이 소요된다. 또한 하나의 곡을 학습하고 출력하는 방법은 출력되는 곡이 기존의 곡과 너무 유사하다는 문제점이 있으며 여러 곡을 학습하는 경우에는 어떤 기준으로 어떻게 학습하게 할지를 정하는 것이 어렵다.
기계학습의 또 다른 예로서는 마르코프체인을 사용하는 방법이 있으며, 국내에서는 기계학습 툴의 일종인 하이퍼 네트워크를 이용하여 작곡을 수행한 예가 있다. 그러나, 이와 같은 종래 방법들은 작곡을 수행하는 과정을 일부 모사하거나 그 가능성을 타진하는 정도의 방법으로서 실질적으로 작곡가 수준의 자연스런 느낌의 곡을 생성하기에는 부족한 부분이 많다. 또한, 멜로디나 박자의 일부를 생성하는 것만으로 나머지 멜로디, 박자 그리고 화성을 포함한 곡 전체를 자동으로 생성 및 작곡하는 방법은 거의 없는 실정이다.
특히, 종래 방법에 따르면, 인공 신경망은 학습된 곡에 따라 멜로디를 출력하기 때문에 곡을 생성하는 과정에서 반복적인 멜로디 구성이 나오기 어려운 한계가 있었다. 그런데 곡을 작곡함에 있어서 멜로디의 반복은 곡에 흥미를 더해주고 나아가 곡의 구성을 잡아주는 기능을 하는 바, 이러한 멜로디의 반복성을 구현할 수 있는 방법이 필요하다.
일반적인 학습 데이터와는 다르게 곡을 변환한 시계열 데이터에는 곡의 특성상 반복되는 시계열 데이터가 많이 발생한다. 즉, 곡에는 일반적으로 반복되는 멜로디가 많고 특히 되돌이표로 인한 반복에서는 완전히 동일한 멜로디가 몇 번에 걸쳐서 반복되는 문제가 있다. 이러한 반복 멜로디가 문제가 되는 이유는 신경망 학습 데이터에서 동일한 입력 측 데이터에 대하여 다른 출력을 내는 학습 데이터가 많이 발생하기 때문이다. 이로 인해 인공 신경망은 동일한 입력에 대하여 여러 가지의 다른 출력을 학습해야하기 때문에 특정 값으로 수렴하지 못하고 학습이 왔다 갔다 하게 되며 결국 아무리 많은 학습 횟수를 수행해도 전체 학습 오류가 감소되지 않는 문제점이 발생한다.
한편, 종래 인공신경망을 이용하여 만들어진 곡은 작곡가가 작곡한 곡의 수준과는 차이가 있었다. 차이가 발생하는 가장 큰 이유는 작곡가가 만든 곡은 음악적 구성이 있으나 인공신경망이 만든 곡은 음악적 구성을 갖추지 못했기 때문이다. 즉, 작곡가가 작곡한 곡은 전반부, 중반부 및 후반부에 따라 각 부분이 유사한 느낌을 가지면서 자연스럽게 연결되며 전체적인 흐름이 진행되는 반면, 종래 인공신경망이 출력하는 곡은 각 부분간에 유사한 느낌의 멜로디가 진행되는 것이 아니라 처음부터 끝까지 계속 새로운 느낌의 멜로디가 나타났다. 결국, 종래 인공신경망을 이용한 자동작곡 방법에 따르면 전/중/후반부 별로 곡의 멜로디가 전개되는 구성을 갖춘 곡을 만들기 어려운 한계가 있었다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 인공 신경망을 이용하여 새로운 멜로디, 박자 및 화성을 포함한 곡 전체를 자동으로 생성할 수 있는 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체를 제공하는 것이다.
본 발명의 또 다른 목적은 음표와 박자로만 이루어진 시계열 데이터의 학습 시, 현재 학습 중인 시계열 데이터에 고유하게 매칭될 마디구분 정보를 추가적으로 넣어줌으로써, 두 개의 동일한 입력에 대하여 다른 출력이 있더라도 이를 구분하여 학습을 정상적으로 진행할 수 있는 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체를 제공하는 것이다.
본 발명의 또 다른 목적은 특히 인공 신경망이 출력하는 곡에 반복적인 멜로디 구성이 부여할 수 있고, 더 나아가 출력한 곡의 박자 및 조성이 음악이론에 맞도록 후처리할 수 있으며, 튀는 음이 나와 전체적인 멜로디 흐름을 왜곡시키는 경우를 방지할 수 있는 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체를 제공하는 것이다.
본 발명의 또 다른 목적은, 전/중/후반부 별로 곡의 멜로디가 전개되는 음악적 구성을 갖춘 곡을 만들 수 있는 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체를 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명에 따른 계층적 인공 신경망을 이용한 자동 작곡 방법은, 제1 계층의 인공신경망이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환하여 시계열 데이터를 생성하는 단계; 상기 시계열 데이터를 이용하여 상기 제1 계층의 인공신경망을 학습시키는 단계; 상기 제1 계층의 인공신경망이 초기 신규곡을 출력하는 단계; 제2 계층의 제1 인공신경망이 상기 초기 신규곡 중 제1 영역의 멜로디를 학습하여 전반부 신규곡을 출력하는 단계; 제2 계층의 제2 인공신경망이 상기 초기 신규곡 중 제2 영역의 멜로디를 학습하여 중반부 신규곡을 출력하는 단계; 제2 계층의 제3 인공신경망이 상기 초기 신규곡 중 제3 영역의 멜로디를 학습하여 후반부 신규곡을 출력하는 단계; 및 상기 전반부 신규곡, 상기 중반부 신규곡 및 상기 후반부 신규곡을 연결하여 하나의 최종 신규곡을 생성하는 단계를 포함한다.
그리고, 상기 제2 계층의 제1 인공신경망이 상기 전반부 신규곡을 출력하는 단계는, 상기 제1 영역의 멜로디를 구성하는 다수의 음표가 숫자 형태로 변환되어 n개의 숫자들로 이루어진 시계열 데이터를 이용하여 상기 제2 계층 제1 인공 신경망을 학습시키는 단계(이하, '제2 계층의 제1 인공신경망 학습단계'라 함)를 포함한다.
그리고, 상기 제2 계층의 제1 인공신경망 학습단계는 n'(여기서, n'<n)개의 숫자들로 이루어진 시계열 데이터(이하, '학습 시계열 데이터')를 상기 제2 계층의 제1 인공신경망에 입력시, 상기 학습 시계열 데이터에 고유하게 할당되고 다수 개의 숫자들로 이루어진 마디구분 정보를 상기 제2 계층의 제1 인공신경망에 함께 입력함으로써, 상기 제2 계층의 제1 인공신경망이 상기 학습 시계열 데이터와 상기 마디구분 정보를 함께 이용하여 학습하도록 구성되는 것을 특징으로 한다.
상기 제 2 계층의 제2 인공신경망과 제 3 인공신경망의 경우에는 제 2 영역과 제 3영역을 이용하는 것을 제외하고는 제1 인공신경망과 동일하게 동작하여 곡을 출력하게 된다.
본 발명에 따른 계층적 인공 신경망을 이용한 자동 작곡 방법 및 기록 매체에 의하면, 학습곡과 다른 새로운 멜로디를 갖는 곡 전체를 자동으로 생성할 수 있게 되었다.
그리고, 마디구분 정보를 이용하여 두 개의 동일한 입력을 구분하고 다른 출력을 학습할 수 있어 학습을 특정 값으로 수렴시킬 수 있게 되었다. 이에 따라, 마디구분 정보의 적절한 배치 및 의도적인 반복을 통해, 출력곡의 목적하는 부문에 멜로디의 반복성을 구현할 수 있게 되어 보다 대중성과 음악성이 있는 곡을 만들 수 있는 효과가 있다.
더 나아가, 자동 생성된 곡의 박자, 화성, 조성, 쉼표 및 갖춘마디 등이 음악성 내지 음악이론에 맞게 처리되어 실제 작곡가 수준으로 자연스러우면서 음악적 완성도가 매우 뛰어난 곡을 생성할 수 있는 효과가 있다.
본 발명에 따른 계층적 인공 신경망을 이용한 자동 작곡 방법 및 기록 매체에 의하면, 전/중/후반부 별로 곡의 멜로디가 전개되는 음악적 구성을 갖춘 곡을 만들 수 있게 되었다. 이에 따라, 본 발명의 인공 신경망은 작곡자가 실제 작곡한 곡과 같이 전반부, 중반부 및 후반부에 따라 각 부분이 유사한 느낌을 가지면서 자연스럽게 연결되며 곡의 전체적인 흐름이 진행되는 곡을 출력할 수 있는 효과가 있다.
도 1은 본 발명에 따른 인공 신경망을 이용한 자동 작곡 방법의 처리 흐름을 도시한 순서도.
도 2는 본 발명의 제1 학습곡의 일례.
도 3은 본 발명에 따른 인공 신경망의 학습 패턴, 이에 따른 학습 시계열 데이터 생성 및 그 학습 과정을 보여주는 일례.
도 4는 본 발명의 쉼표 처리 문제를 나타낸 일례.
도 5는 본 발명에 따른 인공 신경망이 학습 시계열 데이터와 마디구분 정보를 함께 학습하는 과정을 나타낸 도면.
도 6은 본 발명의 학습 시계열 데이터에 고유하게 할당되는 마디구분 정보를 설명하기 위한 도면.
도 7은 본 발명에 따른 마디구분 정보를 이용하여 출력된 곡의 악보.
도 8 (a),(b),(c)는 본 발명에 따른 조성 후처리를 설명하기 위한 일례.
도 9는 본 발명에 따른 평균 인공신경망 생성 원리를 나타낸 도면.
도 10은 본 발명에 따른 인공 신경망을 이용하여 자동 작곡된 곡의 일례.
도 11은 음악에서 통상적으로 많이 쓰이는 곡의 구성을 나타낸 도면.
도 12는 본 발명에 따른 계층적 인공신경망을 이용한 자동 작곡 방법을 설명하기 위한 개념도.
도 13은 본 발명에 따른 제1 계층의 인공신경망의 신규곡 출력 과정을 나타낸 도면.
도 14는 본 발명에 따른 제2 계층의 각 인공신경망의 전/중/후반부 작곡 과정을 나타낸 도면.
도 15는 본 발명에 따른 계층적 인공 신경망을 이용하여 자동 작곡된 곡의 일례.
본 명세서에서 사용하는 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 본 명세서에서, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예, 장점 및 특징에 대하여 상세히 설명하도록 한다.
도 1은 본 발명에 따른 인공 신경망을 이용한 자동 작곡 방법의 처리 흐름을 도시한 순서도이다. 도 1을 참조하면, 본 발명에 따른 인공 신경망을 이용한 자동 작곡 방법은 특정 멜로디의 숫자화 단계(단계 1(S10))와, 시계열 데이터 생성 단계(단계 2(S20))와, 인공 신경망 학습 단계(단계 3(S30))와, 도입부와 마디구분 정보 입력 단계(단계 4(S40)), 및 신규곡 출력 단계(단계 5(S50))를 포함한다.
그리고, 본 발명의 인공 신경망을 이용한 자동 작곡 방법은 학습 데이터 생성(S21)시 마디 구분 정보를 추가적으로 입력(S22)받고, 상기 단계 3(S30)의 인공 신경망 학습은 이러한 S22의 마디 구분 정보와 S21의 학습 데이터를 함께 이용하여 수행되는 것을 특징으로 한다.
그리고, 인공 신경망이 신규곡을 작곡시, 인공 신경망에 입력되는 마디구분 그룹를 이용하여 생성곡의 반복성을 조절하도록 구성되는 것을 특징으로 한다.
그리고, 단계 5(S50)를 통해 출력된 신규곡의 박자와 화성을 후처리하는 단계(단계 6(S60)) 및 신규곡의 조성을 후처리하는 단계(단계 7(S70))를 더 포함할 수 있다.
이하에서는 각 단계에 따른 바람직한 실시예를 들어 보다 구체적으로 설명하도록 한다.
<단계 1(S10)>
본 발명의 단계 1(S10)은 인공 신경망이 학습할 곡이 선정되면, 해당 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표, 박자 및 쉼표를 숫자 형태로 변환하는 단계이다.
여기서, 인공 신경망이 학습할 곡이란 기존에 존재하는 곡으로서 그 장르는 특별한 한정이 없다. 예컨대, 사용자가 희망하는 자동 작곡된 곡의 멜로디가 가요에 해당하는 'A'곡과 유사한 느낌을 원한다면, 인공 신경망이 학습할 곡은 가요 'A'곡이 이에 해당할 수 있다. 더 나아가 사용자가 희망하는 자동 작곡된 곡의 멜로디가 여러 곡(예컨대, 가요'A', 팝송'B')의 느낌이 잘 조합된 느낌을 원한다면 상기 가요 'A'와 팝송 'B'가 인공 신경망이 학습할 곡에 해당할 수 있다.
제1 학습곡의 숫자 형태 변환에 대해 구체적으로 설명하면 다음과 같다. 소정 곡의 멜로디를 인공 신경망에 학습하기 위하여 제1 학습곡의 멜로디를 구성하는 음표(즉, 음의 높이), 박자(즉, 음의 길이) 및 쉼표를 각각 숫자로 표현한다.
먼저, 음표(즉, 음의 높이)는 전체 1 ~ 7 모든 옥타브에 대하여 숫자로 표현할 수 있으나, 본 발명에서는 일반적인 음악에서 많이 사용하는 2 ~ 4 옥타브만을 사용하는 것으로 전제한다. 상기 경우, 음표는 한 옥타브에 '도, 도#, 레, 레#, 미, 파, 파#, 솔, 솔#, 라, 라#, 시'의 총 12개가 존재하므로 이를 차례로 '01'부터 '12'까지의 숫자로 각각 표현할 수 있다.
예컨대, 2 옥타브의 '도'는'01', '도#' '02로, '레'은 '03', '레#'은 '04', '미'는 '05', '파'는 '06', '파#'은 '07', '솔'은 '08', '솔#'은 '09', '라'는 '10', '라#'은 '11', '시'는 '12'로 표현할 수 있다.
본 발명에서는 3 개의 옥타브를 사용하므로 각 옥타브의 음표는 '01'부터 '36'까지의 숫자로 변환할 수 있게 된다.
한편, 곡에는 음표뿐만 아니라 쉼표도 존재한다. 그러므로 쉼표도 숫자로 표현해 주어야한다. 음표에 쉼표가 있을 경우에는 음표에서 사용하지 않는 숫자를 사용하여 음표와 쉼표를 구분할 수 있도록 구성된다.
예컨대, 본 발명에서는 '01'부터 '36'까지의 숫자를 이용하여 음표를 표현하도록 구성되는 바, 쉼표는 '36'보다 큰 숫자 예컨대, '37', '50' 등의 숫자를 사용하여 변환하도록 구성함으로써 음표와 쉼표를 구분할 수 있도록 한다. 따라서, 인공 신경망은 단계 3의 학습 수행시 '36'보다 큰 숫자의 경우 쉼표로 구분하여 학습을 진행할 수 있게 된다.
다음으로, 박자(음의 길이)는 16분 음표를 기준으로 "1/16, 2/16, 4/16, 8/16, 16/16" 가 존재하며, 이를 정수로 나타내기 위하여 16을 곱한 "1, 2, 4, 8, 16"으로 나타낼 수 있다. 즉, 16분 음표를 기준으로 하면, 박자(즉, 음표의 길이)는 1분음표, 2분음표, 4분음표, 8분음표, 16분음표가 존재한다.
한편, 반 박자는 점으로 표시하는데 2 박자에 점이 붙으면 "(2+1)=3박자"가 되고, 4 박자에 점이 붙으면 "(4+2)=6박자"가 되며, 8 박자에 점이 붙으면 "(8+4)=12박자"가 된다. 점은 두 개까지 붙을 수 있기 때문에 4 박자에 점이 두 개 붙으면 "(4+2+1)=7박자"가 되고 8 박자에 점이 두 개 붙으면 "(8+4+2)= 14박자"가 된다. 그러나 보통 대중 가요에서는 점이 하나 붙은 반 박자까지만 사용하므로 보통 "1, 2, 3, 4, 6, 8, 12, 16"의 8개의 박자를 사용한다. 이렇게 8개의 박자만 사용할 경우에는 1에서부터 8까지의 숫자로 각 박자를 나타낼 수 있다.
한편, 본 발명의 시계열 데이터는 서로 상이하게 표현되는 숫자를 통해 음표와 쉼표를 구분할 수 있는 바, 해당 음표 또는 쉼표에 숫자로 표현되는 박자 정보를 더해주면 해당 음표의 음표박자, 해당 쉼표의 쉼표박자 정보를 알 수 있게 된다. 따라서, 음표 박자와 쉼표 박자를 구분하기 위한 또 다른 별도의 숫자가 없어도 무관하다.
그러나, 다음과 같은 방법을 통해 음표 박자와 쉼표 박자를 구분하도록 구성할 수도 있다. 상기 경우, 음표 박자는 '십'의 자리에 제1 숫자(예컨대, '1')를 추가로 표현하고, 쉼표 박자는 '십'의 자리에 상기 제1 숫자와 상이한 제2 숫자(예컨대, '0')을 추가로 표현하도록 구성된다.
예컨대, '♪는 음표 박자의 '1/2' 박자이므로 숫자12로, ♩는 음표 박자의 '1' 박자이므로 숫자14로 변환할 수 있고, 쉼표 '1/2' 박자의 경우 '02'로 변환할 수 있다.
상기 경우, 인공 신경망은 단계 3의 학습 수행시 박자를 표현하는 숫자 중 십의 자리가 표현되어 있는 숫자(즉, 제1 숫자 또는 제2 숫자)를 통해 음표 박자와 쉼표 박자를 구분하며 학습을 진행할 수 있게 된다.
<단계 2(S20)>
본 발명의 단계 2(S20)은 전술한 단계 1의 변환 과정을 통해 숫자화된 음표, 쉼표 및 박자가 제1 학습곡의 시계열 순서에 따라 배열되는 시계열 데이터를 생성하는 단계이다.
따라서, 단계 2의 과정을 완료하면, 학습할 곡의 음표들을 숫자로 변환한 시계열 데이터 하나(이하, '음표 시계열 데이터'라 칭함)와, 박자들을 숫자로 변환한 시계열 데이터 하나(이하, '박자 시계열 데이터'라 칭함)가 획득된다.
한편, 단계 2의 과정을 완료하면, 학습할 곡의 쉼표들을 숫자로 변환한 시계열 데이터(이하, '쉼표 시계열 데이터'라 칭함)도 획득되는데, 이 쉼표 시계열 데이터는 음표 시계열 데이터에 포함되게 구성하거나, 음표 내지 박자 시계열 데이터와 구분되는 별도의 시계열 데이터로 구비되게 구성할 수 있다.
전술한 바와 같이 본 발명의 쉼표는 음표를 표현하는 숫자와 상이한 숫자로 표현되거나 음표의 최대 숫자보다 더 큰 숫자로 표현된다. 그런데, 하나의 인공 신경망이 음표와 쉼표를 함께 학습하게 되면 음표 공간이 왜곡되는 현상이 발생될 수 있고, 이는 음표 대비 큰 숫자로 표현되는 쉼표 숫자에 기인한다.
이러한 문제를 해결하기 위하여, 본 발명의 쉼표 시계열 데이터는 음표 및 박자 시계열 데이터와 분리 구성되고, 인공 신경망은 음표를 학습하는 음표용 인공 신경망과, 쉼표를 학습하는 쉼표용 인공 신경망이 상호 별도로 구성되는 것이 바람직하다.
이에 대하여 보다 상세히 설명하면 다음과 같다. 인공 신경망에 음표와 쉼표를 같이 학습시키기 위해, 음표는 '1 ~ 36'까지의 숫자로 표시하고, 쉼표는 음표와 겹치지 않도록 음표보다 더 큰 숫자 예컨대 '50'으로 표시한 경우를 가정하자.
상기 경우, 학습곡에서 '1 ~ 36'까지의 음표 공간을 학습하던 인공 신경망은 쉼표의 발생으로 인하여 '50'이라는 큰 수의 공간으로 학습이 이루어진다. 이러한 학습은 음표 공간까지 왜곡하여 자동작곡 시 출력된 곡에 왜곡을 유발할 수 있다. 예를 들면 "10, 14, 10,..." 등으로 음표가 진행되다가 쉼표가 발생하면 "10, 14, 10, 50,..." 의 시계열 데이터가 되며 이는 "10, 14, 10" 시계열 데이터 값 뒤의 공간을 급작스럽게 큰 값으로 매핑하게 된다.
학습된 인공 신경망이 신규곡 작곡 시 "10, 14, 10"과 유사한 음표 공간 예컨대, "12, 15, 9"이 발생한 경우 그 다음 음표 공간은 큰 수로 매핑이 되어 '34'와 같은 큰 수를 출력하게 된다. 이 경우 "12, 15, 9, 34"와 같은 음표를 발생해서 급작스럽게 큰 음표가 나와 전체적인 멜로디 흐름에 왜곡을 발생시킨다. 예컨대, 도 4의 예시를 참조하면, 붉은색 동그라미에서 보이듯이 정상적으로 진행되던 곡이 갑작스럽게 높은 음이 나오는 경우를 볼 수 있다.
이런 문제를 완화하기 위하여, 음표의 가장 큰 숫자(예컨대 36)보다 하나 더 큰 숫자(예컨대 37)로 쉼표를 표시할 수 있다. 상기 경우 멜로디 음표공간의 왜곡이 줄어들지만 인공 신경망은 신규곡 작곡시 거의 대부분을 1~36 범위에서 출력하게 되어 쉼표가 거의 만들어지지 않는 또 다른 문제점이 발생할 수 있다.
이러한 제반 문제를 해결하기 위한 방법으로, 음표를 학습하는 인공 신경망과 쉼표의 위치를 학습하는 인공 신경망을 분리 구성할 수 있다.
상기 경우, 하나의 인공 신경망(이하, '음표용 인공신경망'이라 함)은 음표 시계열 데이터를 이용하여 음표를 학습하고, 또 다른 하나의 인공 신경망(이하, '쉼표용 인공신경망'이라 함)은 쉼표 정보를 갖는 시계열 데이터를 이용하여 쉼표의 위치를 학습하게 된다.
그리고, 음표용 인공신경망이 신규곡을 생성하는 과정에서 학습된 쉼표용 인공 신경망이 쉼표를 출력하게 되면, 상기 출력 위치에 쉼표가 존재하는 것으로 처리하게 된다. 만약, 상기 쉼표 출력 위치에, 음표용 인공신경망에 의해 출력된 음표가 기존재할 경우, 해당 음표를 쉼표로 대체하도록 구성된다.
예를 들어, 쉼표용 인공신경망을 학습시키기 위해 사용되는 시계열 데이터의 경우, 음표를 표현하는 숫자 대비 더 큰 값(예컨대, '50')으로 표현되는 쉼표 정보가 포함될 수 있는데, 상기 경우 쉼표용 인공신경망이 음표의 최대값(예컨대, '36')보다 큰 값을 출력하면 그 위치는 쉼표가 있는 것으로 처리되고, 이때의 음표용 인공신경망의 출력(즉, 음표)은 무시된다.
상기 예시는 쉼표를 표시하는 숫자로 '50'을 입력하였는데, 이 값을 더 크게 하면 쉼표가 더 자주 발생할 수 있다. 즉, 인공 신경망이 쉼표를 출력하는 빈도는 상기 쉼표를 나타내는 숫자의 크기에 의존하고, 따라서 쉼표의 발생 빈도는 쉼표를 표시하는 숫자의 크기를 통해 조절 가능하다.
전술한 바와 같이, 인공 신경망을 음표용 인공신경망과 쉼표용 인공신경망으로 분리 구성할 경우, 음표용 인공신경망은 쉼표 정보가 제거된 시계열 데이터를 이용하여 학습을 수행하도록 구성된다.
즉, 음표용 인공신경망이 학습할 곡을 구성하는 다수의 음표 및 쉼표에 있어서 쉼표를 제거하고, 이 쉼표가 빠진 위치에는 해당 쉼표 위치에 바로 앞서는 음표와 동일한 값을 넣어줄 수 있다. 만약 바로 앞서는 음표가 없는 경우에는 바로 뒤에 있는 음표와 동일한 숫자를 넣어줄 수 있다. 즉, 음표를 학습하는 음표용 인공신경망은 쉼표가 빠진 위치의 바로 앞이나 바로 뒤의(쉼표가 맨 앞에서 발생할 경우) 음표와 같은 값으로 학습할 수 있다.
이와 같은 방식으로, 음표만으로 구성된 시계열 데이터를 구성하여 음표용 인공신경망에게 음표를 학습시키고, 음표와 쉼표로 이루어진 시계열 데이터를 이용하여 쉼표용 인공신경망에게 쉼표의 위치를 학습시키게 된다. 한편, 쉼표용 인공신경망은 쉼표와 음표로 이루어진 시계열 데이터를 이용하여 학습을 수행하는데, 이는 쉼표는 자주 발생하지 않아 쉼표만 따로 학습하기가 어렵기 때문이다.
전술한 바와 같이, 쉼표의 위치만을 학습하는 인공 신경망을 별도 구성하여 곡을 작곡하면, 갑작스럽게 튀는 음이 나와 전체적인 멜로디 흐름을 왜곡시키는 경우를 방지할 수 있게 된다.
한편, 음표 및 박자에 대한 시계열 데이터 역시 상호 분리 구성할 수 있는데, 상기 경우 인공 신경망은 음표용 인공 신경망과 박자용 인공 신경망으로 분리 구성될 수 있다.
음표용 인공 신경망은 음표 시계열 데이터를 이용하여 학습을 수행한 후 신규곡의 음표(즉, 음의 높이)를 생성하고, 박자용 인공 신경망은 박자 시계열 데이터를 이용하여 학습을 수행한 후 신규곡의 박자(즉, 음의 길이)를 생성하도록 구성된다.
참고로, 상기에서는 음표 시계열 데이터와 박자 시계열 데이터를 두 개의 인공 신경망에 각각 학습시키도록 구성하였으나, 필요시 음표 및 박자 시계열 데이터를 합하여 하나의 인공 신경망으로 학습하도록 구성할 수도 있음은 물론이다.
도 2는 본 발명의 제1 학습곡의 일 례로서, '가수 티아라'의 'Roly-Poly'라는 곡의 일부 악보이다. 이 곡은 최저음표 2옥타브 라부터 최고음표 4옥타브 미까지의 음표 범위 안에 있다. 'Roly-Poly'의 메인 악보를 기준으로 합성음이 있을 때는 대표음 하나로 숫자화 하였다. 도 2 곡의 예를 들어 시계열 데이터 변환을 설명하면 다음과 같다. 먼저 음표는 [15 18 18 18 18 17 15 18 18 18 18 17] 의 음표 시계열 데이터로 변환될 수 있고, 박자는 [2 2 2 2 4 4 2 2 2 2 4 14] 의 박자 시계열 데이터로 변환될 수 있다. 도돌이표까지 포함하여 변환하면 음표와 쉼표를 포함하여 총 360개의 시계열 데이터가 생성된다.
<단계 2-1(S21)>
인공 신경망은 단계 2(S20)를 통해 생성된 음표, 박자 및 쉼표 시계열 데이터를 기반으로 학습을 수행하게 되는데, 이와 같은 학습 수행 전에 시계열 데이터는 학습을 위하여 결정된 인공 신경망의 구조에 맞게 다수 개의 학습 데이터로 변환되어야 한다.
학습 데이터를 생성하는 패턴은 다음과 같다. 시계열 데이터 입출력 학습패턴은 다음과 같다.첫 번째부터 N 번째까지의 시계열 데이터를 상기 인공 신경망에 입력하여 N+1 번째 시계열 데이터를 출력함으로써 제1 학습 시계열 데이터를 생성한다.
이어서,두 번째부터 상기 N+1 번째까지의 시계열 데이터를 상기 인공 신경망에 입력하여 N+2 번째 시계열 데이터를 출력함으로써 제2 학습 시계열 데이터를 생성한다.
이어서,세 번째부터 상기 N+2번째까지의 시계열 데이터를 상기 인공 신경망에 입력하여 N+3번째 시계열 데이터를 출력함으로써 제3 학습 시계열 데이터를 생성한다.
그리고,n 번째부터 N+(n-1)번째까지의 시계열 데이터를 상기 인공 신경망에 입력하여 N+n번째 시계열 데이터를 출력함으로써 제n 학습 시계열 데이터를 생성하는 상기 패턴을 반복함으로써 다수 개의 학습 데이터가 발생하게 된다.
도 3은 본 발명에 따른 인공 신경망의 학습 패턴, 이에 따른 학습 데이터 생성 및 그 학습 과정을 보여주는 일 례이다. 도 3을 참조하여, 시계열 데이터를 통해 다수 개의 학습 데이터를 생성하는 방법에 대하여 상세히 설명하도록 한다
도 3의 일 실시예에서는 학습 데이터 생성하고 이를 기반으로 음표, 쉼표 및 박자를 학습하는 용도로 두 개의 인공 신경망을 채용하였고, 구체적으로 인공 신경망은 하나의 출력을 갖는 앞먹임 신경망(FNN: Feedforward Neural Network)으로 구성하였다.
신경망의 구조는 두 개의 신경망 모두 동일하게 10 개의 입력 노드와 20 개의 중간 노드 그리고 1 개의 출력 노드를 갖도록 구성하였다. 학습할 곡이 표현된 시계열 데이터를 이용하여 입출력 학습패턴을 만들고, 이의 반복을 통해 다수 개의 학습 데이터(TD: Training Data)를 생성할 수 있게 된다.
구체적으로, 학습 패턴은 첫 번째부터 열 번째까지의 시계열 데이터(#01 ~ #10)를 입력으로 했을 때 11 번째 시계열 데이터(#11)가 출력이 되는 첫 번째 학습패턴이 이루어짐으로써 제1 학습 시계열 데이터(TD #1)가 생성된다.
두 번째 학습패턴은 첫 번째 학습패턴에 의해 생성된 제1 학습 시계열 데이터 중 첫 번째 시계열 데이터를 제외하고, 두 번째부터 열한 번째까지의 시계열 데이터(#02 ~ #11)를 입력으로 하면 12 번째 시계열 데이터(#12)가 출력이 되어, 제2 학습 시계열 데이터(TD #02)가 생성된다.
이와 같은 방식의 학습 패턴을 반복 진행하면, 예컨대 100개의 숫자로 이루어진 시계열 데이터가 있는 곡에서 10개의 입력 노드를 갖는 신경망을 사용함으로써 총 90개의 학습 시계열 데이터가 발생하게 된다.
상기에서는 자동 작곡을 위한 인공 신경망(즉, 음표용 인공신경망, 쉼표용 인공신경망, 박자용 인공신경망 등)으로서 전방향 되먹임 인공신경망(Feedforward Aritificial Neural Networks)을 예로 들어 설명하였다. 전방향 되먹임 인공신경망은 앞서 설명한 바와 같이 학습 데이터를 회귀적으로 구성하고 이렇게 구성된 학습 데이터를 학습하도록 구성된다.
그런데, 이러한 전방향 되먹임 인공신경망 대신 시계열데이터를 직접 학습하는 순환신경망(Recurrent Neural Networks)을 사용할 수도 있음은 물론이다. 순환신경망을 사용하면 학습데이터를 회귀적으로 구성할 필요 없이 시계열 데이터를 직접 학습할 수 있다. 특히 최근에 딥러닝에서 많이 사용하는 LSTM(Long Short-Term Memory) 순환신경망을 사용하면 학습곡이 긴 경우에도 앞쪽에 시계열 데이터의 특성까지 포함하여 뒷부분에 반영할 수 있는 장점이 있다. 자동작곡의 단계에서 기존의 곡을 학습할 때 이러한 순환신경망을 사용해서 학습하고 작곡을 할 수 있음은 물론이며 순환신경망을 사용해도 다른 과정을 그대로 적용할 수 있다.
<단계 3(S30)>
본 발명의 단계 3(S30)은 시계열 데이터를 이용하여 인공 신경망을 학습시키는 단계이다. 구체적으로, 전술한 단계 2-1(S21)을 수행하면, 각 학습패턴 단계에서 학습 데이터(TD #1, TD #2, ..TD #N)가 생성되는데, 이렇게 각 학습패턴 단계에서 생성되는 학습 데이터를 인공 신경망에 가하여 학습을 수행해 나간다.
도 3 실시예의 경우, 오류 역전파 알고리즘을 사용하여 학습을 수행하도록 구성되고, 최대 학습 횟수는 1,000,000번을 넘지 않도록 설정하였다. 그러나 그 이전에 학습이 더 이상 일어나지 않거나 총 학습 오류치가 특정치 이하로 떨어지는 등의 종료 조건이 만족되면 학습을 종료할 수 있다.
인공 신경망은 적절한 구조와 학습률 그리고 충분한 학습 시간만 주어지면 입출력으로 제공되는 학습 데이터를 학습할 수 있다. 그런데, 학습 데이터에 학습할 수 없는 데이터가 있는 경우 충분한 시간의 학습 과정을 진행(예컨대, 최대 학습 횟수 도달)해도 제대로 학습이 수행되지 못하는 문제가 발생할 수 있다.
여기서, 학습할 수 없는 데이터라는 것은 같은 입력에 대하여 다른 출력을 내는 학습 데이터가 주어지는 경우이다. 이 경우 신경망은 두 출력 중에 어느 쪽으로 출력하도록 학습할지를 결정하지 못하고 한쪽으로 치우치게 학습하거나 두 출력 사이를 왔다갔다 학습할 수가 있으며, 이에 따라 많은 학습시간이 주어져도 특정치 이하로 오류를 줄일 수가 없게 된다.
이는, 일반적인 학습 데이터와는 다르게 곡을 변환한 시계열 데이터에는 곡의 특성상 반복되는 시계열 데이터가 많이 발생함에 기인한다. 즉, 곡에는 일반적으로 반복되는 멜로디가 많고 특히 되돌이표로 인한 반복에서는 완전히 동일한 멜로디가 몇 번에 걸쳐서 반복되는 문제가 있다. 이러한 반복 멜로디가 문제가 되는 이유는 신경망 학습 데이터에서 동일한 입력 측 데이터에 대하여 다른 출력을 내는 학습 데이터가 많이 발생하기 때문이다.
예를 들어, 학습할 곡의 한 부분의 입력(이하, 제1 입력)이 "미, 레, 도, 레, 미, 미, 미, 레, 레, 레" 10 개로 이루어진 시계열 데이터이고, 상기 경우 출력이 '미' 라고 하자. 그런데 음악에는 통상적으로 반복성이 있기 때문에 이 곡을 학습하는 도중에 다른 부분의 입력이 제1 입력과 동일한 "미, 레, 도, 레, 미, 미, 미, 레, 레, 레" 의 10 개의 시계열 데이터이더라도 이 때의 출력은 제1 입력에 대한 출력(즉, '미')와 다른 음 예컨대 '도'가 나올 가능성이 있다. 이와 같은 경우가 발생하면, 인공 신경망은 같은 입력에 두 가지 출력이 있는 것이기 때문에 10 개의 멜로디에 대한 출력을 분명하게 정할 수 없게 된다.
결국, 인공 신경망은 동일한 입력에 대하여 여러 가지의 다른 출력을 학습해야하기 때문에 특정 값으로 수렴하지 못하고 학습이 왔다 갔다 하게 되며 결국 아무리 많은 학습 횟수를 수행해도 전체 학습 오류가 감소되지 않는 문제점이 발생할 수 있다.
<단계 2-2(S22)>
본 발명의 단계 2-2(S22)는 전술한 바와 같이 곡의 특성상 반복되는 시계열 데이터가 많이 발생함에 따른 문제를 해결하기 위한 것으로서, 인공 신경망의 학습시, 해당 학습데이터를 구성하는 시계열 데이터에 곡의 마디를 구분하기 위한 정보(이하, 마디구분 정보라 칭함)를 추가적으로 제공해주는 단계이다.
구체적으로, '마디구분 정보'는 인공 신경망의 학습시 같은 음표나 박자 마디 뒤에 오는 다른 음표나 박자를 구분해 주기 위한 것으로서, 인공 신경망이 현재 학습하고 있는 시계열 데이터를 다른 시계열 데이터와 구분할 수 있도록 추가 입력되는 정보에 해당한다.
즉, 인공 신경망이 학습할 곡을 구성하는 다수의 음표를 숫자 형태로 변환하여 n개(예컨대, 100개)의 숫자들로 이루어진 시계열 데이터를 생성하였고, 이 시계열 데이터를 이용하여 단계 2-1(S21)의 학습 패턴을 수행하여 n'(n'<n)개(예컨대, 10개)의 숫자들로 이루어진 학습 시계열 데이터가 발생된 경우를 가정하자.
상기 경우, 도 5와 같이 인공 신경망에 어느 하나의 학습 시계열 데이터의 입력시, 상기 학습 시계열 데이터에 고유하게 할당되고 다수 개의 숫자들로 이루어진 마디구분 정보를 인공 신경망에 함께 입력하여, 인공 신경망이 상기 학습 시계열 데이터와 상기 마디구분 정보를 함께 이용하여 학습하도록 구성된다.
따라서, 학습 시계열 데이터가 예컨대 제1 학습 시계열 데이터, 제2 학습 시계열데이터,... 및 제N 학습 시계열 데이터로 이루어진 N개의 학습 시계열 데이터로 구성된 경우를 가정하면, 인공 신경망에 제1 학습 시계열 데이터의 입력시 제1 학습 시계열 데이터에 매칭되는 제1 마디구분 정보를 함께 입력하여 학습시키고, 제2 학습 시계열 데이터의 입력시 제2 학습 시계열 데이터에 매칭되는 제2 마디구분 정보를 함께 입력하여 학습시키며, 제N 학습 시계열 데이터의 입력시 제N 학습 시계열 데이터에 매칭되는 제N 마디구분 정보를 함께 입력하여 학습시키도록 구성된다.
이러한 마디구분 정보는 특정한 값을 가질 필요는 없으며 무작위 숫자로 이루어질 수 있고, 바람직하게는 수십 개의 숫자가 배열된 형태로 구성될 수 있다. 그리고, 각각의 마디구분 정보(즉, 제1, 제2 및 제N 마디구분 정보)는 서로 상이한 숫자 배열을 갖도록 구성된다.
예컨대, 마디구분 정보가 40개의 무작위 숫자가 배열된 형태로 구성할 경우, 제1 마디구분 정보는 "27,4,2,8,16,32,...,16"의 40개 숫자로 이루어질 수 있고, 제2 마디구분 정보는 "8,24,7,27,33,...,23"의 40개 숫자로 이루어질 수 있다. 이하에서는, 마디구분 정보를 구성하는 각각의 숫자를 '마디값'이라 칭하기로 한다.
바람직한 실시예에 따르면, 마디구분 정보는 마디값 및 아이디(ID)로 구성될 수 있다. 마디값은 전술한 바와 같이 해당 마디구분 정보를 구성하는 각각의 숫자들을 의미하고, 아이디(ID)는 각각의 마디구분 정보를 상호 구분하기 위해 부여되는 고유값을 의미한다. 일 실시예에 따르면, 마디구분 정보의 아이디(ID)는 숫자로 정의될 수 있다.
예컨대, 제1 마디구분 정보는 "27,4,2,8,16,32,...,16"의 40개 숫자로 이루어지고, 제2 마디구분 정보는 "8,24,7,27,33,...,23"의 40개 숫자로 이루어진 경우를 가정하자. 상기 경우, 제1 및 제2 마디구분 정보를 구성하는 각각의 숫자(27,4,8,24 등)가 해당 마디구분 정보의 마디값에 해당한다. 그리고, 제1 마디구분 정보는 이에 고유한 값(예컨대, '1')이 제1 마디구분 정보를 나타내는 아이디(ID)로 부여될 수 있고, 제2 마디구분 정보는 이에 고유한 값(예컨대, '2)이 제2 마디구분 정보를 나타내는 아이디(ID)로 부여될 수 있다.
도 6은 본 발명의 학습 시계열 데이터에 고유하게 할당되는 마디구분 정보를 설명하기 위한 도면이다. 도 6을 참조하면, 제1 학습 시계열 데이터(10a)의 입력시 아이디(ID) '1'로 정의된 제1 마디구분 정보(20a)도 함께 입력되어, 인공 신경망은 입력 제1 학습 시계열 데이터(10a)에 대한 출력 '32', 그리고 이 입출력에 고유하게 할당된 제1 마디구분 정보(20a)를 함께 학습하게 된다.
마찬가지로, 제2 학습 시계열 데이터(10b)의 입력시 아이디(ID) '2'로 정의된 제2 마디구분 정보(20b)도 함께 입력되어, 인공 신경망은 입력 제2 학습 시계열 데이터(10b)에 대한 출력 '15', 그리고 이 입출력에 고유하게 할당된 제2 마디구분 정보(20b)를 함께 학습하게 되며, 이와 같은 방식으로 제N 학습 시계열 데이터(10n)와 제N 마디구분 정보(20n)에 대하여 함께 학습을 진행하게 된다.
전술한 바와 같이, 음표와 박자로만 이루어진 시계열 데이터의 학습 시, 현재 학습 중인 시계열 데이터에 고유하게 매칭될 마디구분 정보를 추가적으로 넣어주게 되면, 각각의 학습 시계열 데이터의 마디구분 정보가 서로 다르기 때문에 두 개의 동일한 입력에 대하여 다른 출력이 있더라도 학습을 정상적으로 진행하여 특정 값으로 수렴할 수 있게 되는 것이다.
즉, 제1 학습 시계열 데이터와 제2 학습 시계열 데이터가 동일하더라도, 이 제1 및 제2 학습 시계열 데이터는 이에 매칭되어 있는 마디구분 정보가 서로 상이한 바, 이 마디구분 정보를 이용하여 입력을 구분할 수 있고 다른 출력을 학습할 수 있게 된다.
이와 같이, 마디를 구분하기 위해서는 최소한 한 개 이상의 마디구분 정보를 넣어주어야 한다. 다만, 마디구분 정보로 인해 늘어난 입력 때문에 전체적으로 하나의 학습데이터의 학습에 걸리는 시간은 늘어난다. 그러므로 무작정 마디 구분 정보의 개수를 늘리면 안 된다.
마디 구분을 확실하게 하기 위해서는 40개 이상의 마디 구분 정보를 입력하는 것이 바람직하나, 곡의 반복성이 얼마나 있는지와 마디 구분 정보 사이의 유사도가 얼마나 없는지 등에 따라 그 개수는 달라질 수 있다.
결국, 인공 신경망이 학습하는 학습 데이터를 중심으로 새로운 마디구분 정보를 넣어주어 입출력 학습데이터가 같은 것이 발생하는 것을 방지할 수 있게 된다. 이러한 마디 구분 정보는 해당 학습 곡에 대한 마디 위치를 지정하는 효과도 갖는다. 즉, 두 곡을 학습할 때 두 곡의 마디구분 정보를 같게 넣어주기 때문에 마디별로 두 곡이 학습되는 효과를 줄 수 있게 된다.
한편, 인공 신경망은 학습된 곡에 따라 멜로디를 출력하기 때문에 곡을 생성하는 과정에서 반복적인 멜로디 구성이 나오기 어렵다. 그런데 곡을 작곡함에 있어서 멜로디의 반복은 곡에 흥미를 더해주고 나아가 곡의 구성을 잡아주는 기능을 하게 된다. 따라서, 인공 신경망이 신규곡을 생성시 멜로디 진행에 반복을 줄 수 있도록 하는 방법이 필요하며, 이러한 반복성은 전술한 마디구분 정보를 적절히 배치하는 것을 통해 조절할 수 있다. 이에 대하여는 단계 4(S40) 및 단계 5(S50) 부문에서 상세히 설명하도록 한다.
<단계 4(S40), 단계 5(S50)>
본 발명의 단계 4(S40)은 새로운 곡의 도입부를 작곡하여 이의 시계열 데이터를 인공 신경망에 입력하는 단계이다.
새로운 곡을 작곡하기 위하여 상기 새로운 곡(즉, 인공 신경망이 작곡할 곡)의 일부(이하, 도입곡라 칭함)를 사람이 작곡한 후 이를 시계열 데이터로 변환하여 인공 신경망에 입력하면, 학습된 인공 신경망은 입력된 도입곡의 시계열 데이터를 기반으로 하여 새로운 곡을 출력(S50)하게 된다. 여기서, 도입곡의 시계열 데이터란 해당 도입곡을 구성하는 음표와 박자가 숫자 형태로 변환된 것을 지칭한다.
만약, 입력된 도입곡이 새로운 곡의 시작부라면, 인공 신경망은 입력된 상기 도입곡의 시계열 데이터를 시작 멜로디로 하여 이에 이어지는 새로운 곡을 출력(S50)하게 된다.
인공신경망이 충분히 학습된 경우 10개의 초기 음표, 쉼표 및 박자를 학습한 곡과 동일하게 넣어주면 나머지 음표, 쉼표 및 박자를 원래의 학습한 곡과 동일하게 출력한다. 10개의 초기 음표, 쉼표 및 박자를 학습곡과 다르게 새로 작곡하여 도입부로 넣어주면 나머지 음표와 쉼표 그리고 박자를 자동 생성해준다. 이를 통하여 새로운 멜로디를 얻을 수 있고, 이렇게 작곡된 신규곡은 학습한 곡과 유사한 멜로디 느낌을 가지나 다른 멜로디를 생성한다.
이와 같이 생성되는 신규곡은 상당부분 수준 있는 곡을 생성하나 일반적인 대중음악에서와 같은 반복적인 멜로디 구성이 나오기 어렵다. 즉, 대부분의 경우 처음부터 끝까지 거의 새로운 멜로디와 박자로 작곡되게 된다.
그런데, 멜로디의 반복은 곡에 흥미를 더해주고 더 나아가 곡의 구성을 잡아주는 역할을 한다. 따라서, 보다 대중성과 음악성이 있는 곡을 생성하기 위해서는 멜로디의 반복성이 구현되어야 하는데, 이는 전술한 마디구분 정보를 이용해 달성 가능하다.
이에 대하여 설명하면 다음과 같다. 곡을 학습한 인공 신경망을 이용하여 신규곡을 생성하기 위해서는 도입곡을 넣어주어야 하는데, 이 때 단계 3(S30)의 학습에서 사용된 마디구분 정보를 인공 신경망에 함께 넣어주도록 구성된다. 이에 따르면, 인공 신경망은 입력된 마디구분 정보를 기반으로 신규곡을 생성하게 되고, 따라서 단계 4(S40)에서 입력되는 마디구분 정보에 의도적인 반복성을 만들어주면, 출력곡의 전체 멜로디 중 이 반복성 마디구분 정보를 기반으로 생성되는 부문은 반복적인 멜로디 구성이 나오게 된다.
구체적으로, 마디구분 정보에 의도적인 반복성을 만들어주는 방법은 다음과 같다. 즉, 서로 상이한 숫자 배열을 갖도록 구성된 제1 마디구분 정보, 제2 마디구분 정보 및 제N 마디구분 정보로 이루어진 마디구분 그룹이 적어도 2회 이상 연속적으로 반복 입력되도록 구성된다.
예컨대, "제1, 제2, 제3,... 및 제10 마디구분 정보"의 아이디(ID)가 각각 "1, 2, 3,... 및 10"이라고 가정하면, (1 2 3 4 5 6 7 8 9 10)의 마디구분 정보들로 이루어진 하나의 마디구분 그룹을 구성할 수 있고, 이렇게 구성된 마디구분 그룹을 {(1 2 3 4 5 6 7 8 9 10)(1 2 3 4 5 6 7 8 9 10)}와 같이 연속적으로 반복 입력하게 되면, 이 마디구분 그룹을 기반으로 출력되는 멜로디는 반복성을 갖추게 된다.
즉, 마디구분 정보를 10 개씩 반복시키고 입력 멜로디는 전술한 학습 패턴 때와 동일하게 회귀적으로 입력되게 구성하면, 마디구분 정보의 반복에 따라 출력되는 곡 역시 반복성을 갖게 된다. 하지만 회귀적으로 구성한 입력이 완전히 같지 않기 때문에 반복되는 출력이 완전히 같게 되지는 않는다. 그러나 이는 완전히 동일한 것이 반복되는 것보다는 더 바람직한 것으로서 크게 문제가 되지 않는다. 그리고, 멜로디가 반복되는 정도는 마디구분 그룹이 반복되는 회수를 조절함으로써 설정 가능하다.
도 7은 본 발명에 따른 마디구분 정보를 이용하여 출력된 곡의 악보로서, 이루마의 'River flows in you' 와 티아라의 '롤리 폴리' 곡을 학습한 인공 신경망을 이용하여 작곡한 것이다.
그리고, 10개의 마디구분 정보로 이루어진 마디구분 그룹이 3번 반복되는 반복 구조를 사용하여 30개 음이 하나의 멜로디 반복 구간(이하, 제1 반복 구간)을 형성하도록 하였다. 도 7에서 붉은색 굵은 블록 내에 해당하는 멜로디가 제1 반복 구간에 해당한다. 즉, 붉은색 굵은 블록의 출력 멜로디에 사용된 마디구분 정보가 예컨대 "1 ~ 10"의 아이디(ID)로 각각 정의된 마디구분 정보라 가정하면, 붉은색 굵은 블록의 멜로디는 (1 2 3 4 5 6 7 8 9 10)로 이루어진 마디구분 그룹이 3회 반복 입력된 {(1 2 3 4 5 6 7 8 9 10) (1 2 3 4 5 6 7 8 9 10) (1 2 3 4 5 6 7 8 9 10)}의 마디구분 정보를 기반으로 생성된 것이다. 따라서, 제1 반복 구간은 10개 음으로 이루어진 파란색 블록의 멜로디가 3회 반복되는 신규곡을 출력하게 된다.
그런데, 제1 반복 구간의 경우 똑같은 마디구분 정보로 이루어진 마디구분 그룹을 입력했음에도 불구하고, 첫번째 파란색 블록에 해당하는 멜로디, 두번째 파란색 블록에 해당하는 멜로디 및 세번째 파란색 블록에 해당하는 멜로디는 상호 약간씩 다른 음을 출력할 수 있는데, 이는 데이터를 회귀적으로 구성하여 각각의 출력음 마다 이전 입력 데이터가 다르기 때문이다.
그러나, 완전히 똑같은 음으로 구성된 멜로디가 반복되는 것보다는 이와 같이 전체적인 흐름은 유사하면서 약간씩 다른 음으로 구성된 멜로디가 반복되는 것이 음악성에 있어 더 바람직하기 때문에 문제가 되지는 않는다.
전술한 제1 반복 구간에 바로 이어지는 생성곡 역시 10개의 마디구분 정보로 이루어진 마디구분 그룹이 3번 반복되는 반복 구조를 사용하여 30개 음이 또 다른 하나의 멜로디 반복 구간(이하, 제2 반복 구간)을 형성하도록 하였다.
도 7에서 녹색 블록 3개에 해당하는 멜로디가 제2 반복 구간에 해당한다. 즉, 녹색 블록의 출력 멜로디에 사용된 마디구분 정보가 예컨대 "11 ~ 20"의 아이디(ID)로 각각 정의된 마디구분 정보라 가정하면, 녹색 블록의 멜로디는 (11 12 13 14 15 16 17 18 19 20)로 이루어진 마디구분 그룹이 3회 반복 입력된 {(11 12 13 14 15 16 17 18 19 20) (11 12 13 14 15 16 17 18 19 20) (11 12 13 14 15 16 17 18 19 20)}의 마디구분 정보를 기반으로 생성된 것이다. 상기 경우, 도 7에서 알 수 있듯이, 제2 반복 구간을 구성하는 첫번째 녹색 블록, 두번째 녹색 블록 및 세번째 녹색 블록은 각각 10음별로 상호 매우 유사한 멜로디가 반복되고 있음을 알 수 있다.
만약 곡의 후반부에서 또 다시 곡의 초반부 멜로디를 반복하고 싶으면, 상기 후반부에 상기 초반부에서 사용된 마디구분 정보를 입력해주면 된다.
이와 같이 인공 신경망이 학습한 마디구분 정보를 이용하여 마디구분 그룹을 만들고, 이 마디구분 그룹을 복수회 반복시킴으로써 다수의 반복 구간 즉 멜로디의 반복성을 부여할 수 있다.
결국, 본 발명의 마디구분 정보를 이용한 작곡 방법에 따르면, 인공 신경망이 신규 곡을 생성함에 있어서, 이 신규 곡 작곡시 입력되는 각각의 마디구분 정보를 기초로 신규 곡의 각 음을 출력하게 되고, 따라서 입력되는 마디구분 정보에 의도적인 반복성을 만들어주면, 이 반복성 마디구분 정보를 기반으로 생성되는 부문은 반복적인 멜로디 구성이 나오게 되는 것이다.
그런데, 이와 같이 인공 신경망이 새로 생성하는 곡은 신경망에 학습된 것을 바탕으로 하기 때문에 음악이론(예컨대, 박자, 화성 등)에 맞지 않는 결과를 생성할 수 있다. 그러므로 신경망이 만들어낸 멜로디는 추가적으로 음악이론에 맞게끔 후처리 하는 작업이 필요하다.
<단계 6(S60)>
본 발명의 단계 6(S60)은 단계 5(S50)을 통해 생성된 신규 곡이 음악이론에 맞도록 이를 후처리하는 단계로서, 세부적으로는 박자 후처리 단계와 화성 후처리 단계로 구분된다.
본 발명에 따른 후처리 단계에서 먼저 후처리 해야 하는 것은 박자로서, 마디별로 갖춘마디를 만들기 위해 박자를 수정해야 한다. 박자 후처리는 인공신경망이 출력한 음표의 박자가 갖춘마디를 형성하지 못할 때 갖춘마디로 보정해주는 작업이다.
본 발명의 박자 후처리 단계는 신규곡에 있어서 갖춘마디 대비 박자가 초과하는 마디(이하, '초과마디')가 존재할 경우 상기 초과마디를 갖춘마디로 보정하는 단계로서, 세부적으로 제1 처리(S61), 제2 처리(S63) 및 제3 처리(S65) 중에서 선택된 어느 하나에 의해 이루어지는 것을 특징으로 한다.
상기 제1 처리는 초과마디를 구성하는 각 음표의 박자 중 어느 하나의 박자에서, 상기 갖춘마디 대비 상기 초과마디가 초과하는 박자(이하, 'd') 만큼을 빼는 단계를 포함한다.
상기 제2 처리는 초과마디를 구성하는 각 음표의 박자 중 어느 하나의 박자에서 'd1'(여기서, d1<d) 박자만큼을 빼고, 또 다른 하나의 박자에서 'd-d1' 박자만큼을 빼는 단계를 포함한다.
상기 제3 처리는 초과마디를 구성하는 각 음표의 박자 중 어느 하나의 박자에서 'd2' 박자만큼을 더하고, 또 다른 하나의 박자에서 'd+d2' 박자만큼을 빼는 단계를 포함한다.
전술한 제1 처리, 제2 처리 또는 제3 처리 중 어느 하나의 박자 후처리 방식에 따르면 어떠한 경우의 초과마디에 대해서도 박자 후처리가 가능해진다.
본 발명의 화성 후처리 단계는 신규곡의 멜로디를 마디별로 구분하여 화성 후보군을 생성하는 제1 단계와, 각 마디별로 생성된 화성 후보군을 대상으로 특정 코드 조합의 화성 전개가 이루어지도록 각 마디별 화성을 선정하는 제2 단계; 및 선정된 화성을 기준으로 상기 신규곡의 멜로디를 수정하는 제3 단계를 포함한다.
구체적으로, 상기 제1 단계는, 각 마디에 있는 음을 낮은 음부터 정렬하는 단계와, 가장 낮은 음부터 차례로 근음으로 지정해서 나머지 음과의 간격을 각각 산출하는 방식을 통해 각 마디별 화음을 결정하는 단계와, 각 마디별로 결정된 화음들을 저장하여 상기 화성 후보군을 생성하는 단계를 포함한다.
상기 제2 단계는, 제1 단계에서 생성된 상기 화성 후보군을 대상으로 마디별 근음 차이 비교를 비교하여 상기 특정 코드 조합의 화성 전개와 일치하는 코드가 있는지 검색하는 단계와, 상기 검색 결과 일치하는 코드 조합이 있을 경우 이를 저장하여 최종 화성으로 결정하는 단계를 포함한다.
그리고, 상기 제2 단계의 검색 결과 일치하지 않는 코드 조합이 있을 경우, 상기 특정 코드 조합을 기준으로 오차 허용 범위를 설정하여, 상기 오차 허용 범위 내의 코드 조합이 있는 경우 이를 저장한다.
그리고, 상기 제3 단계는 상기 오차 허용 범위 내의 코드 조합을 상기 최종 화성으로 수정하는 단계를 더 포함한다.
그리고, 상기 제2 단계의 상기 특정 코드 조합은 바람직하게는 머니 코드(Money Chord)일 수 있다.
<단계 7(S70)>
본 발명의 단계 7(S70)은 신규곡의 조성을 후처리하여, 단계 'S10' 내지 'S60'의 과정을 따라 생성된 곡의 음악적 완성도를 보다 높이기 위한 단계이다.
조성은 으뜸음을 중심으로 온음과 반음을 규칙적으로 배열하여 갖게 되는 음계의 성격을 말한다. 하나의 곡은 보통 하나의 조성으로 되어있고, 조성에 따라 곡의 분위기가 결정된다. 예를 들어 조성인 C장조의 경우 "도, 레, 미, 파, 솔, 라, 시, 도"가 사용되고, 으뜸음인 도를 중심으로 하여 온음, 온음, 반음, 온음, 온음, 온음, 반음, 온음 순서로 배열된 것으로 밝은 분위기를 갖는다.
그런데, 학습된 인공 신경망을 이용해 작곡한 곡은 특정한 조성을 구성하지 못한다. 이를 해결하기 위하여 본 발명의 자동 작곡 방법은 조성 후처리 단계를 더 포함할 수 있다.
조성 후처리 단계는 단계 'S10' 내지 'S60'의 과정을 따라 생성된 곡(이하, '신규곡')의 조성을 C장조로 만드는 제1 단계, 및 제1 단계에 의해 변환된 C장조 조성의 신규곡을 사용자가 원하는 조성으로 다시 변환하는 제2 단계를 포함한다.
구체적으로, 조성 후처리 단계의 제1 단계는 신규곡에 C장조에서 사용하지 않는 음(이하, '제외음'이라 함)이 존재할 경우, 상기 제외음을 상기 제외음의 바로 위 또는 아래 음으로 변경하여 상기 C장조에서 사용하는 음으로 변환하도록 구성된다.
즉, 신규곡이 C(도)를 으뜸음으로 갖도록 신규곡의 각 음의 높이를 C장조 기준으로 일괄적으로 높이거나 또는 낮추는데, 상기 과정에서 C장조에서 사용하지 않은 음인 "도#, 레#, 파#, 솔#, 라# 등"이 존재하게 될 경우 해당 음을 C장조에서 사용하는 음으로 변경한다.
예컨대, 신규곡의 조성을 C장조로 만드는 과정에서 '레#'이 존재하게 되면, 해당 음은 바로 아래 음인 '도'로 변경하거나 또는 바로 위의 음인 '미'로 변경하도록 구성된다.
만약, 제외음이 복수 개일 경우 제외음 모두가 일괄적으로 제외음의 바로 윗 음으로 변경되거나, 또는 모두 일괄적으로 제외음 아래 음으로 변경되거나, 또는 이들의 혼합 형태로 변경될 수 있다.
전술한 제1 단계가 완료되면, 근음의 차이를 이용하여 C장조 신규곡의 조성을 원하는 조성으로 변환하는 제2 단계를 수행하도록 구성된다.
구체적으로, 조성 후처리의 제2 단계는 C장조로 변환된 신규곡의 모든 음에 각각 제1 으뜸음과 제2 으뜸음 간의 차이만큼을 더하여 상기 제2 으뜸음을 으뜸음으로 갖는 또 다른 장조로 변환하도록 구성된다. 여기서, 상기 '제1 으뜸음'은 C장조의 으뜸음 즉, C(도)를 지칭한다.
예를 들어, 제1 단계에 의해 C장조 변환된 제1 신규곡의 조성을 G장조로 만들고 싶다면, 각각의 근음인 C(도)와 G(솔)의 차이인 '7'만큼을 제1 신규곡의 모든 음에 각각 더해줌으로써 G장조에서 사용하는 음만 남게되고 장조의 규칙성도 유지될 수 있게 된다.
도 8 (a),(b),(c)는 본 발명에 따른 조성 후처리를 설명하기 위한 일 례로서, 단계 'S10' 내지 'S60'의 과정을 따라 생성된 신규곡을 E 장조로 변환하는 조성 후처리 과정을 보여준다.
먼저, 도 8 (a)는 단계 'S10' 내지 'S60'의 과정을 따라 생성된 신규곡에 대하여 조성 후처리를 하기 전 멜로디를 나타낸 것으로서 여러 조성에서 사용하는 다양한 음을 갖고 있다. 즉, "파#, 라#, 레, 레, 레#, 파, 솔, 파"의 음들을 갖고 있는데, "레, 레#"은 반음 관계로 내림 마장조에서 사용하는 음이다. 내림 마장조의 음계 구성은 "레#, 파, 솔, 솔#, 라#, 도, 레, 레#" 이므로 '파#'이 존재할 수 없다. "파, 파#"은 내림 라장조에서 사용하는 음이다. 그러므로 작곡된 곡은 하나의 조성으로 볼 수 없기 때문에 조성 후처리를 통해 하나의 조성을 구성하도록 음을 조정해야한다.
상기 경우, 먼저 제1 단계에 따라 도 8 (a)의 멜로디를 C장조로 만들어 준다. 즉, "파#, 라#, 레, 레, 레#, 파, 솔, 파"에 있어서, 제외음에 해당하는 "파#, 라#, 레#"을 일괄적으로 바로 윗 음으로 변환하면 "솔, 시, 레, 레, 미, 파, 솔, 파"의 음계로 이루어진 C장조를 구성하게 된다.
이후, 제1 단계에 의해 변환된 C장조의 각 음에 대하여, C장조와 E장조의 근음 간의 차이만큼 각각 더해주면 E장조 변환이 완료된다. 즉, C장조의 으뜸음은 C(도)이고, E장조의 으뜸음은 A(미)이므로 근음의 차이는 "4"에 해당하게 된다. 따라서, 근음의 차이 '4'만큼을 도 8 (b) 곡의 모든 음에 각각 더해주면 도 8 (c)와 같이 "시, 레#, 파#, 파, 솔#, 라, 시, 라"로 변경되어 E장조에서 사용하는 음들로 이루어진 E장조 조성으로 변환 완료된다.
한편, 상기에서는 신규곡의 조성을 사용자가 원하는 장조(이하, '희망 장조'라 칭함)로 만들고 싶을 경우, 먼저 C장조로 변환하는 과정을 거치도록 구성하였으나, 이처럼 C장조 변환 과정를 거치지 않고 원하는 조성으로 바로 변경하도록 구성할 수도 있다.
즉, 신규곡의 각 음에 일괄적으로 특정 음만큼을 더하거나 빼주어 희망 장조의 조성으로 만들어 주는데, 상기 경우 희망 장조에서 사용하지 않는 음(즉, 제외음)이 존재하게 될 수 있다.
이와 같이 희망 장조에서 사용하지 않는 음(즉, 제외음)이 존재하게 될 경우, 이 제외음을 그 바로 위 또는 아래 음으로 변경하여 상기 희망 장조에서 사용하는 음으로 변경한다. 즉, 신규곡이 G(솔)을 으뜸음으로 갖도록 변환할 경우, 신규곡의 각 음의 높이를 G장조 기준으로 일괄적으로 높이거나 또는 낮추는데, G장조에서 사용하지 않은 음이 존재하게 될 경우 해당 음을 G장조에서 사용하는 음으로 변경한다.
예컨대, 신규곡의 조성을 G장조로 만드는 과정에서 '레#'이 존재하게 되면, 해당 음은 바로 아래 음인 '도'로 변경하거나 또는 바로 위의 음인 '미'로 변경하도록 구성된다.
인공 신경망이 음악성 있는 곡을 작곡하기 위해서는 다수의 곡을 학습하여야 한다. 이때 다수의 곡은 한 곡씩 차례로 학습하는 방법이 있을 수 있다. 그런데, 이와 같은 학습 방법에 따르면 인공 신경망이 나중에 학습하는 곡의 영향을 많이 받게 되어 생성곡의 특성 내지 멜로디가 한 쪽(즉, 나중의 학습곡)으로 편중되는 문제점이 발생할 수 있다.
본 발명은 이와 같이 다수의 곡을 차례대로 학습할 시 발생할 수 있는 생성곡의 치우짐 문제를 해결하기 위하여, 다음과 같이 각각 다른 곡을 학습한 복수의 인공 신경망들의 가중치를 이용하는 방법을 제시한다.
도 9는 본 발명에 따른 평균 인공신경망 생성 원리를 나타낸 도면이다. 도 9를 참조하면, 먼저 N개(여기서, N≥2)의 인공 신경망에 각각 다른 곡을 학습시킨다. 즉, 제1 인공 신경망이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환한 제1 시계열 데이터를 이용하여 상기 제1 인공 신경망을 학습시키고, 제2 인공 신경망이 학습할 곡(이하, '제2 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환한 제2 시계열 데이터를 이용하여 상기 제2 인공 신경망을 학습시키며, 제N 인공 신경망이 학습할 곡(이하, '제N 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환한 제N 시계열 데이터를 이용하여 상기 제N 인공 신경망을 학습시킨다.
한편, 평균 인공신경망을 이용한 자동 작곡 방법에 있어서, 상기 제1 내지 제N 시계열 데이터의 생성 및 이를 이용한 학습 방법은 전술한 단계 2(S20), 단계 2-1(S21), 단계 2-2(S22) 및 단계 3(S30)에서 설명한 방법을 따르도록 구성될 수 있다.
그리고, 학습된 제1 인공 신경망의 히든층(이하, '제1 히든층')과 출력층(이하, '제1 출력층')의 가중치와 바이어스, 학습된 제2 인공 신경망의 히든층(이하, '제2 히든층')과 출력층(이하, '제2 출력층')의 가중치와 바이어스, 그리고 학습된 제N 인공 신경망의 히든층(이하, '제N 히든층')과 출력층(이하, '제N 출력층')의 가중치와 바이어스를 각각 구한다.
여기서, 가중치(weight)는 뉴런이나 두 뉴런 간의 연결과 관련된 수이며, 뉴런의 활성화 값을 결정하기 위한 출력을 할당할 때 사용된다. 그리고 바이어스 (bias)는 뉴런의 액티베이션(activation)에 가해지는 값으로서 학습에 중요한 역할을 한다. 바이어스를 통해 액티베이션 함수를 좌우로 움직일 수 있다. 그리고 히든층(hidden layer)은 입력층(input layer)과 출력층(output layer) 사이에 있는 뉴런들의 배열을 지칭한다.
각 인공 신경망의 가중치와 바이어스를 모두 구하면, 다음으로 제1 히든층, 제2 히든층 및 제N 히든층의 가중치 평균값(이하, '히든층 평균 가중치') 및 바이어스 평균값(이하, '히든층 평균 바이어스')를 산출한다.
동시에, 제1 출력층, 제2 출력층 및 제N 출력층의 가중치 평균값(이하, '출력층 평균 가중치') 및 바이어스 평균값(이하, '출력층 평균 바이어스')도 산출한다.
이후, 히든층의 경우 전술한 히든층 평균 가중치와 히든층 평균 바이어스를 갖는 뉴런들로 구성되고, 출력층의 경우 전술한 출력층 평균 가중치와 출력층 평균 바이어스를 갖는 뉴런들로 구성된 또 다른 하나의 새로운 인공 신경망(이하, '평균 인공 신경망')을 생성한다.
그리고, 이렇게 새로 만들어진 평균 인공 신경망을 이용하여 전술한 단계 4(S40) 내지 단계 7(S70)에 따라 신규곡을 생성하고 생성된 신규곡의 박자, 화성 및 조성을 후처리함으로써 신규곡 작곡이 완료될 수 있다.
이처럼 평균 인공 신경망에 따르면, 다수의 곡을 학습시 어느 한곡으로 편중되지 않게 각 곡을 학습할 수 없었던 문제점과 학습곡의 순서에 따라 생성곡의 특성이 달라지는 문제점을 해결할 수 있게 된다. 결국, 평균 인공 신경망을 이용한 자동 작곡 방법은 매우 많은 곡을 학습할 경우에 특히 유용할 수 있다.
상기에서는 다수의 곡을 차례대로 학습할 시 발생할 수 있는 생성곡 치우짐 문제를 해결하기 위하여 평균 인공 신경망을 제시하였는데, 이러한 평균 인공 신경망을 이용하는 방법 대신 MSE(Mean Square Errors)를 이용하여 차례로 학습하는 방법을 사용할 수도 있다.
즉, 다수의 곡을 차례로 학습시 나중에 학습하는 곡의 학습 정도를 제한하는 방법인데, 이와 같이 인공 신경망이 특정 곡을 어느 정도로 학습할지 결정하는 학습 파라미터로서 MSE(Mean Square Errors)를 이용하도록 구성된다.
MSE는 학습할 곡의 데이터와 인공 신경망의 출력 간의 오류 차이를 나타낸다. 따라서 이 학습 파마리터의 특정 값을 학습 종료 조건으로 설정하여 학습을 진행하면 특정 곡을 어느 정도로 학습시킬지 조정할 수 있게 되고, 이를 통해 나중에 학습하는 곡의 학습 정도를 제한할 수 있게 된다.
보다 구체적으로 설명하면, 인공 신경망이 A곡과 B곡을 학습하되 A곡을 먼저 학습하고 이어서 B곡을 학습하는 경우를 가정하자. 상기 경우, A곡은 완전히 학습이 될 때까지 학습을 진행시킨다. 즉, A곡의 MSE가 '0'이 될 때까지 학습시키도록 구성된다.
A곡이 완전히 학습(즉, MSE = 0)되면, 이후 B곡을 학습하는데 이때 B곡은 완전히 학습되기 전(즉, MSE > 0)에 학습이 중지되도록 구성된다.
즉, B곡의 MSE는 '0'보다 큰 값을 갖도록 구성되는데, 구체적으로 B곡의 MSE는 A곡을 학습한 인공 신경망에 B곡을 적용해 초기 MSE를 구하고, 이렇게 산출된 초기 MSE에 대한 특정 비율(R1)(여기서, 0<R1<1)을 B곡의 MSE로 설정하도록 구성된다.
예컨대, 상기 특정 비율이 '0.1(즉,10%)'로 설정되었고, A곡을 학습한 인공 신경망에 B곡을 입력시 초기 MSE가 '247'로 산출되었다고 가정하자. 상기 경우 산출된 초기 MSE에 특정 비율 '0.1(즉,10%)'를 적용하면 B곡의 MSE는 '24.7'로 결정되고, 이 값은 B곡에 대한 학습 종료 조건으로 작용하게 된다.
즉, B곡은 MSE = 24.7까지 학습이 진행된 후 학습이 멈추게 된다. 결국, B곡은 MSE가 '0'이 될 때까지 학습하지 못하고 어느 정도 학습이 진행된 후 학습이 종료될 수 있게 된다.
따라서, 상기 특정 비율의 값을 조절함으로써 B곡의 MSE를 조절할 수 있게 되고, 이를 통해 B곡의 학습 정도를 제한할 수 있어 생성곡이 나중에 학습하는 곡에 치우치는 문제점을 해결할 수 있게 된다.
이와 같이 MSE를 이용하는 방법에 의하면 각 곡의 학습정도를 어느 정도 제한할 수 있으나 여전히 학습하는 곡의 순서에 따라서 다른 결과가 나오고, 아주 많은 곡을 학습할 경우에는 처음 곡의 영향이 거의 사라지는 문제가 여전히 발생한다. 따라서 아주 많은 곡을 학습하는 경우에는 평균 신경망을 이용하는 것이 바람직하다.
도 10은 본 발명에 따른 인공 신경망을 이용하여 자동 작곡된 곡의 일 례로서, 이루마의 피아노곡 "All myself you" 와 "River flows in you"라는 두 곡을 학습한 후 출력한 것이다.
도 10에서 알 수 있듯이, 본 발명의 박자 후처리를 적용함으로써 못갖춘마디가 나오는 경우가 전혀 발생하지 않았고, 쉼표용 인공신경망을 사용함으로써 음이 중간에 튀는 경우도 발생하지 않았다.
그리고, 초기 멜로디 즉, 도입곡은 무작위로 선정한 것을 사용하였고, 인공 신경망이 출력한 작곡 결과에서 이 도입곡은 제외하는 방법을 적용하였다. 즉, 도입곡은 작곡 결과로 사용하지 않았다.
이하에서는 전술한 인공 신경망을 이용한 자동 작곡 방법을 통해 출력된 신규곡을 기반으로 전/중/후반부 별로 곡의 멜로디가 전개되는 구성을 갖춘 곡을 만들기 위한 방법에 대하여 상세히 설명하도록 한다.
설명에 앞서, 음악에서 통상적으로 많이 쓰이는 곡의 구성에 대하여 설명하면 다음과 같다. 음악에서 곡은 일정한 구성을 갖고 있는데, 통상적으로 많이 쓰이는 구성은 도 11과 같이 "Intro-Verse-Bridge-Chorus-Outro"의 음악적 구성을 갖는다. 각 부분마다 역할이 조금씩 다르지만 Intro는 전주, Verse는 곡의 전개부, Bridge는 곡의 연결부, Chorus는 곡의 후렴구, 마지막으로 Outro는 후주의 역할을 한다. 일반적으로 전주와 후주는 곡의 처음과 마지막을 장식하는 것으로서 멜로디보다는 악기 화성연주가 주를 이룬다.
본 발명에서 제안하는 자동작곡 방법은 멜로디를 작곡하는 것이기 때문에 곡의 구성에서 전주와 후주는 제외하였다. 따라서, 본 발명의 자동작곡 방법은 음악의 구성 중 전개부에 대응되는 전반부(41), 연결부에 대응되는 중반부(42), 후렴구에 대응되는 후반부(43)로 구성하여 각 부분에 해당하는 곡을 자동작곡하도록 하였다.
본 발명의 음악적 구성을 갖춘 곡을 만들기 위한 방법은 인공 신경망을 통해 구현되는 것을 특징으로 한다. 참고로, 도 1 내지 도 10에서 설명 및 도시한 인공 신경망에 따르면 자연스러우면서 음악이론에 부합하는 완성도 높은 곡을 출력할 수 있으나, 한 계층의 하나의 인공신경망을 이용하여 곡을 작곡하기 때문에 음악적 구성을 갖춘 곡을 만들기는 어려운 점이 있다. 본 발명자는 이러한 한계를 해결하기 위하여, 두 계층으로 구성된 다수 개의 인공 신경망을 이용하여 음악적 구성을 갖춘 곡을 생성하는 방법을 고안하였다.
첫 번째 계층에서는 하나의 인공신경망을 사용하여 기존 곡을 학습시키거나 또는 무작위 멜로디를 학습시키고 후처리를 실시하여 신규곡을 출력한다. 두 번째 계층에서는 첫 번째 인공신경망이 만든 멜로디를 전/중/후 영역별로 세 개의 인공신경망에 학습시킨 후 각각 곡을 출력한다. 두 번째 계층의 세 개의 인공신경망에서는 반복을 만들기 위하여 전/중/후 영역별로 전술한 마디구분을 이용한 반복을 적용하고, 이후 박자/화성/조성후처리를 수행하여 곡을 완성하게 된다.
본 발명의 계층적 인공신경망을 이용하여 음악적 구성을 갖춘 곡을 자동 생성하는 방법에 대하여 보다 구체적으로 설명하면 다음과 같다.
도 12는 본 발명에 따른 계층적 인공신경망을 이용한 자동 작곡 방법을 설명하기 위한 개념도이고, 도 13은 본 발명에 따른 제1 계층의 인공신경망의 초기 신규곡 출력 과정을 나타낸 도면이고, 도 14는 본 발명에 따른 제2 계층의 각 인공신경망의 전/중/후반부 작곡 과정을 나타낸 도면이다. 참고로, 도 14에서 Front Part ANN은 제2 계층의 제1 인공신경망(210)을 의미하고, Middle Part ANN은 제2 계층의 제2 인공신경망(220)을 의미하며, Last Part ANN은 제2 계층의 제3 인공신경망(230)을 의미한다.
도 12 내지 도 14를 참조하면, 먼저 첫 번째 계층의 인공신경망(이하, '제1 계층의 인공신경망(100)'이라 함)이 도 1 내지 도 10에서 설명한 방법과 같이 도입곡에 이어지는 신규곡을 (이하, '초기 신규곡'이라 함)출력한다. 다만, 상기 경우 제1 계층의 인공신경망(100)은 전술한 학습 시계열 데이터와 마디구분 정보를 함께 이용한 학습을 통해 초기 신규곡을 출력하거나, 또는 마디구분 정보는 생략하고 학습 시계열 데이만을 이용한 학습을 통해 초기 신규곡을 출력할 수도 있다.
즉, 제1 계층의 인공신경망(100)이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환하여 시계열 데이터를 생성하고, 상기 시계열 데이터를 이용하여 제1 계층의 인공신경망(100)을 학습시킴으로써, 제1 계층의 인공신경망(100)이 초기 신규곡을 출력하게 된다.
그리고, 제1 계층의 인공신경망(100)이 출력한 초기 신규곡에 대하여 후처리를 실시한 후 이를 영역별로 분할하여 제2 계층의 인공신경망들을 각각 학습시키도록 구성된다. 여기서, 제1 계층의 인공신경망(100)이 출력한 초기 신규곡에 대한 후처리는 적어도 박자 후처리를 포함하고, 상기 박자 후처리는 초기 신규곡에 있어서 갖춘마디 대비 박자가 초과하는 마디(이하, '초과마디')가 존재할 경우 상기 초과마디를 갖춘마디로 보정하는 처리를 의미하며, 이는 전술한 단계 6(S60)에서 설명한 박처 후처리와 동일하다.
제1 계층의 인공신경망(100)이 출력한 초기 신규곡의 후처리가 완료되면, 이 후처리 완료된 초기 신규곡으로부터 추출 분할된 3개 영역을 이용하여 제2 계층의 인공신경망을 각각 학습시킨다. 여기서, 상기 '초기 신규곡으로부터 추출 분할된 3개 영역'이란 다음과 같다.
상기 3개 영역은 제1 영역, 제2 영역 및 제3 영역으로 이루어지는데, 각 영역은 초기 신규곡으로부터 추출된 음악적 마디를 기준으로 분할될 수 있다. 이 때 추출 및 분할되는 마디의 개수는 임의의 개수로 정할 수 있는데, 바람직하게는 제1 영역, 제2 영역 및 제3 영역에 각각 분할된 마디의 개수는 동일한 개수로 이루어질 수 있다.
그리고, 제1 영역은 복수 개의 마디로 이루어지고, 제2 영역은 제1 영역 이후에 이어지는 또 다른 복수 개의 마디로 이루어지며, 제3 영역은 제2 영역 이후에 이어지는 또 다른 복수 개의 마디로 이루어질 수 있다.
예컨대, 제1 계층의 인공신경망(100)이 출력한 초기 신규곡의 음악적 마디의 개수가 60개라면, 제1 영역, 제2 영역 및 제3 영역은 초기 신규곡으로부터 추출된 60개의 음악적 마디 중 각각 20개 마디씩 분할될 수 있다. 상기 경우, 제1 영역은 1~20번째 음악적 마디로 이루어지고, 제2 영역은 1~20번째 마디 이후에 이어지는 21~40번째 음악적 마디로 이루어지며, 제3 영역은 21~40번째 마디 이후에 이어지는 41~60번째 음악적 마디로 이루어질 수 있다.
또 다른 예로, 만약 제1 계층의 인공신경망(100)이 출력한 초기 신규곡의 음악적 마디의 개수가 60개이더라도, 제1 영역, 제2 영역 및 제3 영역은 초기 신규곡으로부터 추출된 30개의 음악적 마디 중 각각 10개 마디씩 분할될 수 있다. 상기 경우, 제1 영역은 1~10번째 음악적 마디로 이루어지고, 제2 영역은 1~10번째 마디 이후에 이어지는 11~20번째 음악적 마디로 이루어지며, 제3 영역은 11~20번째 마디 이후에 이어지는 21~30번째 음악적 마디로 이루어질 수 있다.
제2 계층의 인공신경망은 3 개의 인공신경망(이하, '제1 인공신경망(210), 제2 인공신경망(22) 및 제3 인공신경망(230)'이라 함)으로 구성되는데, 각각의 인공신경망은 전술한 제1,제2 및 제3 영역에 해당하는 멜로디를 학습하게 된다.
먼저, 제2 계층의 제1 인공신경망(21)은 전술한 제1 영역의 멜로디를 학습하여 최종 신규곡(50)의 전반부에 해당하는 곡(이하, '전반부 신규곡(41)'이라 함)을 출력하게 된다. 여기서, 제2 계층의 제1 인공신경망(21)의 제1 영역 멜로디 학습 방법은 전술한 단계 'S10 ~ S30'과 동일한 방법으로 수행될 수 있고, 전반부 신규곡(41)의 출력은 전술한 단계 'S40'과 같이 도입곡을 입력하여 상기 도입곡에 이어지는 전반부 신규곡(41)을 출력하도록 구성된다. 여기서, 제2 계층의 제1 인공신경망(21)에 입력되는 도입곡은 무작위로 선정한 초기 멜로디(즉, 음표/쉼표/박자)일 수 있다.
다음으로, 제2 계층의 제2 인공신경망(220)은 전술한 제2 영역의 멜로디를 학습하여 최종 신규곡(50)의 중반부에 해당하는 곡(이하, '중반부 신규곡(42)'이라 함)을 출력하게 된다. 여기서, 제2 계층의 제2 인공신경망(220)의 제2 영역 멜로디 학습 방법은 전술한 단계 'S10 ~ S30'과 동일한 방법으로 수행될 수 있고, 중반부 신규곡(42)의 출력은 전술한 단계 'S40'과 같이 도입곡을 입력하여 상기 도입곡에 이어지는 전반부 신규곡(41)을 출력하도록 구성된다. 여기서, 제2 계층의 제2 인공신경망(220)에 입력되는 도입곡은 무작위로 선정한 초기 멜로디(즉, 음표/쉼표/박자)일 수 있다.
다음으로, 제2 계층의 제3 인공신경망(230)은 전술한 제3 영역의 멜로디를 학습하여 최종 신규곡(50)의 후반부에 해당하는 곡(이하, '후반부 신규곡(43)'이라 함)을 출력하게 된다. 여기서, 제2 계층의 제3 인공신경망(230)의 제3 영역 멜로디 학습 방법은 전술한 단계 'S10 ~ S30'과 동일한 방법으로 수행될 수 있고, 후반부 신규곡(43)의 출력은 전술한 단계 'S40'과 같이 도입곡을 입력하여 상기 도입곡에 이어지는 전반부 신규곡(41)을 출력하도록 구성된다. 여기서, 제2 계층의 제3 인공신경망(230)에 입력되는 도입곡은 무작위로 선정한 초기 멜로디(즉, 음표/쉼표/박자)일 수 있다.
한편, 제2 계층의 제1 인공신경망(21)에 입력되는 도입곡, 제2 인공신경망에 입력되는 도입곡 및 제3 인공신경망에 입력되는 도입곡은 상호 각기 다른 멜로디로 이루어진 초기 마디일 수 있다. 그리고, 이러한 초기 마디 즉, 초기 멜로디(음표/쉼표/박자)는 해당 시계열 데이터에서 발생할 수 있는 범위에서 무작위로 만들어도 되며 이 초기 멜로디에 따라서 다양한 다른 곡이 출력될 수 있다.
전술한 방법에 따르면, 제2 계층의 제1, 제2 및 제3 인공신경망에 각각 다른 부분이 학습되었기 때문에 서로 다른 곡을 출력하게 된다. 그리고 출력되는 멜로디의 개수는 제2 계층의 인공신경망에 학습된 멜로디의 개수와는 상관없이 결정할 수 있다.
그런데, 전술한 바와 같은 제2 계층의 제1, 제2 및 제3 인공신경망이 출력한 전/중/후반부 신규곡들은 음악적 이론에 맞지 않고 못갖춘마디를 포함하고 있기 때문에 이의 후처리 과정이 더 필요하다.
전/중/후반부 신규곡의 후처리는 박자 후처리, 화성 후처리 및 조성 후처리 중에서 선택된 적어도 어느 하나 이상을 포함할 수 있다. 참고로, 전/중/후반부 신규곡의 박자, 화성 및 조성 후처리는 전술한 단계 'S60' 및 'S70'의 박자/화성/조성 후처리와 각각 동일한 방식으로 수행될 수 있다.
한편, 제2 계층의 인공신경망의 멜로디 학습 및 이에 기반한 신규곡 생성시, 전술한 마디구분 정보를 이용함으로써 해당 인공 신경망이 출력하는 곡에 반복적인 멜로디 구성이 부여할 수도 있다. 따라서, 제1, 제2 및 제3 인공신경망 모두가 마디구분 정보를 이용하여 전/중/후반부 신규곡을 각각 출력하도록 하면 전/중/후반부 별로 멜로디가 반복되는 곡을 작곡할 수 있게 된다.
상기 경우, 전반부 신규곡 출력 방법은 제1 영역의 멜로디를 구성하는 다수의 음표가 숫자 형태로 변환되어 n개의 숫자들로 이루어진 시계열 데이터를 이용하여 제2 계층 제1 인공 신경망을 학습시키는 단계(이하, '제2 계층의 제1 인공신경망 학습단계'라 함)를 포함한다.
구체적으로, 제2 계층의 제1 인공신경망 학습단계는 n'(여기서, n'<n)개의 숫자들로 이루어진 시계열 데이터(이하, '학습 시계열 데이터')를 제2 계층의 제1 인공신경망(21)에 입력시, 상기 학습 시계열 데이터에 고유하게 할당되고 다수 개의 숫자들로 이루어진 마디구분 정보를 제2 계층의 제1 인공신경망(21)에 함께 입력함으로써, 제2 계층의 제1 인공신경망(21)이 상기 학습 시계열 데이터와 상기 마디구분 정보를 함께 이용하여 학습하도록 구성된다.
그리고, 제2 계층의 제1 인공신경망(21)이 전반부 신규곡(41)을 생성하기 위해 도입곡을 입력할 때, 적어도 하나 이상의 마디구분 정보를 함께 입력하면, 제2 계층의 제1 인공신경망(21)은 상기 입력된 마디구분 정보를 함께 이용하여 신규곡을 출력하게 되고, 상기 경우 출력된 전반부 신규곡(41)은 반복적 멜로디 구성을 갖게 된다.
한편, 제2 계층의 제2 인공신경망(220)과 제3 인공신경망(230) 역시 제1 인공신경망(210)과 동일한 방식으로 마디구분 정보를 함께 이용하여 학습을 진행하고 신규곡을 생성하도록 구성할 수 있다.
이와 같이, 마디구분 정보를 함께 이용하여 제2 계층의 각 인공 신경망(210, 220,230)을 학습시키는 방법 그리고 이를 통해 멜로디가 반복되는 신규곡을 생성하는 방법은 전술한 단계'S21 ~ S40'과 동일하므로 이에 대한 보다 구체적인 설명은 생략하기로 한다.
전술한 바와 같은 방법을 통해, 제2 계층의 인공신경망들(210,220,230)로부터 멜로디가 각각 출력되면, 출력된 멜로디들을 하나로 합쳐 곡을 완성시킨다. 즉, 제2 계층의 제1 인공신경망(21)이 출력한 전반부 신규곡(41), 제2 계층의 제2 인공신경망(220)이 출력한 중반부 신규곡(42) 및 제2 계층의 제3 인공신경망(230)이 출력한 후반부 신규곡(43)을 모두 연결함으로써 하나의 최종 신규곡(50)을 생성하게 된다. 바람직하게는, 하나의 최종 신규곡(50)을 생성시 전반부 신규곡(41), 중반부 신규곡(42) 및 후반부 신규곡(43)이 순차적으로 연결되도록 구성할 수 있다.
이렇게 생성되는 최종 신규곡(50)은 전/중/후반부 별로 곡의 멜로디가 전개되는 음악적 구성을 갖출 수 있게 되고, 작곡자가 실제 작곡한 곡과 같이 전/중/후반부에 따라 각 부분이 유사한 느낌을 가지면서 자연스럽게 연결되며 곡의 전체적인 흐름이 진행될 수 있게 된다.
도 15는 본 발명에 따른 계층적 인공 신경망을 이용하여 자동 작곡된 곡의 일례로서, 제1 계층의 인공신경망(100)에 이루마의 Kiss the rain이라는 피아노곡을 학습시킨 후 계층적 구조의 인공신경망으로 새롭게 작곡한 곡의 일부이다. 이 예시에서는 제1 계층의 인공신경망(100)의 출력을 6개의 음악적 마디씩 제2 계층의 제1, 제2 및 제3 신경망에 학습하였고, 제2 계층의 제1, 제2 및 제3 신경망에서 곡을 출력할 때 마디구분 정보를 이용해 전/중/후반부 별로 반복이 생기도록 하였다.
도 15에서 빨간색으로 묶여진 부분은 제2 계층의 제1 및 제2 인공신경망이 출력한 전반부 및 중반부 신규곡을 나타낸다. 참고로 후반부는 악보의 길이 관계상 생략하였다. 전반부와 중반부 신규곡은 서로 다른 멜로디로 진행해가지만 전체적인 멜로디가 유사한 음과 박자로 구성됨을 확인 할 수 있다.
도 15 예시의 마디구분 정보를 이용한 멜로디 반복을 상세히 설명하면 다음과 같다. 제2 계층의 제1 인공신경망(21)에 학습한 멜로디 개수는 음악적 마디 6개의 멜로디 개수인 32개이다. 여기서 내부적인 반복을 만들기 위해 32개의 멜로디를 출력할 때 10개씩 마디구분을 반복시켰다. 즉, 멜로디가 10, 10, 10, 2씩 반복되어 출력되게 된다. 그리고 전반부 멜로디가 출력할 멜로디의 개수는 임의의 숫자인 74개로 지정했다. 이때, 33번째 멜로디부터 마디구분을 반복시켜 출력하도록 했다. 즉, 74개의 멜로디 중 반복되는 멜로디는 32, 32, 10이 된다. 결론적으로 마디구분을 이용해 이중으로 반복되는 구조로 출력한 것이다.
도 15에서 알 수 있듯이, 파란색 네모로 표시한 부분들이 완전히 같지는 않지만 유사한 멜로디가 반복되며 그 외에 다른 전반부의 멜로디도 32개씩 유사한 멜로디가 반복되고 있음을 확인 할 수 있다. 멜로디가 정확히 기계적으로 반복되지 않는 이유는 마디 구분이 반복되더라도 회귀되어 인공신경망에 입력되는 멜로디가 다르기 때문이다. 이러한 현상은 완전히 동일한 멜로디가 반복되는 것보다는 약간씩 변형된 멜로디가 출력되는 것으로서 음악적인 측면에서는 오히려 더 바람직하다. 결국, 도 15의 실험결과에 나타나듯이 본 발명에서 제안하는 계층적 구조의 인공신경망에 따르면 음악적으로 보다 완성되고 구성을 갖춘 곡을 자동 작곡할 수 있음을 알 수 있다.
상기에서 설명 및 도시한 본 발명에 따른 인공 신경망을 이용한 자동 작곡 방법은 컴퓨터와 같은 전기전자장치에 전술한 각 기능 내지 단계를 실행시키기 위한 프로그램을 기록한 전기 전자 장치로 읽을 수 있는 기록 매체 형태로 제공될 수 있다.
상기에서 본 발명의 바람직한 실시예가 특정 용어들을 사용하여 설명 및 도시되었지만 그러한 용어는 오로지 본 발명을 명확히 설명하기 위한 것일 뿐이며, 본 발명의 실시예 및 기술된 용어는 다음의 청구범위의 기술적 사상 및 범위로부터 이탈되지 않고서 여러가지 변경 및 변화가 가해질 수 있는 것은 자명한 일이다. 이와 같이 변형된 실시예들은 본 발명의 사상 및 범위로부터 개별적으로 이해되어져서는 안되며, 본 발명의 청구범위 안에 속한다고 해야 할 것이다.
10: 학습 시계열 데이터 20: 마디구분 정보
30: 출력 41: 전반부 신규곡
42: 중반부 신규곡 43: 후반부 신규곡
50: 최종 신규곡 100: 제1 계층의 인공신경망
210: 제2 계층의 제1 인공신경망 220: 제2 계층의 제2 인공신경망
230: 제2 계층의 제3 인공신경망

Claims (10)

  1. 인공 신경망을 이용하여 자동으로 작곡하는 방법에 있어서,
    인공 신경망이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표를 숫자 형태로 변환하여 n개의 숫자들로 이루어진 시계열 데이터를 생성하는 제1 단계; 및 상기 시계열 데이터를 이용하여 상기 인공 신경망을 학습시키는 제2 단계;를 포함하고,
    상기 제2 단계는,
    n'(여기서, n'<n)개의 숫자들로 이루어진 시계열 데이터(이하, '학습 시계열 데이터')를 상기 인공 신경망에 입력시, 상기 학습 시계열 데이터에 고유하게 할당되고 다수 개의 숫자들로 이루어진 마디구분 정보를 상기 인공 신경망에 함께 입력함으로써, 상기 인공 신경망이 상기 학습 시계열 데이터와 상기 마디구분 정보를 함께 이용하여 학습하도록 구성되며,
    상기 시계열 데이터는 상기 제1 학습곡에 대한 시계열 데이터 및 상기 제1 학습곡과 구분되는 제2 학습곡에 대한 시계열 데이터를 포함하고,
    상기 제2 단계는,
    상기 제1 학습곡을 먼저 학습하고 이어서 상기 제2 학습곡을 학습하도록 구성되며,
    상기 제1 학습곡은 MSE(Mean Square Errors) 값 '0' 을 학습 종료 조건으로 하여 학습을 진행하도록 구성되고, 상기 제2 학습곡은 '0'보다 큰 MSE 값을 학습 종료 조건 하여 학습을 진행하도록 구성되는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  2. 제1 항에 있어서,
    상기 학습 시계열 데이터는 제1 학습 시계열 데이터, 제2 학습 시계열데이터 및 제N 학습 시계열 데이터를 포함하고,
    상기 인공 신경망에 상기 제1 학습 시계열 데이터의 입력시 상기 제1 학습 시계열 데이터에 매칭되는 제1 마디구분 정보를 함께 입력하여 학습시키고,
    상기 인공 신경망에 상기 제2 학습 시계열 데이터의 입력시 상기 제2 학습 시계열 데이터에 매칭되는 제2 마디구분 정보를 함께 입력하여 학습시키고,
    상기 인공 신경망에 상기 제N 학습 시계열 데이터의 입력시 상기 제N 학습 시계열 데이터에 매칭되는 제N 마디구분 정보를 함께 입력하여 학습시키며,
    상기 제1 마디구분 정보, 상기 제2 마디구분 정보 및 상기 제N 마디구분 정보는 서로 상이한 숫자 배열을 갖도록 구성되는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  3. 제1 항에 있어서,
    상기 제2 단계의 상기 인공 신경망의 학습시 사용된 마디구분 정보 중 적어도 하나 이상을 상기 인공 신경망에 입력하는 제3 단계; 및
    상기 인공 신경망이 상기 제3 단계에서 입력된 마디구분 정보를 기반으로 신규곡을 출력하는 제4 단계를 더 포함하고,
    상기 제3 단계는,
    서로 상이한 숫자 배열을 갖도록 구성된 제1 마디구분 정보, 제2 마디구분 정보 및 제N 마디구분 정보로 이루어진 마디구분 그룹이 적어도 2회 이상 연속적으로 반복 입력되는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  4. 제1 항에 있어서,
    상기 마디구분 정보는,
    상기 마디구분 정보를 구성하는 각 숫자에 해당하는 마디값; 및
    다수 개의 마디구분 정보를 상호 구분하기 위해 각 마디구분 정보에 부여되는 고유값인 아이디(ID)로 이루어지는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  5. 인공 신경망을 이용하여 자동으로 작곡하는 방법에 있어서,
    인공 신경망이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표를 숫자 형태로 변환하여 n개의 숫자들로 이루어진 시계열 데이터를 생성하는 제1 단계; 및 상기 시계열 데이터를 이용하여 상기 인공 신경망을 학습시키는 제2 단계;를 포함하고,
    상기 제2 단계는,
    n'(여기서, n'<n)개의 숫자들로 이루어진 시계열 데이터(이하, '학습 시계열 데이터')를 상기 인공 신경망에 입력시, 상기 학습 시계열 데이터에 고유하게 할당되고 다수 개의 숫자들로 이루어진 마디구분 정보를 상기 인공 신경망에 함께 입력함으로써, 상기 인공 신경망이 상기 학습 시계열 데이터와 상기 마디구분 정보를 함께 이용하여 학습하도록 구성되며,
    상기 인공 신경망(이하, '음표용 인공신경망')과 구분되는 또 다른 하나의 인공 신경망(이하, '쉼표용 인공신경망')을 더 포함하고,
    상기 제1 학습곡을 구성하는 다수의 음표와 쉼표를 숫자 형태로 변환한 시계열 데이터를 이용하여, 상기 쉼표용 인공신경망이 쉼표의 위치를 학습하는 단계; 및
    상기 음표용 인공신경망이 신규곡을 생성하는 과정에서 상기 학습된 쉼표용 인공신경망이 쉼표를 출력하는 단계;를 더 포함하며,
    상기 쉼표용 인공신경망이 상기 쉼표를 출력시, 상기 출력 위치에 상기 쉼표가 존재하는 것으로 상기 신규곡을 생성하고,
    상기 출력 위치에, 상기 음표용 인공신경망에 의해 출력된 음표가 기존재할 경우, 상기 음표를 상기 쉼표로 대체하는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  6. 삭제
  7. 제1 항에 있어서,
    상기 제2 학습곡의 상기 MSE 값은,
    상기 제1 학습곡을 먼저 학습한 상기 인공 신경망에 상기 제2 학습곡을 적용하여 초기 MSE를 산출한 후, 상기 산출된 초기 MSE에 대한 특정 비율(R1)(여기서, 0<R1<1)을 상기 제2 학습곡의 MSE 값으로 설정하도록 구성되는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  8. 인공 신경망을 이용하여 자동으로 작곡하는 방법으로서,
    제1 계층의 인공신경망(100)이 학습할 곡(이하, '제1 학습곡'이라 칭함)을 구성하는 다수의 음표 및 박자를 숫자 형태로 변환하여 시계열 데이터를 생성하는 단계; 상기 시계열 데이터를 이용하여 상기 제1 계층의 인공신경망을 학습시키는 단계; 상기 제1 계층의 인공신경망이 초기 신규곡을 출력하는 단계; 제2 계층의 제1 인공신경망(21)이 상기 초기 신규곡 중 제1 영역의 멜로디를 학습하여 전반부 신규곡을 출력하는 단계; 제2 계층의 제2 인공신경망이 상기 초기 신규곡 중 제2 영역의 멜로디를 학습하여 중반부 신규곡을 출력하는 단계; 제2 계층의 제3 인공신경망이 상기 초기 신규곡 중 제3 영역의 멜로디를 학습하여 후반부 신규곡을 출력하는 단계; 및 상기 전반부 신규곡, 상기 중반부 신규곡 및 상기 후반부 신규곡을 연결하여 하나의 최종 신규곡을 생성하는 단계를 포함하고,
    상기 제2 계층의 제1 인공신경망이 상기 전반부 신규곡을 출력하는 단계는, 상기 제1 영역의 멜로디를 구성하는 다수의 음표가 숫자 형태로 변환되어 n개의 숫자들로 이루어진 시계열 데이터를 이용하여 상기 제2 계층의 제1 인공신경망을 학습시키는 단계(이하, '제2 계층의 제1 인공신경망 학습단계'라 함)를 포함하고,
    상기 제2 계층의 제1 인공신경망 학습단계는,
    n'(여기서, n'<n)개의 숫자들로 이루어진 시계열 데이터(이하, '학습 시계열 데이터')를 상기 제2 계층의 제1 인공신경망에 입력시, 상기 학습 시계열 데이터에 고유하게 할당되고 다수 개의 숫자들로 이루어진 마디구분 정보를 상기 제2 계층의 제1 인공신경망에 함께 입력함으로써,
    상기 제2 계층의 제1 인공신경망이 상기 학습 시계열 데이터와 상기 마디구분 정보를 함께 이용하여 학습하도록 구성되는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  9. 제8 항에 있어서,
    상기 제1 영역은 복수 개의 마디로 이루어지고, 상기 제2 영역은 상기 제1 영역 이후에 이어지는 또 다른 복수 개의 마디로 이루어지며, 상기 제3 영역은 상기 제2 영역 이후에 이어지는 또 다른 복수 개의 마디로 이루어지는 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
  10. 제8 항에 있어서,
    상기 초기 신규곡에 있어서 갖춘마디 대비 박자가 초과하는 마디(이하, '초과마디')가 존재할 경우 상기 초과마디를 갖춘마디로 보정하는 박자 후처리 단계를 더 포함하고,
    상기 제1 영역의 멜로디는 상기 박자 후처리된 신규곡의 제1 영역의 멜로디인 것을 특징으로 하는 계층적 인공 신경망을 이용한 자동 작곡 방법.
KR1020170114840A 2017-09-08 2017-09-08 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체 KR101934057B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170114840A KR101934057B1 (ko) 2017-09-08 2017-09-08 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170114840A KR101934057B1 (ko) 2017-09-08 2017-09-08 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체

Publications (1)

Publication Number Publication Date
KR101934057B1 true KR101934057B1 (ko) 2019-04-08

Family

ID=66164042

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170114840A KR101934057B1 (ko) 2017-09-08 2017-09-08 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체

Country Status (1)

Country Link
KR (1) KR101934057B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110222226A (zh) * 2019-04-17 2019-09-10 平安科技(深圳)有限公司 基于神经网络的以词生成节奏的方法、装置及存储介质
WO2021029523A1 (en) * 2019-08-15 2021-02-18 Samsung Electronics Co., Ltd. Techniques for learning effective musical features for generative and retrieval-based applications

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170088451A (ko) * 2016-01-22 2017-08-02 한성대학교 산학협력단 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170088451A (ko) * 2016-01-22 2017-08-02 한성대학교 산학협력단 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110222226A (zh) * 2019-04-17 2019-09-10 平安科技(深圳)有限公司 基于神经网络的以词生成节奏的方法、装置及存储介质
CN110222226B (zh) * 2019-04-17 2024-03-12 平安科技(深圳)有限公司 基于神经网络的以词生成节奏的方法、装置及存储介质
WO2021029523A1 (en) * 2019-08-15 2021-02-18 Samsung Electronics Co., Ltd. Techniques for learning effective musical features for generative and retrieval-based applications
US11341945B2 (en) 2019-08-15 2022-05-24 Samsung Electronics Co., Ltd. Techniques for learning effective musical features for generative and retrieval-based applications

Similar Documents

Publication Publication Date Title
KR101854706B1 (ko) 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체
Yang et al. MidiNet: A convolutional generative adversarial network for symbolic-domain music generation
JP2017107228A (ja) 歌声合成装置および歌声合成方法
US11887566B2 (en) Method of generating music data
KR101795706B1 (ko) 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체
Järveläinen Algorithmic musical composition
KR20170128073A (ko) 심층 강화 학습을 이용한 음악 작곡 방법
Zhou et al. BandNet: A neural network-based, multi-instrument Beatles-style MIDI music composition machine
Shapiro et al. Markov chains for computer music generation
KR101934057B1 (ko) 계층적 인공 신경망을 이용한 자동 작곡 방법 및 그 기록 매체
Doush et al. Automatic music composition using genetic algorithm and artificial neural networks
Alfonseca et al. A simple genetic algorithm for music generation by means of algorithmic information theory
KR102138247B1 (ko) 음원 평가 방법 및 그 장치와 이를 이용한 음원 생성 방법 및 그 장치
Sajad et al. Music generation for novices using Recurrent Neural Network (RNN)
KR102560394B1 (ko) 악보 코드 ai판별 알고리즘 기반 코드 생성 시스템
KR20170128070A (ko) 순환형 신경망에 기반한 작곡 방법
Kunimatsu et al. A music composition model with genetic programming-a case study of chord progression and bassline
CN116229922A (zh) 基于Bi-LSTM深度强化学习网络的鼓乐生成方法
Liu et al. Fusing Flamenco and Argentine Tango by evolutionary composition
Kan et al. Generation of irregular music patterns with deep learning
Oliwa Genetic algorithms and the abc music notation language for rock music composition
JP2006201278A (ja) 楽曲の拍節構造の自動分析方法および装置、ならびにプログラムおよびこのプログラムを記録した記録媒体
KR20170128072A (ko) 프리 오더 마르코프 체인과 베이즈 추론을 이용한 음악 작곡 방법
Mohanty et al. Temporally conditioning of generative adversarial networks with lstm for music generation
Vargas et al. Artificial musical pattern generation with genetic algorithms