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

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

▶ シャンハイ リリス テクノロジー コーポレイションの特許一覧

特許7587052リアルタイムオーディオ処理方法、システム、装置及び媒体
<>
  • 特許-リアルタイムオーディオ処理方法、システム、装置及び媒体 図1
  • 特許-リアルタイムオーディオ処理方法、システム、装置及び媒体 図2
  • 特許-リアルタイムオーディオ処理方法、システム、装置及び媒体 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-11
(45)【発行日】2024-11-19
(54)【発明の名称】リアルタイムオーディオ処理方法、システム、装置及び媒体
(51)【国際特許分類】
   G10K 15/04 20060101AFI20241112BHJP
   G10L 21/055 20130101ALI20241112BHJP
   G06F 3/16 20060101ALI20241112BHJP
   A63F 13/54 20140101ALI20241112BHJP
【FI】
G10K15/04 302F
G10L21/055
G06F3/16 500
A63F13/54
【請求項の数】 9
(21)【出願番号】P 2023550173
(86)(22)【出願日】2021-12-23
(65)【公表番号】
(43)【公表日】2024-02-26
(86)【国際出願番号】 CN2021140796
(87)【国際公開番号】W WO2022174673
(87)【国際公開日】2022-08-25
【審査請求日】2024-02-09
(31)【優先権主張番号】202110196468.2
(32)【優先日】2021-02-22
(33)【優先権主張国・地域又は機関】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】522023716
【氏名又は名称】シャンハイ リリス テクノロジー コーポレイション
(74)【代理人】
【識別番号】100136629
【弁理士】
【氏名又は名称】鎌田 光宜
(74)【代理人】
【識別番号】100080791
【弁理士】
【氏名又は名称】高島 一
(74)【代理人】
【識別番号】100125070
【弁理士】
【氏名又は名称】土井 京子
(74)【代理人】
【識別番号】100121212
【弁理士】
【氏名又は名称】田村 弥栄子
(74)【代理人】
【識別番号】100174296
【弁理士】
【氏名又は名称】當麻 博文
(74)【代理人】
【識別番号】100137729
【弁理士】
【氏名又は名称】赤井 厚子
(74)【代理人】
【識別番号】100152308
【弁理士】
【氏名又は名称】中 正道
(74)【代理人】
【識別番号】100201558
【弁理士】
【氏名又は名称】亀井 恵二郎
(72)【発明者】
【氏名】リ、グアンユー
(72)【発明者】
【氏名】シュエ、チャオ
(72)【発明者】
【氏名】ガオ、シンユエ
【審査官】齊田 寛史
(56)【参考文献】
【文献】中国特許出願公開第111782865(CN,A)
【文献】中国特許出願公開第102842319(CN,A)
【文献】特開2016-65903(JP,A)
【文献】特開2000-350861(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G10K 15/04
G10L 21/055
G06F 3/16
A63F 13/54
(57)【特許請求の範囲】
【請求項1】
端末に用いる、ゲームにおいてスクラッチを模擬するためのリアルタイムオーディオ処理方法において、
リアルタイムなオーディオデータを受信し、前記オーディオデータをバッファに格納し、前記オーディオデータを前記バッファにおいて複数のブロックに分けて記憶し、前記ブロック毎に一定数の複数のサンプリングポイントが含まれるステップ1と、
ユーザ操作の変位データを取得するステップ2と、
前記変位データの1階差分を速とし、前記変位データの2階差分を加速度とし、且つ前記速度と前記加速度に基づいて、前記バッファにおける対応する位置の1つの前記ブロックを読み出して再生し、ここで、下式によって前記1階差分
【数1】

及び前記2階差分
【数2】

を算出し、ここで、xは前処理された前記変位データを示し、xpは前処理された、前の前記ブロックを再生する前に受信した前記変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、dpは前の前記ブロックを再生する前に算出された前記1階差分を示し、bは前記ブロックにおけるサンプリングポイントグループの数を示し、ここで、前記サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示すステップ3と、を含むことを特徴とするリアルタイムオーディオ処理方法。
【請求項2】
ステップ2は、ユーザが操作を行っていないか、又は操作を停止したか否かを判断し、
もし「はい」であれば、通常速度でリアルタイムな前記オーディオデータを再生し、
もし「いいえ」であれば、ステップ3へ進むことをさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
記速度及び前記加速度に基づいて、前記バッファにおける対応する位置の1つの前記ブロックを読み出して再生することは、
前記速度及び加速度に基づいて、読み出される前記ブロックを決定することと、
前記速度及び加速度に基づいて、前記ブロックにおける前記サンプリングポイントに対して処理を行うことと、をさらに含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記ブロックにおける前記サンプリングポイントに対して前記処理を行うことは、線形補間を含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記変位データに対する前記前処理は、
受信した前記変位データの数値をスケーリングすることにより、受信可能な前記変位データの数値の範囲が区間[0,前記バッファにおけるサンプリングポイントグループの数]
となることを特徴とする請求項1に記載の方法。
【請求項6】
記速度及び前記加速度に基づいて、前記バッファにおける対応する位置の1つの前記ブロックを読み出して再生することは、前記ブロックを再生する前に前記ブロックに大きさが前記速度に正比例するノイズを加えることをさらに含むことを特徴とする請求項1~5のいずれか1項に記載の方法。
【請求項7】
ゲームにおいてスクラッチを模擬するためのリアルタイムオーディオ処理システムにおいて、オーディオデータ受信モジュール、変位データ取得モジュール及び再生モジュールを備え、
前記オーディオデータ受信モジュールは、リアルタイムなオーディオデータを受信し、前記オーディオデータをバッファに格納し、前記オーディオデータを前記バッファにおいて複数のブロックに分けて記憶し、前記ブロック毎に一定数の複数のサンプリングポイントが含まれ、
前記変位データ取得モジュールは、ユーザ操作の変位データを取得し、
前記再生モジュールは、前記変位データの1階差分を速とし、前記変位データの2階差分を加速度とし、且つ前記速度と前記加速度に基づいて、前記バッファにおける対応する位置の1つの前記ブロックを読み出して再生し、ここで、下式によって前記1階差分
【数3】

及び前記2階差分
【数4】

を算出し、ここで、xは前処理された前記変位データを示し、xpは前処理された、前の前記ブロックを再生する前に受信した前記変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、dpは前の前記ブロックを再生する前に算出された前記1階差分を示し、bは前記ブロックにおけるサンプリングポイントグループの数を示し、ここで、前記サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示すことを特徴とするリアルタイムオーディオ処理システム。
【請求項8】
コンピュータ実行可能な命令が記憶されているメモリと、前記命令を実行することで請求項1~6のいずれか1項に記載のゲームにおいてスクラッチを模擬するためのリアルタイムオーディオ処理方法を実施するように配置されるプロセッサと、を備えることを特徴とするゲームにおいてスクラッチを模擬するためのリアルタイムオーディオ処理装置。
【請求項9】
コンピュータプログラムを用いてエンコードしたコンピュータ記憶媒体において、前記コンピュータプログラムは、請求項1~6のいずれか1項に記載のゲームにおいてスクラッチを模擬するためのリアルタイムオーディオ処理方法を実施するように、1つ以上のコンピュータに実行される命令を備えることを特徴とするコンピュータプログラムを用いてエンコードしたコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はオーディオ処理技術分野に関し、特に、リアルタイムオーディオ処理方法、システム、装置及び媒体に関する。
【背景技術】
【0002】
ほとんどのゲームのオーディオは、いずれもサンプル(即ち前もって録音又は製作しておいたオーディオファイル)を再生することにより実現したものである。様々なエフェクターと連携して、オーディオに対してリアルタイムに更なる処理が行われることもある。例としては、部屋の残響や遠音のローパスフィルタが挙げられる。しかしながら、音声が画面やシーンにつれてトリガされたり、変化したりすることが多いが、いずれもスクラッチ効果を含む具体的なプレイヤーと音声とのインタラクションにも関していない。
【0003】
オーディオをリアルタイム処理する従来技術のほとんどは、音楽製作ソフトウェアの分野に用いられ、ゲームにおいて音声へのリアルタイム処理、特に、スクラッチ効果の実現には、まだ良い技術手段がない。
【発明の概要】
【0004】
本発明の目的は、ユーザとリアルタイムオーディオとのインタラクションを実現するリアルタイムオーディオ処理方法、システム、装置及び媒体を提供することにあり、ユーザとリアルタイムオーディオとのインタラクションの実現には、ゲームプレイヤーとゲーム内リアルタイムオーディオとのインタラクションをサポートし、スクラッチサウンドエフェクトをやり遂げることを含み、機械型スクラッチの効果を復元し、サウンドエフェクトの遷移が細やかで滑らかである。
【0005】
本発明の実施形態は、端末に用いるリアルタイムオーディオ処理方法において、
リアルタイムなオーディオデータを受信し、オーディオデータをバッファに格納し、オーディオデータをバッファにおいて複数のブロックに分けて記憶し、ブロック毎に一定数の複数のサンプリングポイントが含まれるステップ1と、
ユーザ操作の変位データを取得するステップ2と、
該変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生するステップ3であって、ここで、下式によって速度
【0006】
【数1】
【0007】
及び加速度
【0008】
【数2】
【0009】
を算出し、ここで、xは前処理された該変位データを示し、xpは前処理された前のブロックを再生する前に受信した変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、vpは前のブロックを再生する前に算出された速度を示し、bはブロックにおけるサンプリングポイントグループの数を示し、ここで、サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示すステップ3と、を含む、リアルタイムオーディオ処理方法を開示した。
【0010】
好ましくは、ステップ2は、
ユーザが操作を行っていないか、又は操作を停止したか否かを判断し、
もし「はい」であれば、通常速度でリアルタイムな前記オーディオデータを再生し、
もし「いいえ」であれば、ステップ3へ進むことをさらに含む。
【0011】
好ましくは、変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生するステップは、
該速度及び該加速度に基づいて、読み出されるブロックを決定することと、
該速度及び該加速度に基づいて、ブロックにおけるサンプリングポイントに対して処理を行うことと、をさらに含む。
【0012】
好ましくは、上記ブロックにおけるサンプリングポイントに対して処理を行うことは、線形補間を含む。
【0013】
好ましくは、上記変位データに対する前処理は、
受信した変位データの数値をスケーリングすることにより、受信可能な変位データの数値の範囲が区間[0,バッファにおけるサンプリングポイントグループの数]となるようにすることを含む。
【0014】
好ましくは、上記変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生することは、該ブロックを再生する前に、該ブロックに大きさが上記速度に正比例するノイズを加えることをさらに含む。
【0015】
本発明の実施形態は、リアルタイムオーディオ処理システムを公開し、当該リアルタイムオーディオ処理システムは、オーディオデータ受信モジュール、変位データ取得モジュール及び再生モジュールを備え、
オーディオデータ受信モジュールは、リアルタイムなオーディオデータを受信し、オーディオデータをバッファに格納し、オーディオデータをバッファにおいて複数のブロックに分けて記憶し、ブロック毎に一定数の複数のサンプリングポイントが含まれ、
変位データ取得モジュールは、ユーザ操作の変位データを取得し、
再生モジュールは、該変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つの前記ブロックを読み出して再生し、ここで、下式によって速度
【0016】
【数3】
【0017】
及び加速度
【0018】
【数4】
【0019】
を算出し、ここで、xは前処理された該変位データを示し、xpは前処理された前のブロックを再生する前に受信した変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、vpは前のブロックを再生する前に算出された速度を示し、bはブロックにおけるサンプリングポイントグループの数を示し、ここで、サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示す。
【0020】
本発明の実施形態は、リアルタイムオーディオ処理装置を開示し、当該リアルタイムオーディオ処理装置は、コンピュータ実行可能な命令が記憶されているメモリ及びプロセッサを備え、プロセッサは、命令を実行することでリアルタイムオーディオ処理方法を実施するように配置される。
【0021】
本発明の実施形態は、コンピュータプログラムを用いてエンコードしたコンピュータ記憶媒体を開示し、コンピュータプログラムは、命令を備え、命令は、リアルタイムオーディオ処理方法を実施するように、1つ以上のコンピュータに実行される。
【0022】
本発明実施形態と従来技術とを比べて、主な区別及びその効果は次にある。
【0023】
本発明では、リアルタイムなオーディオデータを受信し、オーディオデータをバッファに格納し、真実のレコードが存在しないので、再生されたオーディオデータもメモリに常駐しない。このため、バッファを設置し、過去の1セグメントの音声(例えば、概ね1~4秒)をバッファしてもって使用に備える。
【0024】
本発明では、オーディオデータをバッファにおいて複数のブロックに分けて記憶し、ブロック毎に一定数の複数のサンプリングポイントを含み、オーディオデータを処理する際に、毎回1つのブロックのデータを先に読み出し、全体としてこれらのデータを前処理し、それからそのうちの各サンプリングポイントを処理することができ、ハードウェア性能に対する要求を減らし、データ読み出し時間を減少させ、演算性能を高めることができる。
【0025】
本発明では、ステップ2には、ユーザ操作の変位データを取得し、ステップ3には、該変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生し、ここで、下式によって速度
【0026】
【数5】
【0027】
及び加速度
【0028】
【数6】
【0029】
を算出し、ここで、xは前処理された該変位データを示し、xpは前処理された、前のブロックを再生する前に受信した変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、vpは前のブロックを再生する前に算出された速度を示し、bはブロックにおけるサンプリングポイントグループの数を示し、ここで、サンプリングポイントグループは時間が同一で音声チャネルが異なる1グループのサンプリングポイントを示す。ユーザの操作情報を取得し、その操作速度、加速度等の情報に基づいてバッファメモリに格納された過去の一定の期間内のオーディオデータを再生するので、リアルタイムオーディオにおいてスクラッチを模擬することができ、もし各サンプリングポイントを処理する際に、いずれもリアルタイムに手の指の変位情報を取得すれば、精確であるが、こうするとオーバーヘッドがあまりにも大きすぎる。しかも、一般的なハードウェアもこんなに高いリフレッシュレートがない。ブロックを単位としてデータを読み出し、毎回読み出す前にユーザ操作の変位データを取得し、該変位データによって速度を算出し、該速度によって該ブロックデータを再生するので、計算量を減少し、ハードウェア性能に対する要求を減らし、オーディオデータの処理速度を速めることができる。又、該変位データによって加速度を算出して速度に重ね合わせ、算出された速度及び加速度に基づいて該ブロックデータを再生し、オーディオ再生の平滑度をさらに高めることができる。
【0030】
本発明では、ステップ2は、ユーザが操作を行っていないか、又は操作を停止したか否かを判断し、もし「はい」であれば、通常速度でリアルタイムなオーディオデータを再生し、もし「いいえ」であれば、ステップ3へ進むことをさらに含む。ユーザが操作を行っていない場合、正常にリアルタイムオーディオを再生することができ、そして、もしユーザが操作した後、例えば、スクラッチの際に後にレコードを動かした後、直接手を離し、手離した位置で通常の再生速度に復帰させると、次に再生されるオーディオとリアルタイムオーディオとの間には一定の時間差、つまり遅延が存在することになる。だから、本発明では、ユーザが手を離すと、これを瞬時にレコードをずっと通常速度で再生していた場合に現在再生すべく位置までに早送りさせてから、通常再生を再開することに等価し、遅延の問題を解決することができる。
【0031】
本発明では、変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生することは、該速度及び該加速度に基づいて、読み出されるブロックを決定することと、該速度及び該加速度に基づいて、ブロックにおけるサンプリングポイントを処理することと、をさらに含む。ユーザの操作に応じてバッファをアドレッシングし、対応する位置のブロックにおけるサンプリングポイントを処理することで、サウンドカード等のハードウェアに出力した後に、ユーザ操作の速度や加速度に応じてオーディオを再生することを容易にすることができ、スクラッチの本質が音声の「高倍速再生とスロー再生とが交互に行われる」結果であり、再生速度が速いとピッチが高くなり、再生速度が遅いとピッチが低くなるため、ユーザ操作の速度や加速度に応じてオーディオを再生すると、スクラッチ効果を模擬することができる。また、その他の処理を同時に行ってもよい。
【0032】
本発明では、ブロックにおけるサンプリングポイントに対して行われる処理は、線形補間を含み、ユーザは、操作時にドラッグの速度が遅すぎると、バッファデータにおけるサンプリングポイントが有限であるため、新たな若干のサンプリングポイントを生成する際に、一定の期間内にアクセスしたのがバッファデータ中の同一点であり、出力される波形が鋸歯に類似しており、大量の高周波成分が引き込まれることで、音声は耳障りな部分が聞こえる可能性がある。補間は当該問題を極めて大きく減少することができ、線形補間は性能要求が低くて速い。
【0033】
本発明では、変位データに対する前処理は、受信した変位データの数値をスケーリングすることにより、受信可能な変位データの数値の範囲が区間[0,バッファにおけるサンプリングポイントグループの数]となることを含む。バッファにおける一定の位置でのみアドレッシングすることができるため、変位データの数値をスケーリングして、相応のバッファのアドレッシング範囲にマッピングすることで、変位データに基づいてアドレッシングを行うことを容易にする。
【0034】
本発明では、変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生することは、該ブロックを再生する前に、該ブロックに大きさが上記速度に正比例するノイズを加えることをさらに含む。スクラッチの際に、レコード針がレコード表面に速く摩擦することにより発生する音声を模擬することができて、このような摩擦の音声の大きさはスクラッチの速さに関係する。
【図面の簡単な説明】
【0035】
図1図1は本発明の実施例によるリアルタイムオーディオ処理方法を示すフローチャートである。
図2図2は本発明の実施例によるリアルタイムオーディオ処理方法を示すフローチャートである。
図3図3は本発明の実施例によるリアルタイムオーディオ処理システムを示すブロック図である。
【発明を実施するための形態】
【0036】
以下、具体的な実施例及び図面を参照しながら本願についてさらに説明する。ここで説明される具体的な実施例は、本願を解釈するためのものに過ぎず、本願を限定するものではないことが理解されるであろう。なお、説明の便宜上、図面には、本願に関連する部分のみが示されており、全ての構成又は過程が示されていない。注意すべきなのは、本明細書において、類似の符号や文字が以下の図面で類似の項目を表す。
【0037】
なお、本明細書では、「第1」、「第2」等の用語を用いて各特徴を説明し得るが、これらの特徴は、これらの用語によって限定されるべきではないことを理解されたい。これらの用語は単に区別するためのものであり、相対的な重要性を指示又は暗示するものとして理解することはできない。例を挙げて言うと、実施形態の範囲から逸脱することなく、第1特徴を第2特徴と称し、同様に第2特徴を第1特徴と称してもよい。
【0038】
なお、本願の説明において、別に明確な規定や限定がない限り、用語「設置」、「繋がり」、「接続」は広義に理解されるべきであり、例えば、固定接続であってもよいし、取外し可能に接続されていてもよいし、一体的に接続されていてもよい。機械的に接続されていてもよいし、電気的に接続されていてもよい。直接接続されていてもよいし、中間媒体を介して間接的に繋がっていてもよいし、2つの素子内部の連通であってもよい。当業者にとって、上記用語の本実施例における具体的な意味を具体的に理解することができる。
【0039】
本願の例示的な実施例は、リアルタイムオーディオ処理方法、システム、装置及び媒体を含むが、これらに限定されない。
【0040】
当業者が一般的に採用している用語を用いて例示的な実施例の様々な態様を説明することで、それらの作業の本質を当業者に伝える。しかし、当業者にとって、一部の説明される特徴を用いて幾つかの代替的な実施例を実施するのは明らかである。例示的な実施例についてさらに完全に理解するように、解釈のため、具体的な数字や配置を詳しく述べている。しかし、当業者にとっては、具体的な細部がない場合に、代替的な実施例を実施することができることは明らかである。幾つかのその他の場合には、本明細書は、本願の例示的な実施例をぼんやりさせるのを避けるように、幾つかの周知の特徴が省略又は簡素化される。
【0041】
また、各種の操作は、最も例示的な実施例の理解に役立つ方式で複数の互いに独立された操作として記載される。しかし、説明の順序は、これらの操作が記載された順序に依存しなければならないことを暗示するものとして解釈されるべきではなく、その中の多くの操作が並行して併発または同時に実施されてもよい。また、各操作の順序を入れ替えるようにしてもよい。説明された操作が終了すると、前記処理を終了してもよいが、図示しない付加ステップを有していてもよい。前記処理は、方法、関数、レギュレーション、サブルーチン、サブプログラム等に対応することができる。
【0042】
明細書における「一実施例」、「実施例」、「例示的な実施例」等の引用は、説明された実施例が特定の特徴、構造又は性質を含んでいてもよいが、各実施例が特定の特徴、構造又は性質を含む必要がない可能性もあることを表す。しかも、これらのフレーズは、必ずしも同一の実施例についてのものであるとは限らない。また、具体的な実施例を参照しながら特定の特徴を説明すると、当業者の知識は、これらの実施例が明確に記述されているか否かにかかわらず、これらの特徴と他の実施例との組み合わせに影響を与えることができる。
【0043】
文脈によって規定されない限り、用語「含む」、「有する」及び「包含する」は同義語である。フレーズ「A及び/又はB」は、「(A)、(B)又は(A及びB)」を意味する。
【0044】
本明細書で使用される用語「モジュール」は、その中の一部として、または、一又は複数のソフトウェア又はファームウェアプログラムを実行するためのメモリ(共有、専用又はグループ)、専用集積回路(ASIC)、電子回路及び/又はプロセッサ(共有、専用又はグループ)、組合せ論理回路、及び/又は前記機能を提供する他の適切なコンポーネントを含んでも良い。
【0045】
図面では、特定の配置及び/又は順序で、幾つかの構成又は方法の特徴が示されている。しかしながら、このような特定の配置及び/又は順序は必須ではないことが理解されるべきである。幾つかの実施形態では、これらの特徴は、例示的な図面に示された形態及び/又は順序とは異なるものとして説明されてもよい。また、特定の図面に含まれる構成又は方法の特徴は、全ての実施例に含まれることを意味するものではなく、幾つかの実施例において、これらの特徴を含まなくてもよく、又は、これらの特徴と他の特徴とを組み合わせてもよい。
【0046】
本願の目的、技術手段及び優れた点をよりはっきりさせるために、以下、図面を参照しながら本願の実施形態についてさらに詳しく説明する。
【0047】
本発明の目的は、ユーザとリアルタイムオーディオとのインタラクションを実現することにあり、そのうち、ゲームプレイヤーとゲーム内のリアルタイムオーディオとのインタラクションをサポートし、スクラッチサウンドエフェクトをやり遂げることを含み、機械型スクラッチの効果を復元し、サウンドエフェクトの遷移が細やかで滑らかである。
【0048】
スクラッチ効果とは、レコードプレーヤー上のレコードを手の指で動かし、人為的にレコードの回転速度に関与し、その速度を激しく変化させることによってもたらす、人為的なピッチの高低変化、及びその他の付加的歪み効果の総称を指す。以上の原理をモデリングすると、以下のように記述することができる。
【0049】
スクラッチの本質は、音声の「高倍速再生とスロー再生とが交互に行われる」結果であり、レコードが正常に再生される速度方向が正方向であるとすると、負方向へのスクラッチの場合には、1つの負方向の加速度が発生する。該加速度のため、本来の正方向の速度が小さくなり、音高が低下する。次に、該加速度は、正方向の速度を完全に相殺し、レコードが反転を開始し、負方向の速度が生じ、加速度の存在により、負方向の速度がますます大きくなる。レコードを反転させながら、負方向の加速度が消失するまで、音高が再び徐々に上昇していく。負方向の加速度が消失すると、レコードそれ自体が前に向かって再生され続けるため、レコードプレーヤーそれ自体は、再生速度が正常に回復するまで、正方向の加速度が発生するが、この時、再生位置は(最初の位置+経過時間が経過するべき変位)よりも小さい。この過程において、レコードの反転の速度が低下し、速度が正方向の速度に反転するまで、音高が再び低下し、最終的には通常の速度に戻る。勿論、ユーザは、レコードに正方向の加速度を加えてもよく、この場合には、レコードプレーヤーそれ自体が生じる加速度に重畳して加速することになる。
【0050】
現実におけるスクラッチは、全てのオーディオ情報がレコードに記録されているため、バックスクラッチ、あるいは、フォワードスクラッチが可能であるが、音声に対してリアルタイム処理を行うと、将来、どのような音声が出現するかを知ることができない。このため、「後にレコードを動かす」と「後にレコードを動かした後に手を離し、元の位置に戻す」というプロセスのみを模擬することができる。しかも、ユーザが後にレコードを動かした後に直接手を離すと、手離した位置に音を正常な再生速度に戻すと、実際には該再生過程と実際上の音との間には一定の遅延が存在することになる。そこで、本発明では、ユーザが手を離すと、ずっと通常速度で再生されている場合に現在再生すべき位置までレコードを瞬間的に早送りさせてから通常再生を再開することに等価する。
【0051】
図1は本発明の実施例によるリアルタイムオーディオ処理方法を示すフローチャートである。
【0052】
図1に示すように、方法は、
リアルタイムなオーディオデータを受信し、オーディオデータをバッファに格納し、オーディオデータをバッファにおいて複数のブロックに分けて記憶、ブロック毎に一定数の複数のサンプリングポイントが含まれるステップ102と、
ユーザ操作の変位データを取得するステップ104と、
該変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生するステップ106であって、ここで、下式によって速度
【0053】
【数7】
【0054】
及び加速度
【0055】
【数8】
【0056】
を算出し、ここで、xは前処理された該変位データを示し、xpは前処理された前のブロックを再生する前に受信した変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、vpは前のブロックを再生する前に算出された速度を示し、bはブロック中のサンプリングポイントグループの数を示し、ここで、サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示すステップ106と、を含む。
【0057】
例えば、幾つかのシーン(例えば、ゲーム中)において、幾つかのリアルタイムの音声(例えば、ゲーム内にリアルタイムに生成した音声、外部から入力されたボイス)を発生又は入力することになり、該リアルタイムの音声においてスクラッチ効果を模擬することができ、1つのバッファを設け、該音声のリアルタイムオーディオデータを受信し、オーディオデータをバッファに格納し、オーディオデータをバッファに複数のブロックに分けて記憶し、ブロック毎に一定数の複数のサンプリングポイントが含まれる。ユーザ(例えば、ゲームプレイヤー)がスクリーンをクリックする時、一定の間隔(例えば、一定の時間間隔、画面更新間隔、又は一定のデータ量を読み出したことを間隔とする)でユーザ操作の変位データ(例えば、ユーザの指又はマウスポインタのスクリーンにおけるクリック点の位置を取得する)を取得する。取得した変位データによって速度や加速度などのユーザ操作の動きパラメータを算出し、これらの動きパラメータ(例えば、これらの動きパラメータをバッファにおけるアドレッシング速度及び加速度及び/又はオーディオデータを再生する速度及び加速度にマッピングする)に基づいてオーディオデータを読み出して再生する。具体的には、例えば、ゲームにおいて、ゲームプレイヤーは、ゲーム進行時にリアルタイムに生成された音声、外部から入力されたボイスとインタラクションし、これらの音声においてスクラッチ効果を模擬したシーンでは、受信したリアルタイムオーディオデータのサウンドカードへの送信を阻止し、受信したリアルタイムオーディオデータをバッファに格納させ、該バッファは循環バッファでもよく、ライトポインタがデータを該バッファに格納するにつれて一方向へ前進させ、該ライトポインタがバッファのはずれに到達すると、該ライトポインタは、再びバッファの先頭に戻り、これによって、該バッファが1つの循環バッファとなる。プレイヤーがスクラッチ操作を行っていない場合には、リアルタイムオーディオが正常に再生される。ゲームプレイヤーがスクリーン上で表示されたインタラクションコントロールユニット(例えば、仮想ディスク)を正逆方向に動かし始めると、プレイヤーの指又はマウスポインタのスクリーンにおけるクリック点の位置を取得し、逆方向に動かし始めた直後に、一定の時間間隔で3回取得した後、3回のクリック点位置のうちの各隣接する2回の差を変位として算出し、これらの変位によって相応の速度及び加速度を算出し、それからリードポインタが現在のバッファに所在する位置から引き返してアドレッシングし、バッファにおける対応する位置の1つのブロックを読み出して再生する。プレイヤーがスクラッチする過程において、1つのブロックの読み出し・再生が完了する度に、プレイヤーのクリック点位置を取得して前処理を行い、毎回新たなクリック点の位置を取得して前処理した後、前処理されたクリック点の位置x、前処理された前回取得したクリック点の位置xpに基づき、及び式
【0058】
【数9】
【0059】
によって対応するプレイヤーのスクラッチ速度vを算出し、又該速度vと前回算出した速度vpに基づき、及び式
【0060】
【数10】
【0061】
によって対応するプレイヤーのスクラッチ加速度aを算出し、sは調節可能な係数を示し、調節可能な係数はユーザ操作動作に対する応答の感度を調節するためのものであり、bはブロックにおけるサンプリングポイントグループの数を示し、ここで、サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示す。それから、速度v及び加速度aに基づいて次のブロックを読み出して再生する。
【0062】
本発明では、毎回1つのブロックのデータを先に読み出し、全体としてこれらのデータを前処理してから、その中の各サンプリングポイントを処理することができ、ハードウェア性能要求を減らし、データ読み出し時間を減少し、演算性能を高めることができる。ユーザの操作情報を取得し、その操作速度、加速度等の情報に基づいてバッファメモリに格納された過去の一定の期間内のオーディオデータを再生するので、リアルタイムオーディオにおいてスクラッチを模擬することができ、もし各サンプリングポイントを処理する際に、いずれもリアルタイムに手の指の変位情報を取得すれば、精確であるが、こうするとオーバーヘッドがあまりにも大きすぎる。しかも、一般的なハードウェアもこんなに高いリフレッシュレートがない。ブロックを単位としてデータを読み出し、毎回読み出す前にユーザ操作の変位データを取得し、該変位データによって速度を算出し、該速度によって該ブロックデータを再生するので、計算量を減少し、ハードウェア性能に対する要求を減らし、オーディオデータの処理速度を速めることができる。該変位データによって加速度を算出して速度に重ね合わせ、算出された速度及び加速度に基づいて該ブロックデータを再生すると、オーディオ再生の平滑度をさらに高めることができる。
【0063】
本願の幾つかの実施例によれば、ステップ2は、
ユーザが操作を行っていないか、又は操作を停止したか否かを判断し、
もし「はい」であれば、通常速度でリアルタイムなオーディオデータを再生し、
もし「いいえ」であれば、ステップ3へ進むことをさらに含む。
【0064】
ユーザが操作を行っていない場合、正常にリアルタイムオーディオを再生することができ、そして、もしユーザが操作した後、例えば、スクラッチの際に逆方向に動かした後、直接手を離し、手離した位置で通常の再生速度に復帰させると、次に再生されるオーディオとリアルタイムオーディオとの間には一定の時間差、つまり遅延が存在することになる。だから、本発明では、ユーザが手を離す時に、これをレコードをずっと通常速度で再生していた場合に現在再生すべき位置までに瞬時に早送りさせることに等価し、その後に通常の再生を再開すると、遅延の問題を解決することができる。
【0065】
本願の幾つかの実施例によれば、上記の変位データに対する前処理は、
受信した変位データの数値をスケーリングすることにより、受信可能な変位データの数値の範囲が区間[0,バッファにおけるサンプリングポイントグループの数]となることを含む。
【0066】
例えば、scra_posを用いて入力された操作数値(ドラッグの変位又は速度データ)を前処理した後の数値を記憶する。前処理方法は、以下の通りである。
scra_pos = Clamp(Abs(mouse_pos), 0, max_mouse_pos) * factor
該方法によれば、操作によって発生したデータを、 [0, p_bufferでバッファしたサンプリングポイントグループの数以下] の範囲内にマッピングし、以降の操作がそれに基づいて行われる。この範囲にマッピングされるのは、この範囲内でしかアドレッシングできないからである。そのうち、max_mouse_posは、実際の状況に応じて、初期化時に設けられる必要がある。例えば、スクリーン上での操作であれば、その範囲が数百個の画素点であることを制限することができる。範囲を超えた後、 DSP での表現は、位置が最大値に固定されていることになる。factor も初期化時に算出される。その役割は、max_mouse_posの範囲内の数値をp _buffer[] の対応範囲にスケーリングすることであり、アルゴリズムは以下の通りである。
factor = (total_samps - buffer_size) / max_mouse_pos / channels
本発明では、バッファ内の一定の位置でしかアドレッシングできないため、変位データの数値をスケーリングして、対応するバッファアドレス範囲にマッピングして、変位データに基づいてアドレッシングを行うことを容易にする。
【0067】
本願の幾つかの実施例によれば、変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生することは、
該速度及び該加速度に基づいて、読み出されるブロックを決定することと、
該速度及び該加速度に基づいて、ブロックにおけるサンプリングポイントに対して処理を行うことと、をさらに含む。
【0068】
例えば、速度v及び加速度aに基づいて次のブロックを読み出して再生することは、速度v及び加速度aに基づいて読み出される次のブロック(例えば、速度vと加速度aの正負に基づいて、プレイヤーのスクラッチ動作の方向を決定して、ポインタのバッファにおけるアドレッシング方向を決定する)を決定し、そして該ブロックに対してブロック処理@blockを行い、ブロック内のサンプリングポイントに対してサンプリングポイント処理@sampleを行って、速度vと加速度aに基づいてこの次のブロックを再生することを含む(例えば、処理されたブロックをサウンドカードバッファに送り、対応する速度と加速度データに基づいて処理されたブロックであるため、サウンドカードはブロックにおけるサンプリングポイントデータを読取して、一定の時間間隔で電圧に変換して出力すると、対応する速度と加速度データに基づいてこのブロックを再生することができる)。
【0069】
例えば、本発明は、DSP (Digital Signal Processing, デジタル信号処理)に基づいて実現される。音声映像を処理するプログラムは、いずれもDSPを利用して行われると考えられるが、一般的に、音楽制作のためのソフトウェアは、VST (Steinberg社によって開発された1セット開発ツール) によって実現される。該技術で生成されたランタイムライブラリは、ゲームエンジンに直接適用することができない。FMODが提供するDSPインタフェースによって実現されてもよい。FMOD は、音声の再生制御、ミキシング、エフェクト等の機能をゲームエンジンに統合して、音声の操作や処理を容易にするためのオーディオミドルウェアである。
【0070】
一般的に毎秒4万個以上のサンプリングポイントがサウンドカードに送られる。@sampleで実行される処理は、一般的に演算量が比較的少ない演算である。もし一つ一つのポイントを処理すれば、必然的に性能に対する要求が非常に高くなるからである。
【0071】
一般的なやり方は、一度に1バッチのポイントを処理してからサウンドカードに送り、この1バッチのサンプリングポイントを1つのブロックと呼ぶ。ブロックは、若干のサンプリングポイントが記憶された1つのメモリ空間である。オーディオプログラムは、1ブロックずつサウンドカードのバッファに送る。サウンドカードは、ブロック内のサンプルポイントデータを1バッチずつ読み出し、それから一定の時間間隔で電圧に変換して出力する。@blockは、各サンプリングポイントが変化する必要のない変数を処理するのが一般的である。又は、各サンプリングポイントが変化する変数については、@sample における計算量を減らすように、幾つかの前処理が行われる。
【0072】
サンプリングポイントを記録したメモリを処理する際には、音声チャネル数の問題にも注意する必要がある。通常聞こえる音声はステレオであり、2つのチャネルがあり、つまりサウンドカードは同時に左右のチャネルの2つのサンプリングポイントを出力する。例えば、時間長さを1024ポイントと仮定する1セグメントのオーディオには、実際に2048ポイントの情報が含まれている。音声エンジンは、一般的に5.1チャネル、7.1チャネル等の規格をサポートしており、この場合、時刻毎のサンプリングポイントがより多くなる。マルチチャネルであれば、メモリに異なるチャネルのサンプリングポイント情報を交互に記憶し、同時刻のサンプリングポイントを隣接させる。例えば、左右のチャネルの音声は、メモリにLRLRLRLR...として表現される。
【0073】
以下、channelsを用いてチャネルの数を表す。プログラムの実行中には、一般にブロックの大きさは変更されない。したがって、これを定数として扱うことができ、初期化時に取得すればよい。以下、block_sizeを用いて1つのブロックの大きさ、即ち、幾つのグループのサンプリングポイントが含まれているかを示す。実際の1つのブロックに含まれるサンプルポイントの数は、buffer_size = block_size * channels を用いて表される。
【0074】
上記のブロック処理@block及びサンプリングポイント処理@sampleは、次の通りであってもよい。
【0075】
1) ブロック処理@block
この部分は、ブロック毎に行われる演算である。実際には、サンプリングポイントを処理する過程も@blockで行われる。ループによってblock における各サンプリングポイントを走査((traversal))することは、サンプリングポイントを処理したことである。
【0076】
a) オーディオをバッファする
リアルなレコードが存在しないため、再生されたオーディオデータもメモリに常駐しない。このため、1つのバッファを設置する必要があり、過去の1セグメントの音声(概ね1~4秒で充分である)をバッファしてもって使用に備え、初期化時には、変数buffer_blocksに値を与えて、幾つのブロックの長さをバッファするかを指定する。
buffer_blocks = (int)Floor(buffer_time * samplerate / block_size)
初期化時には、サイズがtotal_sampsに固定されたメモリを申請し、循環バッファとして使用する。ここで、
total_samps = buffer_size * buffer_blocks
以下、p_buffer[]で当該バッファを指し、かつ、curr_blockを用いて現在循環バッファの何番目のblockにあるかを記録し、次に、現在の入力バッファ(そのポインタアドレスをin_bufferとする)を記録し、p_buffer[]の対応位置にコピーし、curr_buff_pos = curr_block * buffer_sizeを用いて現在のバッファブロックのメモリ開始位置をマーキングする。
Copy(in_buffer, p_buffer, current_buff_pos, buffer_size)
各 block がbufferに送り込まれると、curr_blockの値を1加算させ、かつ、ある値に達したときにゼロとなり、それによって、p_buffer[]が1つの循環バッファとなる。
【0077】
b) 操作情報を受信して算出する
入力された操作数値(ドラッグの変位や速度データ)を前処理した後の数値がscra_posによって記憶される。前処理方法は、以下の通りである。
scra_pos = Clamp(Abs(mouse_pos), 0, max_mouse_pos) * factor)
該方法は、操作によって発生した数字を、[0,p_bufferでバッファしたサンプルポイントグループの数以下]の範囲内にマッピングし、以降の操作がそれに基づいて行われる。この範囲にマッピングされるのは、この範囲内でしかアドレッシングできないからである。そのうち、max_mouse_posは、実際の状況に応じて、初期化時に設けられる必要がある。例えば、スクリーン上での操作であれば、その範囲が数百個の画素点であることを制限することができる。範囲を超えた後、 DSP での表現は、位置が最大値に固定されていることになる。factor も初期化時に算出される。その役割は、max_mouse_posの範囲内の数値をp_buffer[]の対応範囲にスケーリングすることであり、アルゴリズムは以下の通りである。
factor = (total_samps - buffer_size) / max_mouse_pos / channels
算出されたscra_posがある場合、道理から言えばバッファ中の (サンプリングポイント位置-丸めたscra_pos) の位置におけるサンプリングポイントをそのまま出力すれば効果が得られる。しかし、そのまま出力すると、次のような多くの問題に遭遇するため、次のような補間、平滑等の更なる処理が必要となる。
【0078】
c) 平滑処理-差分及び2階差分
1階差分だけであれば、 block毎にアドレッシングの速度が変化せず、 blockと blockとの間のみに、アドレッシング速度が異なることになる。このため、波形が密集している程度、つまり音高の変化は不連続だ。聴感上、多数の粒状感がついている。2階差分は、「速度の変化率」、即ち、加速度を算出した。各サンプリングポイントのアドレッシング位置に重ね合わせることにより、各サンプリングポイントに平滑化を導入することができる。このため、速度が急変せずに連続的に変化している波形が得られる。差分と2階差分処理は、以下の通りである。
【0079】
初期化時には、宣言変数scra_pos_prevは、前回の @blockにおけるscra_posの値を記録するためのものである。初期値は0である。宣言変数scra_pos_prev_deltaは、前回の@blockにおけるscra_pos_deltaの値を記録するためのものである。初期値は0であり、この2つの値は後述する@sampleで使用される。
【0080】
@blockでは、1階差分が算出される。
scra_pos_delta = (scr_pos - scra_pos_prev) / smooth
ここで、smoothは調節可能な係数であり、取り値範囲は数百-数万である。スクラッチの応答感度を調節するために用いられる。
【0081】
2階差分について、
delta_delta = (scra_pos_delta - scra_pos_prev_delta) / block_size
scra_pos_deltaは、前後2つの@blockで受信された位置情報の差値を計算し、変位を微分することで、速度が得られた。delta_deltaは、前後2つのdeltaの差値を計算し、速度を微分することで、加速度が得られた。
【0082】
ここで、 deltaが一定の閾値まで減衰したときには、直接ゼロとなり、爆音の発生が防止され、アルゴリズムは、以下の通りである。
if(scra_pos_delta< 0.001 &&scra_pos_delta> -0.001)
{
scra_pos_delta = 0;
}
【0083】
2) サンプリングポイント処理@sample
上記@blockにおける計算が完了すると、@sample部分に進む。該部分は、@block における2層のループによって完成される。内層のループは、音声チャネル数を走査し、サンプリングポイント毎に対して操作し、外層のループは、block内のサンプルポイントグループの数を走査する。アルゴリズムは、以下の通りである。
for(int samp = 0; samp<block_size; samp++){
@sample
for(int chan = 0; chan< channels; chan++){
@channel
buffer[chan + samp * channels]
}
}
ここで、@sampleと@channelは、次の通りである。
【0084】
a) @sample
如何なる操作も実行しない場合、現在p_buffer[]のどの位置のデータを使用しているかを計算する:
curr_pos = current_buff_pos + (samp * channels)
2つのdelta の数値は更新される。
scra_pos_prev_delta += delta_delta;
scra_pos_prev += scra_pos_prev_delta;
core_posを算出し、この変数はcurr_posに基づいて、スクラッチドラッグの変位または速度が導入された後、読み取られるべきバッファ位置を算出する。
core_pos = curr_pos - 2 * (int)Floor(scra_pos_prev) ;
if (core_pos< 0)
{
core_pos = total_samps + curr_pos - 2 * (int)Floor(scra_pos_prev) ;
}
core_posは丸められるため、現在のアドレッシング位置が2つのサンプリングポイントの間に収まっていれば、両者を結線し、結線上の対応位置の取り値を取り出す。続いてくる線形補間操作のための変数itp_factorを算出する必要がある。
itp_factor = scra_pos_prev - Floor(scra_pos_prev) ;
【0085】
b) @channel
具体的にサンプリングポイントを処理する場合には、現在処理中のデータを格納するための小さな空間も必要となる。初期化時には申請が行われ、その大きさは1つのブロックであればよい。o_buffer[]と表記し、下に変数samp_clampを用いて添字が0から始まるサンプリングポイントアドレッシング範囲をマークし、初期化時に値を与える。アルゴリズムは、以下の通りである。
samp_clamp = total_samps - channels - 1;
下でアドレッシングと差値の操作を行い、結果をo_buffer[] に格納する。
if(scra_pos_prev_delta == 0)
{
o_buffer[chan + samp * channels] = p_buffer[chan + core_pos];
}
else if(scra_pos_prev_delta> 0)
{
if(core_pos> channels)
o_buffer[chan + samp * channels] = p_buffer[chan + core_pos] * (1 - itp_factor) + p_buffer[chan + core_pos - channels] * itp_factor;
else
o_buffer[chan + samp * channels] = p_buffer[chan + core_pos] * (1 - itp_factor) + p_buffer[chan] * itp_factor;
}
else
{
if(core_pos<samp_clamp)
o_buffer[chan + samp * channels] = p_buffer[chan + core_pos] * itp_factor + p_buffer[chan + core_pos + channels] * (1- itp_factor);
else
o_buffer[chan + samp * channels] = p_buffer[chan + core_pos] * itp_factor + p_buffer[chan + samp_clamp] * (1 - itp_factor);
}
まず、scra_pos_prev_deltaにより、現在ドラッグ中であるか否か、及びドラッグの方向を判断し、ドラッグが行われていなければ、そのまま元のデータをo_buffer[]に送り、ドラッグが行われていれば、ドラッグの方向に応じて、目標点、及び目標点の1つ前又は後の点を探して補間する。
【0086】
3) データを返すこと及びマーキングの更新
2つの forループを退出した後、@block部分に戻り、処理を終了した直後に、o_buffer[] に格納されたデータを、出力に送る。
Copy(o_buffer, out_buffer, 0, buffer_size);
変数の更新について、
scra_pos_prev_delta = scra_pos_delta;
current_block += 1;
if(current_block>= buffer_blocks)
current_block = 0;
図2は本実施例のフローチャートを示す。
【0087】
本発明では、ユーザの操作に応じてバッファをアドレッシングし、対応する位置のブロックにおけるサンプリングポイントを処理することで、サウンドカード等のハードウェアに出力した後に、ユーザ操作の速度及び加速度に応じてオーディオを再生することを容易にすることができ、スクラッチの本質は、音声「高倍速再生及びスロー再生が交互に行われる」結果であり、再生速度が速いとピッチが高くなり、再生速度が遅いとピッチが低くなるため、ユーザの操作の速度及び加速度に応じてオーディオを再生しスクラッチ効果を模擬することができる。また、他の処理を同時に行ってもよい。
【0088】
本願の幾つかの実施例によれば、前記ブロックにおけるサンプリングポイントに対する処理は、線形補間を含む。
【0089】
例えば、速度及び加速度に応じて、ブロック内のサンプリングポイントを処理することは、サンプリングポイントを補間することを含む。一般にSinc補間アルゴリズムを採用してもよいし、IIR フィルタでローパスフィルタを行ってもよいが、、性能に対する消耗が大きく、スクラッチアルゴリズムによる音声それ自体に大きな歪みが発生していることを考慮すると、精度が高い補間を必要とせず、好ましくは、線形補間を用いることができる。勿論、他の適切な補間を用いてもよい。
【0090】
本発明では、ユーザは、操作時にドラッグの速度が遅すぎると、バッファデータ中のサンプリングポイントに限りがあるため、新たな若干のサンプリングポイントを生成する際に、一定の期間内にアクセスしたのは、バッファデータ中の同一点であり、出力される波形は鋸歯に類似しており、大量の高周波成分が引き込まれて、音声は耳障りな部分が聞こえる可能性がある。補間は当該問題を極めて大きく減らすことができ、線形補間は性能要求が低くて速い。
【0091】
本願の幾つかの実施例によれば、前記の変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生することは、該ブロックを再生する前に該ブロックに、大きさが上記速度に正比例にするノイズを加えることをさらに含む。
【0092】
例えば、オーディオデータを再生する前(例えば、1つのブロックを再生する前に)に、処理後の音声に少量のノイズを加えることにしてもよい、これによってスクラッチがよりリアルになる。ノイズ変調の式は、以下の通りであっても良い。
out_sample *= random() * scratch_speed_factor + const;
【0093】
ノイズ源は、本質的に乱数発生器をそのまま使用することができ、平均分布に適合する乱数は、周波数領域での表現が白色ノイズである。1つのサンプリングポイント毎に1つの乱数を生成し、これを所望の範囲(ノイズの割合の大きさに対応する)にマッピングし、1つの定数constに加算する。ノイズの最大値にこの定数を加算した後に1以下になることを保証する必要がある。即ち、ノイズの値が最大0.2だと仮定すると、定数の値の最大値は0.8となる。続いて、この変数をスクラッチの速度に関連付けて、正の相関を呈するようにする。こうして、ノイズの大きさがスクラッチの速度に従って変化することになり、ノイズを重畳する過程を完了させた。加算を用いずに乗算を用いるのは、加算によって重畳されたノイズの場合、スクラッチの速度に従って音量が変わるだけであるからである。一方、乗算を用いる場合、信号処理の分野において「変調」と呼ばれ、変調された信号が元の信号に関連付けられることになる。ここで使用される変調方法は振幅変調、即ちAMである。その具体的な表現は、元の信号が保留されるとともに、ノイズの周波数分布は変調前のオーディオの周波数と相関関係にあることである。なお、ノイズ変調を用いると、音声が処理された場合と処理されていない場合に、音量は一致性を有するべきである。
【0094】
本発明では、ノイズを加えることで、スクラッチの際に、レコード針がレコード表面において速く摩擦することにより発生する音声を模擬することができる。
【0095】
図3は本発明の実施例によるリアルタイムオーディオ処理システムを示す図である。
【0096】
図3に示すように、システム300は、オーディオデータ受信モジュール302、変位データ取得モジュール304及び再生モジュール306を備え、
オーディオデータ受信モジュール302は、リアルタイムなオーディオデータを受信し、オーディオデータをバッファに格納し、オーディオデータをバッファに複数のブロックに分けて記憶し、ブロック毎に一定数の複数のサンプリングポイントが含まれ、
変位データ取得モジュール304は、ユーザ操作の変位データを取得し、
再生モジュール306は、該変位データによって算出された速度及び加速度に基づいて、バッファにおける対応する位置の1つのブロックを読み出して再生し、ここで、下式によって速度
【0097】
【数11】
【0098】
及び加速度
【0099】
【数12】
【0100】
を算出し、ここで、xは前処理された該変位データを示し、xpは前処理された、前のブロックを再生する前に受信した変位データを示し、sはユーザ操作動作に対する応答の感度を調節するための調節可能な係数を示し、vpは前のブロックを再生する前に算出された速度を示し、bはブロック中のサンプリングポイントグループの数を示し、ここで、サンプリングポイントグループは時間が同一であるが音声チャネルが異なる1グループのサンプリングポイントを示す。第1実施形態は本実施形態に対応する方法実施形態であり、本実施形態は第1実施形態と互いに合わせて実施可能である。第1実施形態に記載された関連技術の細部は本実施形態において依然として有効であり、重複を減らすために、ここでくどくど述べない。相応に、本実施形態に記載された関連技術の細部も第1実施形態に用いることもできる。
【0101】
本願の幾つかの実施例によれば、リアルタイムオーディオ処理装置が開示され、装置は、コンピュータ実行可能な命令が記憶されているメモリ及びプロセッサを備え、プロセッサは、命令を実行することでリアルタイムオーディオ処理方法を実施するように配置される。
【0102】
第1実施形態は本実施形態に対応する方法実施形態であり、本実施形態は第1実施形態と互いに合わせて実施可能である。第1実施形態に記載された関連技術の細部は本実施形態において依然として有効であり、重複を減らすために、ここでくどくど述べない。相応に、本実施形態に記載された関連技術の細部も第1実施形態に用いることができる。
【0103】
本願の幾つかの実施例によれば、コンピュータプログラムを用いてエンコードしたコンピュータ記憶媒体において、コンピュータプログラムはリアルタイムオーディオ処理方法を実施するように、1つ以上のコンピュータにより実行される命令を含むことを特徴とするコンピュータ記憶媒体が開示されている。
【0104】
第1実施形態は本実施形態に対応する方法実施形態であり、本実施形態は第1実施形態と互いに合わせて実施可能である。第1実施形態に記載された関連技術の細部は本実施形態において依然として有効であり、重複を減らすために、ここでくどくど述べない。相応に、本実施形態に記載れた関連技術の細部も第1実施形態に用いることができる。
【0105】
ある場合には、開示された実施例は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実現されてもよい。開示された実施例は、一又は複数の一時的又は非一時的な機械読み取り可能(例えば、コンピュータ読み取り可能)な記憶媒体上に格納又は記憶される命令又はプログラムの形式で実現されてもよく、これらは1つ又は複数のプロセッサ等によって読み取り及び実行されてもよい。命令又はプログラムが機械によって実行される場合、機械は上記の各種方法を実行することができる。例えば、命令は、ネットワーク又は他のコンピュータ可読媒体によって配信されてもよい。そのため、機械読み取り可能な媒体としては、機械(例えば、コンピュータ)読み取り可能な形式で情報を記憶又は伝送するための如何なるメカニズム、例えば、フレキシブルディスク、光ディスク、光ディスク読み取り専用メモリ(CD-ROMs)、磁気ディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能なプログラマブル読み出し専用メモリ(EPROM)、電子式消去可能なプログラマブル読み出し専用メモリ(EEPROM)、磁気カード又は光カード、或いは、電気、光、音又はその他の形式信号(例えば、搬送波、赤外線信号、デジタル信号等)でネットワーク情報を伝送するためのフラッシュメモリ又は有形の機械可読メモリを含むことができるが、これらに限定されない。したがって、機械読み取り可能な媒体は、如何なる形式の電子命令又は機械(例えば、コンピュータ)読み取り可能な情報を記憶又は伝送するのに適した機械読み取り可能な媒体を含む。
【0106】
以上、添付図面を参照しながら本願の実施例を詳細に説明したが、本願の技術手段の使用は、本発明の実施例に言及されている種々の応用に限定されるものではなく、様々な構造及び変形は、本願の技術手段を参照して容易に実施することができ、本明細書で言及されている様々な有益な効果を奏する。当業者が具備されている知識範囲内に、本願の主旨を逸脱しない前提下でなされた種々の変化は、いずれも本願特許のカバーする範囲に属すべきである。
図1
図2
図3