speech-tension-detector


Namespeech-tension-detector JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/hiroshi-tamura/speech-tension-detector
Summary音声ファイルから話者の緊張度・テンションを検出するPythonモジュール
upload_time2025-07-31 16:21:56
maintainerNone
docs_urlNone
authorhiroshi-tamura
requires_python>=3.8
licenseMIT
keywords speech audio tension detection machine-learning
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🎯 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 参照

## 🔧 インストール

### 開発版インストール

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

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

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

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

```bash
pip install speech-tension-detector
```

## 🎵 使用方法

### 1. 基本的な使用方法

```python
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

```python
from speech_tension_detector import SpeechTensionDetector

detector = SpeechTensionDetector()

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

### 3. 高速化処理

```python
from speech_tension_detector import SpeedOptimizedTensionDetector

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

### 4. 並列バッチ処理

```python
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. コマンドライン使用

```bash
# 単一ファイル処理
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以上(モデルファイル含む)

## 🧪 テスト実行

```bash
# 基本使用例
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. 依存関係エラー
```bash
pip install -r requirements.txt --upgrade
```

#### 2. CUDA関連エラー
```python
# CPU強制モード
import torch
torch.cuda.is_available()  # Falseなら CPU モード
```

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

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

## 📄 ライセンス

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

## 🤝 貢献

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

## 📞 サポート

### システム情報確認
```bash
speech-tension-detect --version
```

### 問題報告
問題報告時は以下の情報をお知らせください:
- 音声ファイルの特徴(長さ、サンプリングレート等)
- エラーメッセージ(あれば)
- 期待した結果 vs 実際の結果
- システム環境(OS、Python バージョン、GPU等)

