Metadata-Version: 2.4
Name: rnnoisepy
Version: 1.0.0
Summary: RNNoise(python bindings)
Author-email: Akito Miura <phenomer@g.hachune.net>
License: BSD-3-Clause
License-File: LICENSE
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.12
Requires-Dist: numpy>=1.26.4
Description-Content-Type: text/markdown

# RNNoisePy

ノイズリダクション用ライブラリ[RNNoise](https://gitlab.xiph.org/xiph/rnnoise)を、
Pythonから簡単に使えるようにするためのシンプルなライブラリです。
ノイズリダクションに加え、音声フレームごとの音声っぽさを評価できます。

## インストール

x86_64環境では、`pip`コマンドでインストールできます。

```sh
$ pip install rnnoisepy
```

## つかいかた

先ほどビルドしたライブラリのパスを環境変数で渡し、実行してください。

```python
import numpy as np
import numpy.typing as npt

from rnnoisepy import RNNoise

rnnoise: RNNoise = RNNoise()

# 1ch 48000Hz int16leのサンプルを480個持つ音声フレームを
# NDArray形式で用意
audio_data

# ノイズリダクションした音声フレームと、人間の音声っぽさの値を得る。
# voice_probsは0.0～1.0。1.0に近いほど人間の音声っぽい。
reducted_audio: npt.NDArray[np.int16]
voice_probs: float
reducted_audio, voice_probs = rnnoise.process_frame(audio_data)
```

詳しくは [`examples/rnnoise-file.py`](examples/rnnoise-file.py)などを参照してください。

## サポートしている環境

現時点ではLinux(`-march=x86-64-v3`)のバイナリのみを用意しています。
それ以外の環境では、RNNoiseのソースコードから[`librnnoise.so`](https://gitlab.xiph.org/xiph/rnnoise)をビルドし、
次のように環境変数`RNNOISE_LIB_PATH`でライブラリのパスを指定すれば利用できる可能性があります。

```sh
$ RNNOISE_LIB_PATH="/home/sincromisor/apps/lib/librnnoise.so" uv run examples/rnnoise-file.py
```

## 制約
* サンプリングレートは48000Hzで固定されています。
* フレームのサンプル数は480以上です。
  多くするとうまく機能しない場合がありますので、デフォルトの480のままがよさそうです。
* 人間の音声っぽさは0.0～1.0で評価されます。1.0に近いほど、人間の音声っぽいとされます。
