arcatdmz on main
0.3.2 (compare)
arcatdmz on master
arcatdmz on main
0.1.0 0.1.1 Add Gitter badge and 7 more (compare)
arcatdmz on master
0.3.1 (compare)
arcatdmz on master
0.3.0 (compare)
arcatdmz on master
0.3.0 (compare)
arcatdmz on master
0.2.2 (compare)
楽曲情報(歌詞の開始、終了時刻)の調整方法についての質問になります。
楽曲『嘘も本当も君だから』(https://www.youtube.com/watch?v=Se89rQPp5tk) に対して
歌詞の開始時刻、終了時刻 (IPhrase, IWord, IChar などの startTime, endTime) を取得したところ
一部の歌詞が数秒程度動画よりも早い値が設定されているように感じました。
こちら歌詞の開始時刻や終了時刻を調整する方法ありますでしょうか?
■確認方法1: TextAliveで確認
https://textalive.jp/songs/www.youtube.com%2Fwatch%3Fv%3DSe89rQPp5tk
上記のURLにて30秒ほど再生した際、間奏中にもかかわらず『初めは互いに舌足らずで』の歌詞が表示される
■確認方法2: 再現確認のためのコード(要点のみ抜粋)
// 事前にPlayerを生成し player.addListener() にて onAppReady, onVideoReady の設定されていると仮定
// let player = new Player(...);
// player.createFromSongUrl("https://www.youtube.com/watch?v=Se89rQPp5tk"); // 楽曲:嘘も本当も君だから
...
onAppReady(video: IVideo): void {
let phrase = video.phrases[8];
// コンソール出力は『初めは互いに舌足らずで, 30350, 37710』
console.log(`${phrase.text}, ${phrase.startTime}, ${phrase.endTime}`);
// 動画の歌唱タイミングより数秒早い値が入っている
// phraseから取れる IWord, IChar の startTime, endTime も同様に早い値が入っている
}
// 歌詞の発声タイミング推定ID (player.data.lyricsId) は Player生成時に指定していませんが
// onAppReady() 実行時に 52099 であることを確認しています。
@ya2ha4 TextAlive App APIのご利用ありがとうございます。楽曲「嘘も本当も君だから」についてはURLがYouTubeのものとピアプロのもの、二種類がTextAliveに登録されています。
今回のプログラミングコンテスト用に歌詞タイミングなどが整備されているのはピアプロ用で、以下のようにして初期化できます。紛らわしくてすみませんが、ピアプロ用をご利用いただきますようお願いいたします。(それか、YouTubeプレイヤーが必要な理由がありますでしょうか?)
// 真島ゆろ / 嘘も本当も君だから
player.createFromSongUrl("https://piapro.jp/t/YW_d/20210206123357", {
video: {
// 音楽地図訂正履歴: https://songle.jp/songs/2121405/history
beatId: 3953908,
repetitiveSegmentId: 2099661,
// 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FYW_d%2F20210206123357
lyricId: 52061,
lyricDiffId: 5123,
},
});
@arcatdmz 早々のご返答ありがとうございます。
ピアプロ用にて歌詞タイミングが修正されていること確認いたしました。
また https://developer.textalive.jp/events/magicalmirai2021/ 「バージョンの固定」の設定に合わせる必要があること認識いたしました。
(ドキュメントの確認不足、申し訳ございません)
(それか、YouTubeプレイヤーが必要な理由がありますでしょうか?)
YouTubeプレイヤーは最終的に無くても動作可能なよう実装する予定ですが、以下の理由からリリックアプリ開発中はプレイヤーがあると助かります。
お手数ですが、TextAliveにYouTube用のものが登録されているコンテスト対象楽曲はピアプロ用の調整内容をYouTube用にも反映して頂くこと可能でしょうか?
@arcatdmz
お疲れさまです。指定された位置のV/A空間中の座標を取得するgetValenceArousalに関して質問になります。
https://developer.textalive.jp/packages/textalive-app-api/interfaces/idataloader.html#getvalencearousal
現在、楽曲『嘘も本当も君だから』(https://www.youtube.com/watch?v=Se89rQPp5tk) や他のコンテスト対応楽曲に対して、
public onTimeUpdate(position): void {
console.log(this.player.getValenceArousal(position));
}
このような形でtime(ここではposition)を指定して覚醒度などを取得しようとしてもnullの値しか返って来ないのですが、現在getValenceArousalで覚醒度や感情価などの値はを取得することはできないのでしょうか?
お疲れ様です。
iOS 環境で楽曲を自動再生する為に Player.requestPlay() を実行すると関数は true を返すものの楽曲は再生されませんでした。
これは iOS ではメディアの自動再生できない仕様 (https://developers.google.com/youtube/iframe_api_reference#Mobile_considerations) の影響受けていると思うのですが
このケースの再生失敗判定は Player.requestPlay() ではなく別方法で判別するのが TextAlive App API の仕様なのでしょうか?
その場合はどのようにして再生の成功、失敗を判定するのが正しいでしょうか?
お疲れ様です。
App API を利用してリリックアプリを作成していた際、後述する現象が発生していましたので問い合わせを行いたいと考えています。
それらの現象について検証コードを作成したのですが、一部マジカルミライ2021プログラミングコンテストに提出したコードを含んでおり規約上コンテスト終了までソースコードが公開できない状態です。
検証コードのprivateリポジトリにコラボレータとして招待しコードや現象の補足を共有し確認して頂くことは可能でしょうか?
以下、問い合わせたい内容
この現象はプログラムから Player.requestPlay() を実行せずとも Player クラスが生成する Youtube プレイヤーにて再生した場合でも発生します。
この現象はアプリ起動直後、初回の再生時には発生せず、一度楽曲を再生し一時停止した後に再生すると発生します。
const word = Player.video.findWord(Player.timer.position); (word == null) を満たす状態で
Player.data.getVocalAmplitude(Player.timer.position) にて声量を取得しても値が常に 0 を超えています。
数秒以上ボーカルのない間奏のタイミングでも声量が 0 になりませんが、これは意図されている挙動でしょうか?
Player.video.lastChar.endTime + OFFSET < position (OFFSETは数秒程度を表す値) を満たす状態で
Player.getValenceArousal(position); を実行すると以下のエラーが発生しました。
Uncaught TypeError: Cannot read properties of undefined (reading 't')
at t.getValenceArousal (index.es.js:2)
at t.getValenceArousal (index.es.js:2)
at t.getValenceArousal (index.es.js:2)
at Player.getValenceArousal(position) を呼び出した関数
at ...
ほぼ1ビート毎にビート間隔 (IBeat.duration) が変わっており、BPMの表示やBPMに即した演出を実装しようとするとそれらの表示が安定しなくなります。