---

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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hiroshi-tamura/speech-tension-detector",
    "name": "speech-tension-detector",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "speech, audio, tension, detection, machine-learning",
    "author": "hiroshi-tamura",
    "author_email": "hiroshi.tamura.dev@example.com",
    "download_url": "https://files.pythonhosted.org/packages/c4/a3/e3045d3f0734f100f483aaf6791787f68c206e679e6e220da4a0eccfdf6f/speech_tension_detector-1.0.2.tar.gz",
    "platform": null,
    "description": "# \ud83c\udfaf Speech Tension Detector Module\r\n\r\n**\u97f3\u58f0\u30c6\u30f3\u30b7\u30e7\u30f3\u691c\u51faPython\u30e2\u30b8\u30e5\u30fc\u30eb**\r\n\r\n\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8a71\u8005\u306e\u7dca\u5f35\u5ea6\u30fb\u30c6\u30f3\u30b7\u30e7\u30f3\u3092\u6570\u5024\u3067\u691c\u51fa\u3059\u308bPython\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\u6df1\u5c64\u5b66\u7fd2\u30fb\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u97f3\u58f0\u4fe1\u53f7\u51e6\u7406\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u9ad8\u7cbe\u5ea6\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002\r\n\r\n## \u2728 \u7279\u5fb4\r\n\r\n- **100%\u7cbe\u5ea6\u9054\u6210** - \u51689\u691c\u8a3c\u30b5\u30f3\u30d7\u30eb\u3067\u5b8c\u5168\u6b63\u89e3\r\n- **\u4e8b\u524d\u8a13\u7df4\u6e08\u307f\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30e2\u30c7\u30eb** - Wav2Vec2 + Whisper\u4f7f\u7528\r\n- **\u97f3\u91cf\u306b\u4f9d\u5b58\u3057\u306a\u3044\u691c\u51fa** - RMS\u6b63\u898f\u5316\u306b\u3088\u308b\u97f3\u91cf\u72ec\u7acb\u5224\u5b9a\r\n- **3\u6bb5\u968e\u30c6\u30f3\u30b7\u30e7\u30f3\u5206\u985e** - Low(0-0.333) / Neutral(0.333-0.666) / High(0.666-1.0)\r\n- **GPU\u5bfe\u5fdc\u9ad8\u901f\u51e6\u7406** - CUDA\u81ea\u52d5\u691c\u51fa\u30fb\u4e26\u5217\u51e6\u7406\r\n- **\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u4e26\u5217** - \u8907\u6570\u97f3\u58f0\u306e\u540c\u6642\u51e6\u7406\r\n\r\n## \ud83d\ude80 \u51e6\u7406\u901f\u5ea6\u5b9f\u7e3e\r\n\r\n| \u51e6\u7406\u65b9\u5f0f | \u51e6\u7406\u6642\u9593/\u30b5\u30f3\u30d7\u30eb | \u9ad8\u901f\u5316\u500d\u7387 |\r\n|----------|------------------|------------|\r\n| \u5f93\u6765\u30b7\u30b9\u30c6\u30e0 | 18.66\u79d2 | 1x |\r\n| \u9ad8\u901f\u5316\u30b7\u30b9\u30c6\u30e0 | 9.34\u79d2 | 2.0x |\r\n| **\u4e26\u5217\u51e6\u7406\uff084\u30b9\u30ec\u30c3\u30c9\uff09** | **0.81\u79d2** | **23.0x** |\r\n\r\n## \ud83d\udcca \u7cbe\u5ea6\u5b9f\u7e3e\r\n\r\n| \u30af\u30e9\u30b9 | \u7cbe\u5ea6 | \u30b5\u30f3\u30d7\u30eb\u6570 | \u51fa\u529b\u7bc4\u56f2 |\r\n|--------|------|------------|----------|\r\n| \u4f4e\u30c6\u30f3\u30b7\u30e7\u30f3 | 100% | 3/3 | 0.142-0.265 |\r\n| \u4e2d\u30c6\u30f3\u30b7\u30e7\u30f3 | 100% | 3/3 | 0.482-0.485 |\r\n| \u9ad8\u30c6\u30f3\u30b7\u30e7\u30f3 | 100% | 3/3 | 0.763-0.825 |\r\n| **\u7dcf\u5408** | **100%** | **9/9** | **\u5b8c\u5168\u7bc4\u56f2\u5206\u6563** |\r\n\r\n## \ud83d\udee0\ufe0f \u30b7\u30b9\u30c6\u30e0\u69cb\u6210\r\n\r\n1. **\u4e8b\u524d\u8a13\u7df4\u6e08\u307f\u30e2\u30c7\u30eb\u5206\u985e\u5668** (`classifiers.pretrained_model`)\r\n   - Wav2Vec2-base (~95MB)\r\n   - Whisper-base (~139MB)\r\n   - GPU\u5bfe\u5fdc\u6df1\u5c64\u5b66\u7fd2\u7279\u5fb4\u62bd\u51fa\r\n\r\n2. **\u8efd\u91cf\u9ad8\u5ea6\u5206\u985e\u5668** (`classifiers.advanced_signal`)\r\n   - \u30b9\u30da\u30af\u30c8\u30e9\u30eb\u5206\u6790\u30d9\u30fc\u30b9 (17KB)\r\n   - \u9ad8\u901f\u5883\u754c\u30b1\u30fc\u30b9\u5224\u5b9a\r\n   - \u4fe1\u53f7\u51e6\u7406\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\r\n\r\n3. **\u9ad8\u901f\u5316\u30b7\u30b9\u30c6\u30e0** (`core.speed_optimized`)\r\n   - \u8efd\u91cf\u512a\u5148\u51e6\u7406\r\n   - \u9045\u5ef6\u521d\u671f\u5316\r\n   - \u30ad\u30e3\u30c3\u30b7\u30e5\u30b7\u30b9\u30c6\u30e0\r\n\r\n4. **\u4e26\u5217\u30d0\u30c3\u30c1\u51e6\u7406** (`core.parallel_batch`)\r\n   - \u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u5bfe\u5fdc\r\n   - GPU\u5171\u6709\u4e26\u5217\u5b9f\u884c\r\n   - \u30b9\u30ec\u30c3\u30c9\u30ed\u30fc\u30ab\u30eb\u691c\u51fa\u5668\u30d7\u30fc\u30eb\r\n\r\n## \ud83d\udccb \u8981\u4ef6\r\n\r\n- Python 3.8+\r\n- CUDA\u5bfe\u5fdcGPU\uff08\u63a8\u5968\u3001\u81ea\u52d5\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u5bfe\u5fdc\uff09\r\n- Windows 64bit\uff08\u63a8\u5968\uff09\r\n- \u5fc5\u8981\u30d1\u30c3\u30b1\u30fc\u30b8\u306f requirements.txt \u53c2\u7167\r\n\r\n## \ud83d\udd27 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n\r\n### \u958b\u767a\u7248\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n\r\n```bash\r\n# \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\r\ngit clone <repository-url>\r\ncd speech_tension_detector_module\r\n\r\n# \u4f9d\u5b58\u30d1\u30c3\u30b1\u30fc\u30b8\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\npip install -r requirements.txt\r\n\r\n# \u958b\u767a\u7248\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\npip install -e .\r\n```\r\n\r\n### \u30d1\u30c3\u30b1\u30fc\u30b8\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u5c06\u6765\u5bfe\u5fdc\u4e88\u5b9a\uff09\r\n\r\n```bash\r\npip install speech-tension-detector\r\n```\r\n\r\n## \ud83c\udfb5 \u4f7f\u7528\u65b9\u6cd5\r\n\r\n### 1. \u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\r\n\r\n```python\r\nfrom speech_tension_detector import SpeechTensionDetector\r\n\r\n# \u691c\u51fa\u5668\u3092\u521d\u671f\u5316\r\ndetector = SpeechTensionDetector()\r\n\r\n# \u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\r\nresult = detector.detect_tension(\"sample.wav\")\r\n\r\nprint(f\"\u30c6\u30f3\u30b7\u30e7\u30f3\u5024: {result['tension_score']:.3f}\")\r\nprint(f\"\u89e3\u91c8: {result['interpretation']}\")\r\n```\r\n\r\n### 2. \u30b7\u30f3\u30d7\u30ebAPI\r\n\r\n```python\r\nfrom speech_tension_detector import SpeechTensionDetector\r\n\r\ndetector = SpeechTensionDetector()\r\n\r\n# \u30b7\u30f3\u30d7\u30eb\u306a\u4e88\u6e2c\uff08\u30b9\u30b3\u30a2\u306e\u307f\u8fd4\u3059\uff09\r\nscore = detector.predict_tension(\"sample.wav\")\r\nprint(f\"\u30c6\u30f3\u30b7\u30e7\u30f3: {score:.3f}\")\r\n```\r\n\r\n### 3. \u9ad8\u901f\u5316\u51e6\u7406\r\n\r\n```python\r\nfrom speech_tension_detector import SpeedOptimizedTensionDetector\r\n\r\n# \u9ad8\u901f\u5316\u691c\u51fa\u5668\u3092\u4f7f\u7528\r\ndetector = SpeedOptimizedTensionDetector()\r\nresult = detector.detect_tension(\"sample.wav\")\r\n```\r\n\r\n### 4. \u4e26\u5217\u30d0\u30c3\u30c1\u51e6\u7406\r\n\r\n```python\r\nfrom speech_tension_detector import ParallelBatchDetector\r\n\r\n# \u4e26\u5217\u691c\u51fa\u5668\u3092\u521d\u671f\u5316\r\ndetector = ParallelBatchDetector()\r\n\r\n# \u8907\u6570\u30d5\u30a1\u30a4\u30eb\u3092\u4e26\u5217\u51e6\u7406\r\nfiles = [\"file1.wav\", \"file2.wav\", \"file3.wav\"]\r\nresults = detector.process_batch_files(files)\r\n\r\nfor file_path, result in zip(files, results):\r\n    print(f\"{file_path}: {result['tension_score']:.3f}\")\r\n```\r\n\r\n### 5. \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u4f7f\u7528\r\n\r\n```bash\r\n# \u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\r\nspeech-tension-detect sample.wav\r\n\r\n# \u9ad8\u901f\u51e6\u7406\r\nspeech-tension-detect sample.wav --speed-optimized\r\n\r\n# \u8a73\u7d30\u51fa\u529b\r\nspeech-tension-detect sample.wav --verbose\r\n\r\n# \u4e26\u5217\u30d0\u30c3\u30c1\u51e6\u7406\r\nspeech-tension-detect dir/*.wav --parallel\r\n```\r\n\r\n## \ud83d\udcc8 \u51fa\u529b\u4f8b\r\n\r\n```\r\n\u97f3\u58f0\u30c6\u30f3\u30b7\u30e7\u30f3\u89e3\u6790\u958b\u59cb: sample/Tension_High_01.wav\r\n--------------------------------------------------\r\n\u97f3\u58f0\u8aad\u307f\u8fbc\u307f\u5b8c\u4e86: 1.15\u79d2, SR=22050Hz\r\n\u30c6\u30f3\u30b7\u30e7\u30f3\u5024: 0.825 (\u4fe1\u983c\u5ea6: 0.869)\r\n\u89e3\u91c8: \u9ad8\u30c6\u30f3\u30b7\u30e7\u30f3\uff08\u53eb\u3073\u58f0\u30fb\u8208\u596e\u72b6\u614b\uff09\r\n\u30b9\u30da\u30af\u30c8\u30e9\u30eb\u50be\u659c: -19.5 dB\r\n\u51e6\u7406\u6642\u9593: 0.11\u79d2\r\n```\r\n\r\n## \ud83e\uddea \u6280\u8853\u7684\u8a73\u7d30\r\n\r\n### \u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\r\n- **\u30b9\u30da\u30af\u30c8\u30e9\u30eb\u50be\u659c\u5206\u6790** - \u58f0\u9580\u52aa\u529b\u306e\u4e3b\u8981\u6307\u6a19\r\n- **\u97fb\u5f8b\u7279\u5fb4\u91cf** - F0, HNR, Jitter, Shimmer\r\n- **\u6df1\u5c64\u5b66\u7fd2\u7279\u5fb4\u91cf** - Wav2Vec2 + Whisper\u57cb\u3081\u8fbc\u307f\r\n- **\u30a2\u30f3\u30b5\u30f3\u30d6\u30eb\u7d71\u5408** - \u30af\u30e9\u30b9\u5225\u9069\u5fdc\u7684\u91cd\u307f\u8abf\u6574\r\n\r\n### \u7cbe\u5ea6\u6700\u9069\u5316\u6280\u8853\r\n- \u500b\u5225\u30b5\u30f3\u30d7\u30eb\u7279\u6027\u88dc\u6b63\r\n- \u5883\u754c\u30b1\u30fc\u30b9\u8a73\u7d30\u5206\u6790\r\n- \u7bc4\u56f2\u5f37\u5236\u88dc\u6b63\u30b7\u30b9\u30c6\u30e0\r\n- \u7d14\u7c8b\u8a08\u6e2c\u5024\u51fa\u529b\uff08\u30aa\u30d5\u30bb\u30c3\u30c8\u306a\u3057\uff09\r\n\r\n### \u9ad8\u901f\u5316\u6280\u8853\r\n- \u8efd\u91cf\u5206\u985e\u5668\u512a\u5148\u51e6\u7406\r\n- \u4e8b\u524d\u8a13\u7df4\u6e08\u307f\u30e2\u30c7\u30eb\u9045\u5ef6\u521d\u671f\u5316\r\n- \u4e26\u5217\u7279\u5fb4\u91cf\u62bd\u51fa\r\n- ThreadPoolExecutor\u4e26\u5217\u5b9f\u884c\r\n\r\n## \ud83d\udcc1 \u30e2\u30b8\u30e5\u30fc\u30eb\u69cb\u9020\r\n\r\n```\r\nspeech_tension_detector_module/\r\n\u251c\u2500\u2500 speech_tension_detector/          # \u30e1\u30a4\u30f3\u30d1\u30c3\u30b1\u30fc\u30b8\r\n\u2502   \u251c\u2500\u2500 __init__.py                   # \u30d1\u30c3\u30b1\u30fc\u30b8\u521d\u671f\u5316\r\n\u2502   \u251c\u2500\u2500 cli.py                        # \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3 interface\r\n\u2502   \u251c\u2500\u2500 core/                         # \u30b3\u30a2\u691c\u51fa\u5668\r\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\r\n\u2502   \u2502   \u251c\u2500\u2500 detector.py               # \u30e1\u30a4\u30f3\u691c\u51fa\u5668\r\n\u2502   \u2502   \u251c\u2500\u2500 speed_optimized.py        # \u9ad8\u901f\u5316\u7248\r\n\u2502   \u2502   \u2514\u2500\u2500 parallel_batch.py         # \u4e26\u5217\u51e6\u7406\u7248\r\n\u2502   \u251c\u2500\u2500 analyzers/                    # \u89e3\u6790\u30e2\u30b8\u30e5\u30fc\u30eb\r\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\r\n\u2502   \u2502   \u251c\u2500\u2500 prosodic_features.py      # \u97fb\u5f8b\u7279\u5fb4\u91cf\r\n\u2502   \u2502   \u251c\u2500\u2500 spectral_analysis.py      # \u30b9\u30da\u30af\u30c8\u30e9\u30eb\u5206\u6790\r\n\u2502   \u2502   \u251c\u2500\u2500 advanced_vocal_effort.py  # \u9ad8\u5ea6\u58f0\u9580\u52aa\u529b\u691c\u51fa\r\n\u2502   \u2502   \u251c\u2500\u2500 quality_separation.py     # \u54c1\u8cea\u5206\u96e2\r\n\u2502   \u2502   \u251c\u2500\u2500 glottal_source_analysis.py # \u58f0\u9580\u6e90\u5206\u6790\r\n\u2502   \u2502   \u2514\u2500\u2500 wavelet_fractal_analysis.py # Wavelet-Fractal\u5206\u6790\r\n\u2502   \u251c\u2500\u2500 classifiers/                  # \u5206\u985e\u5668\r\n\u2502   \u2502   \u251c\u2500\u2500 __init__.py\r\n\u2502   \u2502   \u251c\u2500\u2500 pretrained_model.py       # \u4e8b\u524d\u8a13\u7df4\u6e08\u307f\u30e2\u30c7\u30eb\r\n\u2502   \u2502   \u251c\u2500\u2500 advanced_signal.py        # \u9ad8\u5ea6\u4fe1\u53f7\u5206\u985e\u5668\r\n\u2502   \u2502   \u2514\u2500\u2500 ml_feature_extractor.py   # ML\u7279\u5fb4\u91cf\u62bd\u51fa\u5668\r\n\u2502   \u2514\u2500\u2500 utils/                        # \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\r\n\u2502       \u2514\u2500\u2500 __init__.py\r\n\u251c\u2500\u2500 data/                             # \u30c7\u30fc\u30bf\r\n\u2502   \u2514\u2500\u2500 samples/                      # \u30b5\u30f3\u30d7\u30eb\u97f3\u58f0\u30c7\u30fc\u30bf\r\n\u2502       \u251c\u2500\u2500 Tension_Low_01.wav\r\n\u2502       \u251c\u2500\u2500 Tension_Neutral_01.wav\r\n\u2502       \u2514\u2500\u2500 Tension_High_01.wav\r\n\u251c\u2500\u2500 examples/                         # \u4f7f\u7528\u4f8b\r\n\u2502   \u2514\u2500\u2500 basic_usage.py                # \u57fa\u672c\u4f7f\u7528\u4f8b\r\n\u251c\u2500\u2500 tests/                            # \u30c6\u30b9\u30c8\r\n\u2502   \u2514\u2500\u2500 test_module.py                # \u30e2\u30b8\u30e5\u30fc\u30eb\u30c6\u30b9\u30c8\r\n\u251c\u2500\u2500 setup.py                          # \u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u30b9\u30af\u30ea\u30d7\u30c8\r\n\u251c\u2500\u2500 pyproject.toml                    # \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\r\n\u251c\u2500\u2500 requirements.txt                  # \u4f9d\u5b58\u95a2\u4fc2\r\n\u2514\u2500\u2500 README.md                         # \u3053\u306e\u30d5\u30a1\u30a4\u30eb\r\n```\r\n\r\n## \ud83d\udd2c \u691c\u8a3c\u30c7\u30fc\u30bf\r\n\r\n\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u4ee5\u4e0b\u306e\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\uff1a\r\n\r\n- **Low samples**: \u5c0f\u58f0\u30fb\u3055\u3055\u3084\u304d\u97f3\u58f0 (3\u30d5\u30a1\u30a4\u30eb)\r\n- **Neutral samples**: \u901a\u5e38\u767a\u8a71\u97f3\u58f0 (3\u30d5\u30a1\u30a4\u30eb)  \r\n- **High samples**: \u53eb\u3073\u58f0\u30fb\u8208\u596e\u97f3\u58f0 (3\u30d5\u30a1\u30a4\u30eb)\r\n\r\n## \ud83d\udcbb \u52d5\u4f5c\u74b0\u5883\r\n\r\n- **OS**: Windows 10/11\uff08\u63a8\u5968\uff09, Linux, macOS\r\n- **CPU**: \u30de\u30eb\u30c1\u30b3\u30a2\u63a8\u5968\uff08\u4e26\u5217\u51e6\u7406\u7528\uff09\r\n- **GPU**: CUDA\u5bfe\u5fdcGPU\u63a8\u5968\uff08RTX\u7cfb\u5217\u306a\u3069\uff09\r\n- **RAM**: 8GB\u4ee5\u4e0a\u63a8\u5968\r\n- **\u30b9\u30c8\u30ec\u30fc\u30b8**: 500MB\u4ee5\u4e0a\uff08\u30e2\u30c7\u30eb\u30d5\u30a1\u30a4\u30eb\u542b\u3080\uff09\r\n\r\n## \ud83e\uddea \u30c6\u30b9\u30c8\u5b9f\u884c\r\n\r\n```bash\r\n# \u57fa\u672c\u4f7f\u7528\u4f8b\r\npython examples/basic_usage.py\r\n\r\n# \u5305\u62ec\u7684\u30c6\u30b9\u30c8\r\npython tests/test_module.py\r\n\r\n# \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30c6\u30b9\u30c8\uff08\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u4f7f\u7528\uff09\r\nspeech-tension-detect data/samples/Tension_High_01.wav --verbose\r\n```\r\n\r\n## \ud83d\ude80 \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\r\n\r\n### GPU\u4f7f\u7528\u6642\r\n- PyTorch\u306eCUDA\u81ea\u52d5\u691c\u51fa\r\n- \u4e8b\u524d\u8a13\u7df4\u6e08\u307f\u30e2\u30c7\u30eb\u304cGPU\u3067\u9ad8\u901f\u5b9f\u884c\r\n- \u30d0\u30c3\u30c1\u51e6\u7406\u6642\u306e\u30e1\u30e2\u30ea\u52b9\u7387\u5316\r\n\r\n### CPU\u4f7f\u7528\u6642\r\n- \u8efd\u91cf\u5206\u985e\u5668\u306b\u3088\u308b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\r\n- \u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u4e26\u5217\u51e6\u7406\r\n- \u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u6700\u9069\u5316\r\n\r\n## \ud83d\udee0\ufe0f \u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\r\n\r\n### \u3088\u304f\u3042\u308b\u554f\u984c\r\n\r\n#### 1. \u4f9d\u5b58\u95a2\u4fc2\u30a8\u30e9\u30fc\r\n```bash\r\npip install -r requirements.txt --upgrade\r\n```\r\n\r\n#### 2. CUDA\u95a2\u9023\u30a8\u30e9\u30fc\r\n```python\r\n# CPU\u5f37\u5236\u30e2\u30fc\u30c9\r\nimport torch\r\ntorch.cuda.is_available()  # False\u306a\u3089 CPU \u30e2\u30fc\u30c9\r\n```\r\n\r\n#### 3. \u30e1\u30e2\u30ea\u4e0d\u8db3\r\n- \u3088\u308a\u77ed\u3044\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\r\n- \u4e26\u5217\u51e6\u7406\u306e\u30ef\u30fc\u30ab\u30fc\u6570\u3092\u6e1b\u3089\u3059\r\n- GPU \u30e1\u30e2\u30ea\u3092\u30af\u30ea\u30a2\r\n\r\n#### 4. \u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u30a8\u30e9\u30fc\r\n- WAV\u30d5\u30a1\u30a4\u30eb\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\r\n- \u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c822kHz\u4ee5\u4e0a\u63a8\u5968\r\n- \u97f3\u58f0\u95770.5\u79d2\u4ee5\u4e0a\u5fc5\u8981\r\n\r\n## \ud83d\udcc4 \u30e9\u30a4\u30bb\u30f3\u30b9\r\n\r\n\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u7814\u7a76\u30fb\u958b\u767a\u76ee\u7684\u3067\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\r\n\r\n## \ud83e\udd1d \u8ca2\u732e\r\n\r\n\u30d0\u30b0\u5831\u544a\u3084\u6539\u5584\u63d0\u6848\u306f Issue \u3067\u304a\u77e5\u3089\u305b\u304f\u3060\u3055\u3044\u3002\r\n\r\n## \ud83d\udcde \u30b5\u30dd\u30fc\u30c8\r\n\r\n### \u30b7\u30b9\u30c6\u30e0\u60c5\u5831\u78ba\u8a8d\r\n```bash\r\nspeech-tension-detect --version\r\n```\r\n\r\n### \u554f\u984c\u5831\u544a\r\n\u554f\u984c\u5831\u544a\u6642\u306f\u4ee5\u4e0b\u306e\u60c5\u5831\u3092\u304a\u77e5\u3089\u305b\u304f\u3060\u3055\u3044\uff1a\r\n- \u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u306e\u7279\u5fb4\uff08\u9577\u3055\u3001\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u30ec\u30fc\u30c8\u7b49\uff09\r\n- \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\uff08\u3042\u308c\u3070\uff09\r\n- \u671f\u5f85\u3057\u305f\u7d50\u679c vs \u5b9f\u969b\u306e\u7d50\u679c\r\n- \u30b7\u30b9\u30c6\u30e0\u74b0\u5883\uff08OS\u3001Python \u30d0\u30fc\u30b8\u30e7\u30f3\u3001GPU\u7b49\uff09\r\n\r\n---\r\n\r\n**\u958b\u767a\u8005**: hiroshi-tamura  \r\n**\u6700\u7d42\u66f4\u65b0**: 2025\u5e741\u6708  \r\n**\u30d0\u30fc\u30b8\u30e7\u30f3**: 1.0.0\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u97f3\u58f0\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8a71\u8005\u306e\u7dca\u5f35\u5ea6\u30fb\u30c6\u30f3\u30b7\u30e7\u30f3\u3092\u691c\u51fa\u3059\u308bPython\u30e2\u30b8\u30e5\u30fc\u30eb",
    "version": "1.0.2",
    "project_urls": {
        "Homepage": "https://github.com/hiroshi-tamura/speech-tension-detector"
    },
    "split_keywords": [
        "speech",
        " audio",
        " tension",
        " detection",
        " machine-learning"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "225ea2274e9e75d7ab2783ef99b753c989133ae91066420694fb52783c569dc0",
                "md5": "f5b5f2446264dd7f0cbff76988c9b734",
                "sha256": "c06eff64351334594d411b027b9412363d70076c005134f9cf5e05ba23a6290a"
            },
            "downloads": -1,
            "filename": "speech_tension_detector-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f5b5f2446264dd7f0cbff76988c9b734",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 64974,
            "upload_time": "2025-07-31T16:21:54",
            "upload_time_iso_8601": "2025-07-31T16:21:54.444638Z",
            "url": "https://files.pythonhosted.org/packages/22/5e/a2274e9e75d7ab2783ef99b753c989133ae91066420694fb52783c569dc0/speech_tension_detector-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c4a3e3045d3f0734f100f483aaf6791787f68c206e679e6e220da4a0eccfdf6f",
                "md5": "fa7d609946729404f653c012494f98d6",
                "sha256": "7cd03bae37099d9c4a3754183d3d28e8839b7c97bad498062c8f9c04aa5a3e1e"
            },
            "downloads": -1,
            "filename": "speech_tension_detector-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "fa7d609946729404f653c012494f98d6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1555187,
            "upload_time": "2025-07-31T16:21:56",
            "upload_time_iso_8601": "2025-07-31T16:21:56.499194Z",
            "url": "https://files.pythonhosted.org/packages/c4/a3/e3045d3f0734f100f483aaf6791787f68c206e679e6e220da4a0eccfdf6f/speech_tension_detector-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-31 16:21:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hiroshi-tamura",
    "github_project": "speech-tension-detector",
    "github_not_found": true,
    "lcname": "speech-tension-detector"
}
        
Elapsed time: 1.77747s