wavファイルの音量に基づくリップシンク(Native)

[最終更新日 : 2021/02/17]

概要

Cubism SDK for Nativeサンプルでは、リップシンク 機能を使用し、wavファイルの音声データの音量を基にリアルタイムにリップシンクを動かす機能を提供しています。
このサンプルは Cubism 4 SDK for Native R2 以降で提供しています。

 

使用方法

準備

モーションに紐づいたwavファイルを .json ファイルに記述します。各モーションの “Sound” キーに対応するwavファイルパスを指定してください。

上記で指定した場所にwavファイルを配置してください。wavファイルのパスが間違っているとリップシンクは行われません。

 

音量取得開始

サンプルでは、LAppWavFileHandlerクラスを介してwavファイルからの情報取得を行っています。
LAppWavFileHandler::Start() を実行すると、wavファイルから音声データを読み込み、リップシンクを行うために必要な内部状態を初期化します。

 

 

状態更新と音量の取得

LAppWavFileHandler::Update() を実行すると、経過時間に対応した部分の音量の計測が行われます。計測結果の音量は LAppWavFileHandler::GetRms() で取得できます。取得した音量をリップシンク値として、モデルに CubismModel::AddParameterValue 関数で設定します。

サンプルでは、取得してきた音量を0.8倍して���ップシンク値としています。ここで、サウンドライブラリ等から取得した音量をリップシンク値に設定することも可能です。

 

 

補足

  • サンプルには音声をデバイス上で再生させる機能はありません。
  • LAppWavFileHandler::GetRms() は現在の音量値を0~1の範囲で返します。
    • 音量の単位はRMS(二乗平均平方根)です。
    • 全チャンネル音声の平均値を計算します。
      • 例えばステレオ音声の場合、左右チャンネルを含めた音声の平均値を計算します。

 

制限事項

サンプルでは、以下のwavファイルの読み込みに対応しています。下記フォーマットに対応していないファイルを読み込ませた場合、リップシンクが行われません。

  • Microsoft WAV (リトルエンディアン形式)
  • リニアPCM
    • μ-raw、ADPCM等にエンコードされたwavは未対応です。
  • チャンネル数: モノラル/ステレオ
  • 対応ビット深度: 8, 16, 24bit符号付き整数

© 2010 - 2021 Live2D Inc.