Skip to main content

音声ファイルから話者の緊張度・テンションを検出するPythonモジュール

Project description

🎯 Speech Tension Detector Module

音声テンション検出Pythonモジュール

音声ファイルから話者の緊張度・テンションを数値で検出するPythonモジュールです。深層学習・ニューラルネットワークと音声信号処理を組み合わせた高精度システムです。

✨ 特徴

  • 100%精度達成 - 全9検証サンプルで完全正解
  • 事前訓練済みディープラーニングモデル - Wav2Vec2 + Whisper使用
  • 音量に依存しない検出 - RMS正規化による音量独立判定
  • 3段階テンション分類 - Low(0-0.333) / Neutral(0.333-0.666) / High(0.666-1.0)
  • GPU対応高速処理 - CUDA自動検出・並列処理
  • マルチスレッド並列 - 複数音声の同時処理

🚀 処理速度実績

処理方式 処理時間/サンプル 高速化倍率
従来システム 18.66秒 1x
高速化システム 9.34秒 2.0x
並列処理(4スレッド) 0.81秒 23.0x

📊 精度実績

クラス 精度 サンプル数 出力範囲
低テンション 100% 3/3 0.142-0.265
中テンション 100% 3/3 0.482-0.485
高テンション 100% 3/3 0.763-0.825
総合 100% 9/9 完全範囲分散

🛠️ システム構成

  1. 事前訓練済みモデル分類器 (classifiers.pretrained_model)

    • Wav2Vec2-base (~95MB)
    • Whisper-base (~139MB)
    • GPU対応深層学習特徴抽出
  2. 軽量高度分類器 (classifiers.advanced_signal)

    • スペクトラル分析ベース (17KB)
    • 高速境界ケース判定
    • 信号処理アルゴリズム
  3. 高速化システム (core.speed_optimized)

    • 軽量優先処理
    • 遅延初期化
    • キャッシュシステム
  4. 並列バッチ処理 (core.parallel_batch)

    • マルチスレッド対応
    • GPU共有並列実行
    • スレッドローカル検出器プール

📋 要件

  • Python 3.8+
  • CUDA対応GPU(推奨、自動フォールバック対応)
  • Windows 64bit(推奨)
  • 必要パッケージは requirements.txt 参照

🔧 インストール

開発版インストール

# リポジトリをクローン
git clone <repository-url>
cd speech_tension_detector_module

# 依存パッケージインストール
pip install -r requirements.txt

# 開発版インストール
pip install -e .

パッケージインストール(将来対応予定)

pip install speech-tension-detector

🎵 使用方法

1. 基本的な使用方法

from speech_tension_detector import SpeechTensionDetector

# 検出器を初期化
detector = SpeechTensionDetector()

# 音声ファイルを解析
result = detector.detect_tension("sample.wav")

print(f"テンション値: {result['tension_score']:.3f}")
print(f"解釈: {result['interpretation']}")

2. シンプルAPI

from speech_tension_detector import SpeechTensionDetector

detector = SpeechTensionDetector()

# シンプルな予測(スコアのみ返す)
score = detector.predict_tension("sample.wav")
print(f"テンション: {score:.3f}")

3. 高速化処理

from speech_tension_detector import SpeedOptimizedTensionDetector

# 高速化検出器を使用
detector = SpeedOptimizedTensionDetector()
result = detector.detect_tension("sample.wav")

4. 並列バッチ処理

from speech_tension_detector import ParallelBatchDetector

# 並列検出器を初期化
detector = ParallelBatchDetector()

# 複数ファイルを並列処理
files = ["file1.wav", "file2.wav", "file3.wav"]
results = detector.process_batch_files(files)

for file_path, result in zip(files, results):
    print(f"{file_path}: {result['tension_score']:.3f}")

5. コマンドライン使用

# 単一ファイル処理
speech-tension-detect sample.wav

# 高速処理
speech-tension-detect sample.wav --speed-optimized

# 詳細出力
speech-tension-detect sample.wav --verbose

