IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 独立行政法人理化学研究所の特許一覧

特開2024-61616楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体
<>
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図1
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図2
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図3
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図4
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図5
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図6
  • 特開-楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024061616
(43)【公開日】2024-05-07
(54)【発明の名称】楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体
(51)【国際特許分類】
   G10G 1/00 20060101AFI20240425BHJP
   G10H 1/00 20060101ALI20240425BHJP
【FI】
G10G1/00
G10H1/00 102Z
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023134785
(22)【出願日】2023-08-22
(31)【優先権主張番号】PCT/JP2022/039353
(32)【優先日】2022-10-21
(33)【優先権主張国・地域又は機関】WO
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】503359821
【氏名又は名称】国立研究開発法人理化学研究所
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100110135
【弁理士】
【氏名又は名称】石井 裕一郎
(74)【代理人】
【識別番号】100132883
【弁理士】
【氏名又は名称】森川 泰司
(72)【発明者】
【氏名】浜中 雅俊
【テーマコード(参考)】
5D182
5D478
【Fターム(参考)】
5D182AD05
5D478GG00
(57)【要約】
【課題】楽曲を表す符号列の中の1つの音符符号を2つの音符符号に置き換えるレンダリングをする。
【解決手段】楽曲レンダリング装置101において、受付部111は、音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付ける。挿入部112は、前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入する。レンダリング部113は、前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付ける受付部、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入する挿入部、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行するレンダリング部
を備えることを特徴とする楽曲レンダリング装置。
【請求項2】
前記指定された音符符号の音長と、前記2つの音符符号の音長の和と、は、等しい
ことを特徴とする請求項1に記載の楽曲レンダリング装置。
【請求項3】
1以上の訓練楽曲の各訓練楽曲について、当該各訓練楽曲を表現する符号列に含まれる音符符号が1つになるまで、
前記符号列において、
近接する2つの音符符号の一方を、他方に吸収させ、
当該吸収される一方を、当該吸収される一方と当該吸収する他方のどちらが先行していたかを表すプレースホルダ符号に置換する
変換をし、
前記変換された符号列から前記プレースホルダ符号を除去する
簡約を繰り返す際の各簡約に対して、
当該各簡約をする前の符号列を出力データとし、
当該各簡約において前記プレースホルダ符号が除去される前の符号列を入力データとする
訓練データを生成し、
前記1以上の訓練楽曲から生成された訓練データにより、前記ニューラルネットワークが前記1以上の訓練楽曲に適応するように学習させる
ことを特徴とする請求項2に記載の楽曲レンダリング装置。
【請求項4】
前記各訓練楽曲に対するタイムスパンツリーに基づいて、
前記各訓練楽曲に対する符号列に含まれる音符符号の最大タイムスパン長を定め、
当該最大タイムスパン長に基いて当該音符符号の優先度を定め、
当該定められた優先度が低い順に、前記簡約をする
ことを特徴とする請求項3に記載の楽曲レンダリング装置。
【請求項5】
前記符号列は、画面に表示され、
前記画面において、開始位置から終了位置まで注目位置を移動する操作が行われ、
前記開始位置に、前記符号列に含まれるいずれかの音符符号が位置し、
前記終了位置が、前記開始位置に位置する音符符号と、前記開始位置に位置する音符符号に隣り合う他の符号と、の間
であれば、
前記開始位置に位置する音符符号を、前記音符位置指示に係る音符符号とし、
前記終了位置を、前記音符位置指示に係る隣接位置とする
ことを特徴とする請求項1に記載の楽曲レンダリング装置。
【請求項6】
前記注目位置は、外部入力装置に制御されるカーソルの位置である
ことを特徴とする請求項5に記載の楽曲レンダリング装置。
【請求項7】
前記操作は、前記外部入力装置を用いたドラッグである
ことを特徴とする請求項6に記載の楽曲レンダリング装置。
【請求項8】
前記画面は、タッチスクリーンであり、
前記注目位置は、前記タッチスクリーンに対するタッチ位置である
ことを特徴とする請求項5に記載の楽曲レンダリング装置。
【請求項9】
前記操作は、前記タッチスクリーンに対するドラッグ、スライド、もしくは、スワイプである
ことを特徴とする請求項8に記載の楽曲レンダリング装置。
【請求項10】
前記符号列は、休止長を表す休符符号を含み、
前記開始位置に、前記符号列に含まれるいずれかの音符符号が位置し、
前記終了位置に、前記開始位置に位置する音符符号に後行して隣り合う休符符号が位置
すれば、
前記開始位置に位置する音符符号を、前記音符位置指示に係る音符符号とし、
前記開始位置に位置する音符符号と前記終了位置に位置する休符符号との間を、前記音符位置指示に係る隣接位置とし、
前記レンダリングは、前記指定された音符符号、前記挿入されたプレースホルダ符号、および、前記終了位置に位置する休符符号が並ぶ元の部分列を、2つの音符符号および休符符号が並ぶ新たな部分列に置き換え、
前記元の部分列に係る音符符号の音長と休符符号の休止長の和と、
前記新たな部分列に係る2つの音符符号の音長と休符符号の休止長の和と、
は、等しい
ことを特徴とする請求項5に記載の楽曲レンダリング装置。
【請求項11】
前記ニューラルネットワークは、Transformerを含む深層学習モデルにより実現される
ことを特徴とする請求項1に記載の楽曲レンダリング装置。
【請求項12】
符号列を入力データとし、当該符号列に対する音符位置指示を出力データとする他のニューラルネットワークに、前記符号列を与えることにより、音符位置指示を生成する生成部
をさらに備え、
前記生成された音符位置指示を前記受付部に受け付けさせる
ことを特徴とする請求項1に記載の楽曲レンダリング装置。
【請求項13】
前記符号列に含まれる音符符号の数が所定の終了条件を満たすまで、前記生成部、前記受付部、前記挿入部、前記レンダリング部による処理を繰り返す
ことを特徴とする請求項12に記載の楽曲レンダリング装置。
【請求項14】
楽曲レンダリング装置が、
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付け、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入し、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行する
ことを特徴とする楽曲レンダリング方法。
【請求項15】
コンピュータを、
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付ける受付部、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入する挿入部、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行するレンダリング部
として機能させることを特徴とするプログラム。
【請求項16】
請求項15に記載のプログラムが記録された非一時的なコンピュータ読取可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、楽曲を表す符号列の中の1つの音符符号を2つの音符符号に置き換えるレンダリングをするための楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体に関する。
【背景技術】
【0002】
発明者は、音楽理論GTTM (Generative Theory of Total Music)と統計的学習を組み合わせて、楽曲を表すタイムスパンツリー(time-span tree)を応用し、楽曲を分析、合成、生成するための技術を研究開発している。
【0003】
非特許文献1では、音符符号や休符符号を含む符号列により楽曲を表現し、ニューラルネットワーク技術、機械学習技術、深層学習技術などに基づくTransformerを用いて、当該符号列内の音符符号を逐次的に簡約し、その簡約の過程に基いてタイムスパンツリーを生成する技術を提案している。
【0004】
Transformerは、自動翻訳技術と考えることができる。非特許文献1では、隣り合う2つの音符符号の一方を他方に吸収させ、吸収された一方をプレースホルダ符号に置換する変換を行い、次の簡約に備えて、そのプレースホルダ符号を除去する、という処理を行う。非特許文献1に係る技術では、この変換の前の符号列、後の符号列をそれぞれ入力データ、出力データとする訓練データとして、Transformerに学習させることにより、どの隣り合う音符符号を簡約するか、を学習する。
【0005】
非特許文献1では、一方の吸収される音符符号と、他方の吸収する音符符号と、のいずれが先行していたか、をプレースホルダ符号により表すことで、簡約の精度を高めることとしている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Masatoshi Hamanaka, Keiji Hirata, and Satoshi Tojo, "Time-Span Tree Leveled by Duration of Time-Span", Music in the AI Era: 15th International Symposium, CMMR 2021, Virtual Event, November 15-19, 2021, Revised Selected Papers, Nov 2021, Pages 47-58, https://doi.org/10.1007/978-3-031-35382-6_5, 2021年11月
【発明の概要】
【発明が解決しようとする課題】
【0007】
ここで、簡約のためにTransformerに与える訓練データの入力と出力を入れ換えて、別のTransformerに学習させれば、簡約の逆、すなわち、楽曲を表現する符号列内の1つの音符符号を2つの音符符号に置き換えるレンダリングができると考えられる。
【0008】
レンダリングを繰り返すと、楽曲に含まれる音符の音長の総和(これは、休符を除いた演奏時間長に相当する。)は一定のまま、音符の数を増やすことができる。したがって、所望の演奏時間長を有する1つの音符から、多数の音符からなる所望の演奏時間長の楽曲を生成することもできると考えられる。
【0009】
また、楽曲Aを簡約して音符の数を減らしてから、所望の特性に応じたレンダリングを繰り返すことにより、楽曲Aの特徴をある程度保持しつつも所望の特性を有する別の楽曲Bを生成することもできると考えられる。
【0010】
このようなレンダリングを実行するには、プレースホルダ符号をどのように取り扱うかを適切に定め、符号列内のどの音符符号をどのようにレンダリングするか、を適切に特定する必要がある。さらに、レンダリングの精度を高めるには、訓練データに対する工夫をする必要もあると思われる。
【0011】
したがって、楽曲を表す符号列の中の1つの音符符号を2つの音符符号に置き換えるレンダリングを適切にするための技術が求められている。
【0012】
本発明は、上記の課題を解決するもので、楽曲を表す符号列の中の1つの音符符号を2つの音符符号に置き換えるレンダリングをするための楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体に関する。
【課題を解決するための手段】
【0013】
以上の課題を解決するため、本発明に係る楽曲レンダリング装置は、
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付け、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入し、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行する。
【発明の効果】
【0014】
本発明によれば、楽曲を表す符号列の中の1つの音符符号を2つの音符符号に置き換えるレンダリングをするための楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体を提供することができる。
【図面の簡単な説明】
【0015】
図1】本実施形態に係る楽曲レンダリング装置の概要構成を示す説明図である。
図2】メロディAのタイムスパンツリーと、当該タイムスパンツリーから得られるメロディBおよびメロディCの関係を示す説明図である。
図3】楽譜を逐次的に簡約する様子を示す説明図である。
図4】タイムスパンツリーと最大タイムスパン長の関係を示す説明図である。
図5】タイムスパンツリーの各枝の優先順序と最大タイムスパン長の関係を示す説明図である。
図6】楽譜内の音符を逐次的にレンダリングする様子を示す説明図である。
図7】本実施形態に係る楽曲レンダリング装置が実行する処理の制御の流れを示すフローチャートである。
【発明を実施するための形態】
【0016】
以下に、本発明の実施形態を説明する。なお、本実施形態は、説明のためのものであり、本発明の範囲を制限するものではない。したがって、当業者であれば、本実施形態の各要素もしくは全要素を、これと均等なものに置換した実施形態を採用することが可能である。また、各実施例にて説明する要素は、用途に応じて適宜省略することも可能である。このように、本発明の原理にしたがって構成された実施形態は、いずれも本発明の範囲に含まれる。
【0017】
(楽曲レンダリング装置の構成)
本実施形態に係る楽曲レンダリング装置の各部は、典型的には、プログラムを実行するコンピュータによって実現される。当該コンピュータは、各種の出力装置や入力装置に接続され、これらの機器と情報を送受する。
【0018】
コンピュータにて実行されるプログラムは、当該コンピュータが通信可能に接続されたサーバにより配布、販売することができるほか、CD-ROM(Compact Disk Read Only Memory)やフラッシュメモリ、EEPROM(Electrically Erasable Programmable ROM)などの非一時的(non-transitory)な情報記録媒体に記録した上で、当該情報記録媒体を配布、販売等することも可能である。
【0019】
プログラムは、コンピュータが有するハードディスク、ソリッドステートドライブ、フラッシュメモリ、EEPROM等などの非一時的な情報記録媒体にインストールされる。すると、当該コンピュータにより、本実施形態における楽曲レンダリング装置が実現されることになる。一般的には、コンピュータのCPU(Central Processing Unit)は、コンピュータのOS(Operating System)による管理の下、情報記録媒体からRAM(Random Access Memory)へプログラムを読み出してから、当該プログラムに含まれるコードを解釈、実行する。ただし、CPUがアクセス可能なメモリ空間内に情報記録媒体をマッピングできるようなアーキテクチャでは、RAMへの明示的なプログラムのロードは不要なこともある。なお、プログラムの実行の過程で必要とされる各種情報は、RAM内に一時的(temporarily)に記録しておくことができる。
【0020】
さらに、上記のように、コンピュータは、各種画像処理計算を高速に行うため、GPU(Graphics Processing Unit)を備えることが望ましい。GPUならびにPyTorchやTensorFlow等のライブラリを使うことで、CPUの制御の下、各種の人工知能処理における深層学習などの学習機能や各種の変換・翻訳機能を利用することができるようになる。
【0021】
なお、汎用のコンピュータにより本実施形態の楽曲レンダリング装置を実現するのではなく、専用の電子回路を用いて本実施形態の楽曲レンダリング装置を構成することも可能である。この態様では、プログラムを電子回路の配線図やタイミングチャート等を生成するための素材として利用することもできる。このような態様では、プログラムに定められる仕様を満たすような電子回路がFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)により構成され、当該電子回路は、当該プログラムに定められた機能を果たす専用機器として機能して、本実施形態の楽曲レンダリング装置を実現する。
【0022】
以下では、理解を容易にするため、本実施形態の楽曲レンダリング装置は、コンピュータがプログラムを実行することによって実現される態様を想定して説明する。
【0023】
図1は、本実施形態に係る楽曲レンダリング装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【0024】
本図に示す楽曲レンダリング装置101は、受付部111、挿入部112、レンダリング部113を備える。また、楽曲レンダリング装置101は、省略可能な要素として、生成部114を備えることも可能である。
【0025】
ここで、受付部111は、音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付ける。
【0026】
ここで、符号列は、休止長を表す休符符号をさらに含むこともできる。
【0027】
一方、挿入部112は、符号列において、指定された隣接位置と指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、指定された隣接位置に挿入する。
【0028】
さらに、レンダリング部113は、挿入された符号列において、指定された音符符号および挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行する。
【0029】
ここで、指定された音符符号の音長と、2つの音符符号の音長の和と、は、等しいように構成すると、演奏時間長を保ったまま、楽曲における音符の数を1増やすことができる。
【0030】
そして、当初の符号列に含まれる音符符号が1つの場合であっても、それ以上の数であっても、符号列に含まれる。音符が所望の数となるまで、この処理を繰り返すことにより、当初の符号列と演奏時間長が同じ楽曲を生成することができるようになる。
【0031】
ニューラルネットワークは、自動翻訳を行うためのフレームワークの一つであるTransformerを含む深層学習モデルにより実現することができる。
【0032】
なお、生成部114は、符号列を入力データとし、当該符号列に対する音符位置指示を出力データとする他のニューラルネットワークに、符号列を与えることにより、音符位置指示を生成し、生成された音符位置指示を受付部111に受け付けさせる。
【0033】
受付部111が受け付ける音符位置指示は、生成部114を備える構成では、当該他のニューラルネットワークにより生成されるが、生成部114を備えない構成では、ユーザが自らの意思に基づいて音符位置指示を与えることも可能である。
【0034】
また、符号列に含まれる音符符号の数が所定の終了条件を満たすまで、生成部114、受付部111、挿入部112、レンダリング部113による処理を繰り返すこととすれば、所望の条件を満たす楽曲を、自動で生成することが可能となる。
【0035】
以下では、ニューラルネットワークによるレンダリングを可能とするための技術について説明する。
【0036】
(タイムスパンツリー)
本実施形態では、GTTMのタイムスパンツリーに対応するメロディを生成する。タイムスパンツリーの特長は、音符を簡約する機能にある。簡約操作では、タイムスパンツリーの構造的に重要な音符の枝を残し、装飾的な音符の枝を取り外す。
【0037】
図2は、メロディAのタイムスパンツリーと、当該タイムスパンツリーから得られるメロディBおよびメロディCの関係を示す説明図である。以下、本図を参照して説明する。
【0038】
本図に示すタイムスパンツリーは、メロディAをGTTMに基づいて分析した結果得られたものである。このタイムスパンツリーの簡約レベルBより下にある枝の音符を省略すると、本図に示すメロディBが得られる。さらに、簡約レベルCより下にある枝の音符を省略すると、本図に示すメロディCが得られる。
【0039】
本実施形態では、上記の省略とは逆に、ツリーの根元から順に逐次的に枝を追加することにより、音符を1つずつ増やすレンダリングを行って、タイムスパンツリーの構造に対応したメロディを生成する。
【0040】
本実施形態では、この逐次的なレンダリングを自動翻訳の枠組で実行する。自動翻訳の学習に必要な訓練データのデータセットを用意するにあたり、本実施形態では、タイムスパンツリーの枝の優先度を定義する。たとえば、GTTMに基づいて定義された最大タイムスパン長を、枝の優先度として使用することができる。
【0041】
自動翻訳の枠組で楽譜を取り扱うため、本実施形態では、楽譜をテキスト形式にエンコードする。
【0042】
GTTMデータベースには、300件の楽曲に対するタイムスパンツリーが登録されている。非特許文献1に開示するように、発明者の実験によれば、300件のデータを直接用いた深層学習によりタイムスパンツリーを求めることは困難であった。しかしながら、隣り合う音符の一方を他方に吸収させて音符を1つずつ簡約する過程を学習することで、深層学習によりタイムスパンツリーを得ることが可能となった。
【0043】
(逐次的な簡約)
図3は、楽譜を逐次的に簡約する様子を示す説明図である。以下、本図を参照して説明する。
【0044】
Dataset 1の上段には、4つの音符からなる楽譜と、その楽譜に対応するタイムスパンツリーと、が図示されている。
【0045】
これに対して簡約を行うことにより、Dataset 1の下段に、3つの音符からなる楽譜と、その楽譜に対応するタイムスパンツリーと、が示されている。
【0046】
このように、上段の楽譜から音符を一つ減らす簡約を行うことにより、下段の楽譜が得られる。
【0047】
Dataset 2の上段の楽譜は、Dataset 1の下段の楽譜である。Dataset 2の下段の楽譜は、その上段を簡約したものであり、音符の数が1つ減っている。
【0048】
Dataset 3の上段の楽譜は、Dataset 2の下段の楽譜である。Dataset 3の下段の楽譜は、その上段を簡約したものであり、音符の数がさらに1つ減っている。
【0049】
このように、4つの音符で構成される楽曲に対しては、音符を1個ずつ減らす簡約は、4音から3音、3音から2音、2音から1音の3回行うことができる。したがって、訓練用のデータセットは、本図に示すように3つ得られることになる。
【0050】
音符を減らす簡約を深層学習により行うための訓練データの入力データと出力データを入れ換えれば、音符を増やすレンダリングを深層学習により行うための訓練データが得られることになる。
【0051】
この訓練データに対してデータオーギュメンテーションを行うことができる。たとえば、メロディ中のすべての音符を半音ごとにシフトすれば、訓練データを12倍に拡張することができる。また、音価(音長)を2倍から16倍までの整数倍に拡張すると、訓練データを16倍に拡張することができる。
【0052】
(符号列へのエンコード)
深層学習に基づく自動翻訳の枠組で楽譜を取り扱うため、本実施形態では、テキスト形式によるエンコードを行う。エンコードの一例として、以下のようなものを採用することができる。
【0053】
まず、GTTMデータベースのメロディはすべてモノフォニ(和音のない単旋律)であるため、本実施形態でのレンダリングもモノフォニを前提とする。
【0054】
メロディ中の各音符は、音高を表す1文字と音価(音長)を表す数字を結合した文字列で表す。
【0055】
音高は、オクターブの違いを区別せず、12種類で表現する。具体的には、c、d、e、f、g、a、bのアルファベット1文字もしくは# (シャープ)を付けた2文字で表現する。♭(フラット)は用いない。たとえばA♭は、G#に置き換える。
【0056】
音価(音長)については、GTTMデータベースのdurationの値を4倍した値を採用する。これにより、ほとんどの音符の音価(音長)は整数になる。なお、GTTMデータベースには3連符、5連符、6連符、7連符が含まれるメロディがある。これらについては、少数点以下を切り上げて整数にする。
【0057】
なお、前述したデータオーギュメンテーションによって、音価(音長)を2倍から16倍までの整数倍に拡張すれば、データに3連符、5連符、6連符、7連符などが含まれていても、拡張によって生成されたいずれかのデータでは、小数点以下の切り上げをせずとも、音価(音長)が整数となる。
【0058】
このようにして、音高と音価(音長)を表す音符を、英字(および付加的な♭)と整数からなる符号により表し、この符号を空白で区切ることで、楽曲を符号列により表すこととする。
【0059】
図3に示す楽譜の簡約の様子は、以下のように、符号列により表現することができる。
Dataset 1: d8 e8 e8 f8 ⇒ d8 e8 f16
Dataset 2: d8 e8 f16 ⇒ d16 f16
Dataset 3: d16 f16 ⇒ d32
【0060】
(プレースホルダ符号)
発明者は、非特許文献1において、楽曲を表す符号列において簡約を実行し、簡約によって隣り合う音符に吸収された音符があった位置にプレースホルダ符号を挿入する技術を提案した。
【0061】
この技術では、2種類のプレースホルダ符号「l」または「r」を挿入する。
【0062】
「l」(左)は、その位置にあった音符が、簡約によって左の音符(先行する音符)に吸収されたことを示すものである。
【0063】
「r」(右)は、その位置にあった音符が、簡約によって右の音符(後行する音符)に吸収されたこと示すものである。
【0064】
図3に示す楽譜の簡約の様子を、プレースホルダ符号を含む符号列により表現すると、以下のようになる。
Dataset 1: d8 e8 e8 f8 ⇒ d8 e8 r f16
Dataset 2: d8 e8 f16 ⇒ d16 l f16
Dataset 3: d16 f16 ⇒ d32 l
【0065】
簡約により挿入されたプレースホルダ符号は、次の簡約に進む前に除去される。具体的には、以下の通りである。
Dataset 1: d8 e8 e8 f8 ⇒ d8 e8 r f16
Delete 1 : d8 e8 r f16 → d8 e8 f16
Dataset 2: d8 e8 f16 ⇒ d16 l f16
Delete 2 : d16 l f16 → d16 f16
Dataset 3: d16 f16 ⇒ d32 l
Delete 3 : d32 l ⇒ d32
【0066】
ここで、Delete 1, Delete 2, Delete 3は、後述するレンダリング対象の学習で利用する。
【0067】
(簡約順序と最大タイムスパン長)
符号列に対して逐次的に簡約をするための順序、すなわち、(簡約やレンダリングのための)訓練データを得るための過程は、必ずしも音楽家の認識に近づける必要はない。計算機上での実装が可能で、かつ、レンダリング前後の関係が学習可能となることが重要である。本実施形態では、タイムスパン長に基づく優先度を採用することができる。
【0068】
ここで、タイムスパンツリーの最も根本に相当する枝を、タイムスパンツリーのヘッドと呼ぶこととする。すると、あるタイムスパンツリーのヘッドは、そのタイムスパンツリーの音符の中で、最も優先度が高い音符に接続されていることになる。以下、ヘッドである枝に直接接続されている音符も、ヘッドと呼ぶこととする。図4は、タイムスパンツリーと最大タイムスパン長の関係を示す説明図である。以下、本図を参照して説明する。
【0069】
本図に示すタイムスパンツリー(Time-span tree)のヘッド(Head)は、音符Gに接続されている。したがって、音符Gは、本図に示すタイムスパンツリー全体のヘッドである、ということになる。
【0070】
タイムスパンツリーは、複数の部分木のヘッドが接続されていくことで構成される、と考えることができる。たとえば本図では、音符C, E, F#からなる左側の部分木(ヘッドは音符C)と、音符D, Gからなる右側の部分木(ヘッドは音符G)と、が接続されている。全体のヘッドは、右側の部分木のヘッドの音符Gである。
【0071】
一般に、隣接する2つの部分木が接続されると、部分木の各ヘッドのうちの1つが、全体の木のヘッドとなる。そしてそのヘッドが、その木が占める演奏時間の中で最も優先度が高くなる。たとえば、部分木が単音の音符だった場合には、その音価(音長)の長さが長いほど優先度が高くなる。
【0072】
ある音符をヘッドとする部分木が占める最大の時間間隔を、最大タイムスパン長(Maximum time span)と呼ぶ。言い換えれば、ある音符の最大タイムスパン長は、その音符がヘッドとなる部分木の演奏時間長と一致する。
【0073】
したがって、本図の例においては、音符G(をヘッドとするタイムスパンツリー)の最大タイムスパン長は、このタイムスパンツリー全体の演奏時間長と一致する。
【0074】
音符Cをヘッドとする右側の部分木は、音符C, E, F#からなる。音符C(をヘッドとするタイムスパンツリー)の最大タイムスパン長は、音符C, E, F#の演奏時間長となる。
【0075】
最大タイムスパン長に基づく優先度は、以下のように決定される。
(1) 優先順序はタイムスパンツリーの上から最大タイムスパン長ごとに割り振られる。
(2)1番上のレベルでは、ヘッドが優先される。
(3)2番目以降のレベルでは、枝が接続する幹の優先順位が上なほど、そこから枝分かれする枝の優先度が高くなる。
【0076】
図5は、タイムスパンツリーの各枝の優先順序と最大タイムスパン長の関係を示す説明図である。以下、本図を参照して説明する。
【0077】
本図に示すタイムスパンツリーについては、ルール(1)に従い、上から順に優先度が決定されていく。
【0078】
そして、ルール(2)に従って、枝1がこのタイムスパン木で最も優先度の高い枝、枝2が2番目に優先度の高い枝となる。このタイムスパンツリーでは、2番目のレベルが倍全音符レベルである。
【0079】
最大タイムスパン長が同じ場合には、ルール(3)に従い、各枝からヘッドに到達するノードが分岐したノードで、枝が親側すなわち優先度の高い枝に接続されたものを優先する。すなわち、枝1から分岐した枝が3、枝2の幹から分岐した枝が4となる。
【0080】
以下同様に、16分音符レベルまで優先順位が決まっていく。
【0081】
(逐次的なレンダリング)
逐次的にレンダリングを行う際の学習および評価をするための訓練データのデータセットは、タイムスパンツリーから最も優先度が低い音符を簡約することを繰り返すことで作成される。図6は、楽譜内の音符を逐次的にレンダリングする様子を示す説明図である。以下、本図を参照して説明する。
【0082】
本図に示すレンダリング用のData set 1, Data set 2, Data set 3は、図3に示す簡約用のDataset 1, Dataset 2, Dataset 3の上段と下段を入れ換えたものに相当する。Data set 3, Data set 2, Data set 1の順に見れば、音符が1つずつ増えていくことがわかる。これは、図3において、Dataset 1, Dataset 2, Dataset 3の順に見ると、音符が1つずつ減っていくことの逆順である。
【0083】
このように、レンダリングは、簡約の逆の操作を行うものである。図6におけるレンダリングは、以下のように符号列により表現することができる。
Dataset 1: d8 e8 r f16 ⇒ d8 e8 e8 f8
Dataset 2: d16 l f16 ⇒ d8 e8 f16
Dataset 3: d32 l ⇒ d16 f16
【0084】
この例からもわかるように、楽曲を表現する符号列において、ある1つの符号を2つの符号に分離するレンダリングを行うためには、新たな符号が挿入されるべき位置と、新たな符号が分離される元の符号の位置と、を、プレースホルダ符号「l」「r」で指定する必要がある。
【0085】
図6を参照して説明すると、上段の横向き灰色矢印の起点側の音符が、分離される元の音符であり、終点側の位置が、分離によって表れる新たな符号が置かれる位置、すなわち、プレースホルダ符号が置かれる位置になる。
【0086】
ユーザが画面に表示された楽譜を見ながらレンダリングをする際には、この横向き灰色矢印に相当する指示を、マウスのドラッグ、タッチスクリーンにおけるドラッグ・スワイプ・スライド等の操作により与えることとすれば、楽曲の直観的な編集が可能となる。
【0087】
このように、レンダリングは、簡約の逆操作であるから、逐次的に楽譜の簡約を行いながら、各簡約の前のデータを出力(正解)データ、後のデータを入力データとすれば、学習・評価のための訓練データのデータセットを作成することができる。
【0088】
以下に、符号列に対して、逐次的に簡約(とレンダリング)を行う例を示す。
簡約した後 ⇔ 簡約する前
レンダリングする前 ⇔ レンダリングした前
c14 c16 d30 c26 l c16 d20 c16 ⇔ c14 c16 d30 c14 c12 c16 d20 c16
c14 c16 d30 c26 r d36 c16 ⇔ c14 c16 d30 c26 c16 d20 c16
c14 c16 d30 r d62 c16 ⇔ c14 c16 d30 c26 d36 c16
c30 l d30 d62 c16 ⇔ c14 c16 d30 d62 c16
c60 l d62 c16 ⇔ c30 d30 d62 c16
c62 r c78 ⇔ c60 d62 c16
r c138 ⇔ c60 c78
【0089】
この例における右側を出力(正解)データ、左側を入力データとすれば、深層学習により簡約をするための訓練データが得られることになる。
【0090】
逆に、左側を出力(正解)データ、右側を入力データとすれば、深層学習によりレンダリングをするための訓練データが得られる。
【0091】
このようにして作成された訓練データの一部をTransformerに与えて学習を進めた上で、訓練データの残りについてレンダリングを試みて、出力が一致するか否かを調べることにより、本実施形態にて逐次的に実行されるレンダリングの性能を評価することが可能となる。
【0092】
なお、Transformer モデルは、学習していない入力に対しては想定外の出力を出す可能性があり、レンダリングを進めることが困難になることもある。そのような場合には、一旦レンダリングした音をすべて外して初期状態に戻し、ヘッドに接続された音符の音価(音長)に1から16までの間でランダムに選んだ整数をかけた値を新たな音価(音長)としてから、再度レンダリングのプロセスを開始する。
【0093】
(実験例)
以下では、Transformerによる逐次的なレンダリングの実験結果について説明する。
【0094】
本実験では、300曲からなるGTTM データベースのうち、270曲から7362件の逐次レンダリングの学習用データセットを生成し、残りの30曲から849件の逐次レンダリングの評価用データセットを生成した。
【0095】
ここで、7362件の学習用データセットに対して、前述のデータオーギュメンテーションを行うことで、最終的な学習データを7362×12×16=1432704件とした。
【0096】
そして、学習済みのTransformerに対して、849件の評価用データセットを与えたところ、そのすべてについて、レンダリングに成功した。すなわち、本実験により、本実施形態の有効性が確かめられた。
【0097】
以下では、本実施形態に係る楽曲レンダリング装置101にて実行される楽曲レンダリング処理について説明する。
【0098】
(楽曲レンダリング処理)
図7は、本実施形態に係る楽曲レンダリング装置が実行する処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0099】
楽曲レンダリング装置101は、まず、Transformer等のニューラルネットワークにおいて学習されたパラメータをロードして、初期化を行う(ステップS501)。
【0100】
ついで、レンダリングを適用する楽曲を表す符号列を取得して(ステップS502)、画面やタッチスクリーンに表示する(ステップS503)。
【0101】
この符号列は、1つの音符符号のみからなるものでも良いし、複数の音符符号が並ぶものであっても良い。
【0102】
また、符号列を画面等に表示する際には、テキストにエンコードしたものを表示しても良いし、楽譜の形式でグラフィカルに表示しても良い。
【0103】
そして、楽曲レンダリング装置101は、符号列から、レンダリングの対象となる音符符号と、これに隣接する位置と、を指定する音符位置指示を受け付ける(ステップS504)。
【0104】
上述のように、音符位置指示は、画面に表示されるマウスカーソルのドラッグ操作、タッチスクリーンに対するドラッグ・スワイプ・スライド操作などによって行うこととすれば、ユーザにとって楽曲の編集が容易となる。
【0105】
ここで、マウスカーソルの位置やドラッグ・スワイプ・スライド操作をしている間のタッチ位置を注目位置と呼ぶこととする。これらの操作は、開始位置から終了位置まで注目位置を移動する操作に相当する。
【0106】
この場合、ドラッグ等の開始位置に位置する音符符号が、レンダリングの対象となる。また、ドラッグ等の終了位置が当該音符符号に隣接する位置(すなわち、隣接する他の符号との間の位置)であれば、その位置が隣接位置となる。
【0107】
ついで、楽曲レンダリング装置101は、指定された隣接位置と指定された音符符号のどちらが先行しているかに応じて「l」もしくは「r」のプレースホルダ符号を、指定された隣接位置に挿入する(ステップS505)。
【0108】
そして、楽曲レンダリング装置101は、Transformer等のニューラルネットワークを用いて、プレースホルダ符号が挿入された符号列において、指定された音符符号とプレースホルダ符号とを、2つの音符符号に置き換えるレンダリングを実行する(ステップS506)。
【0109】
この後、レンダリングの終了条件が満たされていれば(ステップS507;Yes)、本処理を終了する。一方、満たされていなければ(ステップS507;No)、ステップS503に制御を戻す。すると、画面等に表示される楽譜では、音符が1つ増えることになる。
【0110】
(休符)
GTTMでは、タイムスパンツリーにおける休符の定義があいまいである。一方、最大タイムスパン長の定義では、休符はタイムスパンに含まれないとされている。これらの条件に合わせるためには、生成したい楽曲において、各休符がどのように配置されるかを、最初の一音とは別に取得した上で、休符を除いてレンダリングを行い、その後に、取得された位置に各休符を挿入すれば良い。
【0111】
このほか、符号列を構成する要素として、音符符号の他に休符符号を採用することとして、簡約を可能としても良い。たとえば、休符符号として、英字のpと休止長を表す整数を並べたものを採用し、休符を音符の一つと考えてGTTMを拡張したタイムスパンツリーを構成しても良い。
【0112】
このような態様では、簡約において、休符の一部や全体が音符に吸収されることがありうる。この簡約によって、音符の音長は、吸収された休符の休止長だけ長くなることになる。
【0113】
休符の一部が音符に吸収される簡約を逆にしたレンダリングは、音符と休符の間がプレースホルダ符号の位置となる。したがって、開始位置が音符であり、終了位置が当該音符に隣接する休符であるような操作がなされた場合には、その音符と休符の間に、その音符が先行するか否かを示すプレースホルダ符号を挿入すれば良いことになる。
【0114】
(レンダリング対象の学習)
上記実施形態では、レンダリングの対象となる音符符号およびこれに隣接する位置をユーザが指定する態様を説明したが、これらをニューラルネットワークにより指定することも可能である。
【0115】
上記のように、簡約の過程では、上記の例におけるDelete 1, Delete 2, Delete 3のように、プレースホルダ符号を除去する処理が実行される。
Delete 1 : d8 e8 r f16 → d8 e8 f16
Delete 2 : d16 l f16 → d16 f16
Delete 3 : d32 l ⇒ d32
【0116】
したがって、レンダリングの対象となる音符符号とこれに隣接する位置をニューラルネットワークにより出力するためには、これを逆にして深層学習等を行うことになる。
Reverse 1: d8 e8 f16 → d8 e8 r f16
Reverse 2: d16 f16 → d16 l f16
Reverse 3: d32 → d32 l
【0117】
ただし、これらは、単に符号列を長くする過程と見ることもできるため、Transformerにおいてうまく機能しないおそれがある。
【0118】
そこで、入力データとなる符号列の各符号の前後に、ダミー符号sを挿入し、出力データにおいては、ダミー符号sのいずれか1つを、プレースホルダ符号に変換する、という形に書き換えることで、Transformerにこれらを学習させることが可能となる。
Reverse 1': s d8 s e8 s f16 s → s d8 s e8 r f16 s
Reverse 2': s d16 s f16 s → s d16 l f16 s
Reverse 3': s d32 s → s d32 l
【0119】
生成部114においては、このような学習をしたTransformer等を含む他のニューラルネットワークを用意する。
【0120】
そして、処理の対象となる符号列の各符号の前後間にダミー符号sを挿入して、当該他のニューラルネットワークに与える。
【0121】
当該他のニューラルネットワークから出力された符号列からダミー符号sを除去すると、元の符号列にプレースホルダ符号を1つ挿入した符号列が得られることになる。これは、生成部114により音符位置指定が自動的に生成され、これが受付部111により受け付けられて、挿入部112によりプレースホルダ符号が挿入されたことに相当する。
【0122】
この後は、レンダリング部113によりレンダリングを行って、プレースホルダ符号を新たな音符に置き換える。そして、終了条件が満たされるまで(たとえば、音符の数が所望の数となるまで)、この処理を繰り返せば、楽曲が自動生成されることになる。
【0123】
(まとめ)
以上説明したように、本実施形態に係る楽曲レンダリング装置は、
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付ける受付部、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入する挿入部、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行するレンダリング部
を備える。
【0124】
また、本実施形態に係る楽曲レンダリング装置において、
前記指定された音符符号の音長と、前記2つの音符符号の音長の和と、は、等しい
ように構成することができる。
【0125】
また、本実施形態に係る楽曲レンダリング装置において、
1以上の訓練楽曲の各訓練楽曲について、当該各訓練楽曲を表現する符号列に含まれる音符符号が1つになるまで、
前記符号列において、
近接する2つの音符符号の一方を、他方に吸収させ、
当該吸収される一方を、当該吸収される一方と当該吸収する他方のどちらが先行していたかを表すプレースホルダ符号に置換する
変換をし、
前記変換された符号列から前記プレースホルダ符号を除去する
簡約を繰り返す際の各簡約に対して、
当該各簡約をする前の符号列を出力データとし、
当該各簡約において前記プレースホルダ符号が除去される前の符号列を入力データとする
訓練データを生成し、
前記1以上の訓練楽曲から生成された訓練データにより、前記ニューラルネットワークが前記1以上の訓練楽曲に適応するように学習させる
ように構成することができる。
【0126】
また、本実施形態に係る楽曲レンダリング装置において、
前記各訓練楽曲に対するタイムスパンツリーに基づいて、
前記各訓練楽曲に対する符号列に含まれる音符符号の最大タイムスパン長を定め、
当該最大タイムスパン長に基いて当該音符符号の優先度を定め、
当該定められた優先度が低い順に、前記簡約をする
ように構成することができる。
【0127】
また、本実施形態に係る楽曲レンダリング装置において、
前記符号列は、画面に表示され、
前記画面において、開始位置から終了位置まで注目位置を移動する操作が行われ、
前記開始位置に、前記符号列に含まれるいずれかの音符符号が位置し、
前記終了位置が、前記開始位置に位置する音符符号と、前記開始位置に位置する音符符号に隣り合う他の符号と、の間
であれば、
前記開始位置に位置する音符符号を、前記音符位置指示に係る音符符号とし、
前記終了位置を、前記音符位置指示に係る隣接位置とする
ように構成することができる。
【0128】
また、本実施形態に係る楽曲レンダリング装置において、
前記注目位置は、外部入力装置に制御されるカーソルの位置である
ように構成することができる。
【0129】
また、本実施形態に係る楽曲レンダリング装置において、
前記操作は、前記外部入力装置を用いたドラッグである
ように構成することができる。
【0130】
また、本実施形態に係る楽曲レンダリング装置において、
前記画面は、タッチスクリーンであり、
前記注目位置は、前記タッチスクリーンに対するタッチ位置である
ように構成することができる。
【0131】
また、本実施形態に係る楽曲レンダリング装置において、
前記操作は、前記タッチスクリーンに対するドラッグ、スライド、もしくは、スワイプである
ように構成することができる。
【0132】
また、本実施形態に係る楽曲レンダリング装置において、
前記符号列は、休止長を表す休符符号を含み、
前記開始位置に、前記符号列に含まれるいずれかの音符符号が位置し、
前記終了位置に、前記開始位置に位置する音符符号に後行して隣り合う休符符号が位置
すれば、
前記開始位置に位置する音符符号を、前記音符位置指示に係る音符符号とし、
前記開始位置に位置する音符符号と前記終了位置に位置する休符符号との間を、前記音符位置指示に係る隣接位置とし、
前記レンダリングは、前記指定された音符符号、前記挿入されたプレースホルダ符号、および、前記終了位置に位置する休符符号が並ぶ元の部分列を、2つの音符符号および休符符号が並ぶ新たな部分列に置き換え、
前記元の部分列に係る音符符号の音長と休符符号の休止長の和と、
前記新たな部分列に係る2つの音符符号の音長と休符符号の休止長の和と、
は、等しい
ように構成することができる。
【0133】
また、本実施形態に係る楽曲レンダリング装置において、
前記ニューラルネットワークは、Transformerを含む深層学習モデルにより実現される
ように構成することができる。
【0134】
また、本実施形態に係る楽曲レンダリング装置において、
符号列を入力データとし、当該符号列に対する音符位置指示を出力データとする他のニューラルネットワークに、前記符号列を与えることにより、音符位置指示を生成する生成部
をさらに備え、
前記生成された音符位置指示を前記受付部に受け付けさせる
ように構成することができる。
【0135】
また、本実施形態に係る楽曲レンダリング装置において、
前記符号列に含まれる音符符号の数が所定の終了条件を満たすまで、前記生成部、前記受付部、前記挿入部、前記レンダリング部による処理を繰り返す
ように構成することができる。
【0136】
本実施形態に係る楽曲レンダリング方法は、楽曲レンダリング装置が、
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付け、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入し、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行する
ように構成する。
【0137】
本実施形態に係るプログラムは、コンピュータを、
音高及び音長を表す音符符号を含む符号列において、いずれかの音符符号と、当該いずれかの音符符号に隣接する隣接位置と、を指定する音符位置指示を受け付ける受付部、
前記符号列において、前記指定された隣接位置と前記指定された音符符号のどちらが先行しているかを表すプレースホルダ符号を、前記指定された隣接位置に挿入する挿入部、
前記挿入された符号列において、前記指定された音符符号および前記挿入されたプレースホルダ符号を、2つの音符符号に置き換えるレンダリングを、ニューラルネットワークにより実行するレンダリング部
として機能させる。
【0138】
当該プログラムは、非一時的なコンピュータ読取可能な情報記録媒体に記録して配布、販売することができる。また、コンピュータ通信網等の一時的な伝送媒体を介して配布、販売することができる。
【0139】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、本発明の範囲を限定するものではない。すなわち、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
本願においては、世界知的所有権機関に対して令和4年(2022年)10月21日(金)に出願した国際出願PCT/JP2022/039353を基礎とする優先権を主張するものとし、法令が許す限り、当該基礎出願の内容を本願に取り込むものとする。
【産業上の利用可能性】
【0140】
本発明によれば、楽曲を表す符号列の中の1つの音符符号を2つの音符符号に置き換えるレンダリングをするための楽曲レンダリング装置、楽曲レンダリング方法、プログラム、ならびに、情報記録媒体を提供することができる。
【符号の説明】
【0141】
101 楽曲レンダリング装置
111 受付部
112 挿入部
113 レンダリング部
114 生成部
図1
図2
図3
図4
図5
図6
図7