Path: blob/master/site/ja/hub/tutorials/spice.ipynb
25118 views
Copyright 2020 The TensorFlow Hub Authors.
Licensed under the Apache License, Version 2.0 (the "License");
SPICE によるピッチ検出
この Colab では、TensorFlow Hub からダウンロードした SPICE モデルの使用方法を紹介します。
音声入力ファイル
これが最も困難な部分です。あなたの歌声を録音しましょう!😃
音声ファイルの取得には、次の 4 つの方法があります。
Colab で直接音声を録音する
ご利用の PC からアップロードする
Google Drive に保存されたファイルを使用する
ウェブからファイルをダウンロードする
以下の 4 つの方法から 1 つを選択してください。
音声データを準備する
音声データを入手したので、期待される形式に変換して聴いてみましょう!
SPICE モデルでは、入力として、サンプリングレート 16 kHz の音声ファイルが必要です。また、チャンネル数は 1 つ(Mono)である必要があります。
この部分の作業を支援するために、wav ファイルをモデルが期待する形式に変換する関数(convert_audio_for_model
)を用意しました。
まずはじめに、歌声の波形を見てみましょう。
より詳しいビジュアライゼーションとして、経時的に周波数を示すスペクトログラム があります。
ここでは、対数による周波数スケールを使用して、歌声をより鮮明に視覚化させます。
ここで、最後の変換を行う必要があります。音声サンプルは int16 形式です。これらを -1 と 1 の間の浮動小数点数に正規化する必要があります。
モデルを実行する
ようやく簡単な作業です。TensorFlow Hub でモデルを読み込み、音声をフィードしましょう。SPICE から ピッチと不確実性の 2 つの出力が得られます。
TensorFlow Hub は、機械学習モデルの再利用可能な部分の公開、発見、および消費のためのライブラリです。ユーザーの抱える課題の解決する機械学習の使用を簡単にすることができます。
モデルを読み込むには、Hub モジュールと、モデルにポイントする URL のみが必要です。
注意: ここでの豆知識は、Hub のすべてのモデル URL は、ダウンロードだけでなく、ドキュメントの読み取りにも利用できるということです。そのため、ブラウザでそのリンクを開くと、モデルの使用方法を読み、どのようにしてトレーニングされたのかという詳細も知ることができます。
モデルが読み込まれ、データの準備が完了したので、結果を取得するための 3 行を追加しましょう。
信頼度の低い(confidence < 0.9)すべてのピッチ推定値を取り除いて、残りのピッチをグラフ化して、結果を理解しやすくしましょう。
SPICE が返すピッチ値の範囲は 0 から 1 です。この値を Hz 単位の絶対ピッチ値に変換しましょう。
では、どれほど良い予測が得られるか確認しましょう。予測されるピッチを元のスペクトログラムにオーバーレイ表示します。ピッチ予測をより見やすくするために、スペクトログラムをモノクロに変更してます。
音符に変換する
ピッチ値を得たので、次はこの値を音符に変換することにしましょう!この作業はそれ自体が困難となる部分です。次の 2 つの項目を考慮する必要があります。
休符(歌声がないところ)
各音符のサイズ(オフセット)
1: 出力にゼロを追加して、歌声がない部分を示す
2: 音符のオフセットを追加する
自由に歌う場合、メロディーには音符が表現する絶対ピッチ値に対するオフセットがある場合があります。したがって、予測を音符に変換するには、この潜在的なオフセットを修正する必要があります。次のコードはこれを計算しています。
ヒューリスティックを使用して歌われた可能性の最も高い音符のシーケンスの予測を試みることができるようになりました。上記で計算された理想的なオフセットは 1 つの材料ではありますが、速度(8 個など、どれくらいの予測をたてるのか)と量子化を始める時間オフセットを知る必要もあります。単純にしておくために、異なる速度と時間オフセットを試して、量子化誤差を測定し、最終的に、この誤差を最小限に抑える値を使用します。
では、量子化された音符を楽譜として書き出しましょう!
これを行うには、music21 と Open Sheet Music Display の 2 つのライブラリを使用します。
注意: 単純に行えるように、ここではすべての音符の長さが同じ(半音)であると仮定しています。
音符を MIDI ファイルに変換して、聴いてみましょう。
このファイルを作成するには、前に作成したストリームを使用できます。
Colab で聴くには、wav に変換し直す必要があります。簡単な方法は、Timidty を使用することです。
最後に、モデルが推論し、予測されたピッチから MIDI 経由で作成され、音符から作成された音声を聴いてみましょう!