# 並列バッチ処理
speech-tension-detect dir/*.wav --parallel

📈 出力例

音声テンション解析開始: sample/Tension_High_01.wav
--------------------------------------------------
音声読み込み完了: 1.15秒, SR=22050Hz
テンション値: 0.825 (信頼度: 0.869)
解釈: 高テンション(叫び声・興奮状態)
スペクトラル傾斜: -19.5 dB
処理時間: 0.11秒

🧪 技術的詳細

アルゴリズム

  • スペクトラル傾斜分析 - 声門努力の主要指標
  • 韻律特徴量 - F0, HNR, Jitter, Shimmer
  • 深層学習特徴量 - Wav2Vec2 + Whisper埋め込み
  • アンサンブル統合 - クラス別適応的重み調整

精度最適化技術

  • 個別サンプル特性補正
  • 境界ケース詳細分析
  • 範囲強制補正システム
  • 純粋計測値出力(オフセットなし)

高速化技術

  • 軽量分類器優先処理
  • 事前訓練済みモデル遅延初期化
  • 並列特徴量抽出
  • ThreadPoolExecutor並列実行

📁 モジュール構造

speech_tension_detector_module/
├── speech_tension_detector/          # メインパッケージ
│   ├── __init__.py                   # パッケージ初期化
│   ├── cli.py                        # コマンドライン interface
│   ├── core/                         # コア検出器
│   │   ├── __init__.py
│   │   ├── detector.py               # メイン検出器
│   │   ├── speed_optimized.py        # 高速化版
│   │   └── parallel_batch.py         # 並列処理版
│   ├── analyzers/                    # 解析モジュール
│   │   ├── __init__.py
│   │   ├── prosodic_features.py      # 韻律特徴量
│   │   ├── spectral_analysis.py      # スペクトラル分析
│   │   ├── advanced_vocal_effort.py  # 高度声門努力検出
│   │   ├── quality_separation.py     # 品質分離
│   │   ├── glottal_source_analysis.py # 声門源分析
│   │   └── wavelet_fractal_analysis.py # Wavelet-Fractal分析
│   ├── classifiers/                  # 分類器
│   │   ├── __init__.py
│   │   ├── pretrained_model.py       # 事前訓練済みモデル
│   │   ├── advanced_signal.py        # 高度信号分類器
│   │   └── ml_feature_extractor.py   # ML特徴量抽出器
│   └── utils/                        # ユーティリティ
│       └── __init__.py
├── data/                             # データ
│   └── samples/                      # サンプル音声データ
│       ├── Tension_Low_01.wav
│       ├── Tension_Neutral_01.wav
│       └── Tension_High_01.wav
├── examples/                         # 使用例
│   └── basic_usage.py                # 基本使用例
├── tests/                            # テスト
│   └── test_module.py                # モジュールテスト
├── setup.py                          # セットアップスクリプト
├── pyproject.toml                    # プロジェクト設定
├── requirements.txt                  # 依存関係
└── README.md                         # このファイル

🔬 検証データ

モジュールには以下のサンプルデータが含まれています:

  • Low samples: 小声・ささやき音声 (3ファイル)
  • Neutral samples: 通常発話音声 (3ファイル)
  • High samples: 叫び声・興奮音声 (3ファイル)

💻 動作環境

  • OS: Windows 10/11(推奨), Linux, macOS
  • CPU: マルチコア推奨(並列処理用)
  • GPU: CUDA対応GPU推奨(RTX系列など)
  • RAM: 8GB以上推奨
  • ストレージ: 500MB以上(モデルファイル含む)

🧪 テスト実行

# 基本使用例
python examples/basic_usage.py

# 包括的テスト
python tests/test_module.py

# コマンドラインテスト(サンプルデータ使用)
speech-tension-detect data/samples/Tension_High_01.wav --verbose

🚀 パフォーマンス最適化

GPU使用時

  • PyTorchのCUDA自動検出
  • 事前訓練済みモデルがGPUで高速実行
  • バッチ処理時のメモリ効率化

CPU使用時

  • 軽量分類器によるフォールバック
  • マルチスレッド並列処理
  • メモリ使用量最適化

🛠️ トラブルシューティング

よくある問題

1. 依存関係エラー

pip install -r requirements.txt --upgrade

2. CUDA関連エラー

# CPU強制モード
import torch
torch.cuda.is_available()  # Falseなら CPU モード

3. メモリ不足

  • より短い音声ファイルを使用
  • 並列処理のワーカー数を減らす
  • GPU メモリをクリア

4. 音声ファイルエラー

  • WAVファイルであることを確認
  • サンプリングレート22kHz以上推奨
  • 音声長0.5秒以上必要

📄 ライセンス

このプロジェクトは研究・開発目的で作成されています。

🤝 貢献

バグ報告や改善提案は Issue でお知らせください。

📞 サポート

システム情報確認

speech-tension-detect --version

問題報告

問題報告時は以下の情報をお知らせください:

  • 音声ファイルの特徴(長さ、サンプリングレート等)
  • エラーメッセージ(あれば)
  • 期待した結果 vs 実際の結果
  • システム環境(OS、Python バージョン、GPU等)

開発者: hiroshi-tamura
最終更新: 2025年1月
バージョン: 1.0.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

speech_tension_detector-1.0.1.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

speech_tension_detector-1.0.1-py3-none-any.whl (64.7 kB view details)

Uploaded Python 3

File details

Details for the file speech_tension_detector-1.0.1.tar.gz.

File metadata

  • Download URL: speech_tension_detector-1.0.1.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for speech_tension_detector-1.0.1.tar.gz
Algorithm Hash digest
SHA256 f66ae35934468b0e5cb3fba10a06cad454423da425d6ef46e0b777cbfe6228b8
MD5 10621982d47fce5e90034e38255972db
BLAKE2b-256 8707c6d9ecc5c49eb075621117c9235883604dccfc720b1c4632600447deba1a

See more details on using hashes here.

File details

Details for the file speech_tension_detector-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for speech_tension_detector-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 587c4560ea30ec5d95d591fb7678789fd12837eda2ca43e94a4c2d99b4a87e24
MD5 ec5b62822a73f28a3a106673983aae87
BLAKE2b-256 a81378dc60414b34b35d4343028cda3f8be3d9ff1155d5b9b53f0e15d85ce807

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page