Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

TensorFlow と高速フーリエ変換で音楽ジャンル分類(基本編)

Posted on 11/21/2016 by Sales Information

TensorFlow と高速フーリエ変換で音楽ジャンル分類(基本編)

TensorFlow による音楽ジャンル分類を行なってみました。
題材は定番の GTZAN ジャンル・コレクションです。10 のジャンル(ブルース、クラシック、カントリー、ディスコ、ヒップホップ、ジャズ、メタル、ポップ、レゲエ、ロック)に分けられた wav ファイルを分類します。各ジャンルは約 30 秒間の wav ファイルを 100 個ずつ保持しています。

ジャンル分けに微妙感がありますが、データセットは 2002 年のものなのでそこは目をつぶります。

この問題は必ずしも易しくありませんので、今回は基本編として簡単なアプローチのみを取ります。生データで確認後、FFT(高速フーリエ変換)を利用して PSD(パワースペクトル密度)を計算して特徴ベクトルとします。また精度は Top-N で計測します。

生データでトレーニング

最初に生データ入力でのトレーニングを考えます。
sox(音声処理汎用ツール)で wav ファイルの情報を確認しておきますと、サンプリング周波数 22.05 khz のモノラルです :

Input File     : 'blues.00000.wav'
Channels       : 1
Sample Rate    : 22050
Precision      : 16-bit
Duration       : 00:00:30.01 = 661794 samples ~ 2251 CDDA sectors
File Size      : 1.32M
Bit Rate       : 353k
Sample Encoding: 16-bit Signed Integer PCM

そして生データをそのままプロットして視覚的に確認しておきます。最初にジャズ wav ファイル :
genres_raw_jazz

他のジャンルについても確認しておきます :
genres_raw_others

上図の波形を局所的に観察しても分類が可能か判断がつきにくいので、スペクトログラムを表示してみます。
スペクトログラムは時間・周波数とその強さを示す三次元グラフですが、ここでは色相を利用して二次元で表しています :

genres_spectrogram_jazz

genres_spectrogram_others

少しは判別しやすくなりましたが、判別しやすいジャンルとそうでないジャンルがあることも分かります。メタル音楽が識別しやすい一方で、例えばロック・レゲエ・ブルースやディスコ・ポップの組み合わせなどは識別しにくいことが分かります。(人間の聴覚的にも納得できるでしょう)

よって Top-N で精度を判断することにしますが、本来はよりよい検証尺度を先に考慮するべきかもしれません。少なくともジャンル毎、あるいはジャンル vs another ジャンルごとの精度を出すべきでしょう。

ちなみに生データを入力として単純な MLP で試したところ、結果は Top-1 で約 25 %、Top-3 で約 60 % でした。サイコロを振るよりはだいぶマシですが、改良を考えざるを得ない数字でもあります。

FFT (高速フーリエ変換)を利用したトレーニング

定石としては MFCC(メル周波数ケプストラム係数)を用いますが、今回は分かりやすさを優先して FFT(高速フーリエ変換)で PSD(パワースペクトル密度)を計算してこれを特徴ベクトルとしてトレーニングしてみます。

以下はパワースペクトル密度をジャンルのサンプル wav ファイルを元にプロットしたグラフです。
2種類あるのは PSD 軸の指数を変えて描画しているためです :

genres_psd_jazz

genres_psd_jazz2

genres_psd_others

genres_psd_others2

そしてやはり単純な MLP でトレーニングしてみます。下左図は損失でまだトレーニング不足感がありますが、下右図の validation 精度を見ると汎化性能は頭打ちになっています :

genres_loss_ttf2

genres_acc_valid_ttf2

別のテスト用データセットで試した結果は、Top-1 で 38.7 %、Top-3 で 75.7 % でした。
生データに比べれば悪くはない数字ですが、もちろん先端技術による精度には遠く及ばないので改良の余地は多々あります。
これについてはまたいずれ。

 

以上

クラスキャット

最近の投稿

  • LangGraph 0.5 : エージェント開発 : エージェントの実行
  • LangGraph 0.5 : エージェント開発 : prebuilt コンポーネントを使用したエージェント開発
  • LangGraph 0.5 : Get started : ローカルサーバの実行
  • LangGraph 0.5 on Colab : Get started : human-in-the-loop 制御の追加
  • LangGraph 0.5 on Colab : Get started : Tavily Web 検索ツールの追加

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2016年11月
月 火 水 木 金 土 日
 123456
78910111213
14151617181920
21222324252627
282930  
« 10月   12月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme