ReazonSpeech APIリファレンス

  • このリファレンスマニュアルでは ReazonSpeech ライブラリについて解説します。

  • MPEG2-TS形式のデータを情報解析する各種のPythonインターフェイスを提供します。

関数

get_captions(path)

MPEG2-TSファイルから字幕テキストを読み取ります。

パラメータ:

path (str) -- MPEG2-TSファイルのパス

戻り値の型:

List

戻り値:

Caption のリスト

get_utterances(path, ctc_segmentation, speech2text=None, strategy='optim')

MPEG2-TSファイルから音声コーパスを抽出します。

音声ファイルの切り出しについて、2つのモードをサポートしています。

  • optim は音声認識モデルをもとに最適なポイントで音声を切り出します。 余計なノイズの少ないクリーンなコーパスを作成する場合に適しています。

  • lax は前後の文脈を含めて余分に切り出します。 ロバストな音声認識に適したコーパスが得られます。

また、speech2text を呼び出し時に渡すことで、追加の精度指標(文字誤り率)を計算できます。 省略した場合 Utterance.asrUtterance.cerNone になります。

パラメータ:
  • path (str) -- MPEG2-TSファイルのパス

  • ctc_segmentation (CTCSegmentation) -- ESPnet2のCTCSegmentationインスタンス

  • speech2text (Speech2Text) -- ESPnet2のSpeech2Textインスタンス(省略可)

  • strategy (str) -- optim または lax (既定値は optim

戻り値の型:

List

戻り値:

Utterance のリスト

transcribe(audio, speech2text=None, config=None)

音声ファイルを解析し、文字起こしの結果を返却します。

任意の長さの音声データに対応しており、自動的に音声を区切ってストリーム処理する機能を備えています。 具体的な使い方を以下に示します。

import reazonspeech as rs

for caption in rs.transcribe("test.wav"):
    print(caption)

音声認識の結果は次のように Caption として返却されます。

Caption(start_seconds=1.53, end_seconds=3.26, text="むかしむかし")
Caption(start_seconds=3.26, end_seconds=7.48, text="丹後国水の江の浦に浦島太郎という漁師がありました")
Caption(start_seconds=8.68, end_seconds=12.71, text="浦島太郎は毎日釣りざおを担いでは海へ出かけて")

バージョン 1.1.0 で追加.

パラメータ:
  • audio (str, np.array) -- 音声ファイルのパス(または音声データ)

  • speech2text (Speech2Text) -- ESPnet2のSpeech2Textインスタンス(省略可)

  • config (TranscriberConfig) -- 音声認識のオプション(省略可)

戻り値の型:

Iterator[Caption]

補助関数

build_sentences(captions)

字幕テキストをセンテンス単位に再構成します。

次のように文の途中で字幕が分割されているケースを想定した関数です:

Caption(start_seconds=10, end_seconds=12, text='輸送機は午前10時に')
Caption(start_seconds=12, end_seconds=15, text='離陸しました。')

この関数を適用すると、次のように文単位に字幕をマージできます:

Caption(start_seconds=10, end_seconds=15, text='輸送機は午前10時に離陸しました。')
パラメータ:

captions (str) -- Caption のリスト

戻り値の型:

List

戻り値:

Caption のリスト

save_as_zip(utterances, path, format='flac')

日本語音声コーパスをZIP形式で保存します。

フォーマットは python-soundfile がサポートしている形式を指定できます(既定値は flac です)

パラメータ:
  • Utterances (list) -- Utterances のリスト

  • path (str) -- 保存先のファイルパス

  • format (str) -- 発話を保存するファイル形式

戻り値の型:

None

クラス

class Caption

MPEG2-TSファイルから抽出された字幕に対応するデータクラスです。

開始・終了時刻は、動画の先頭からの経過秒数を計算して格納しています。

start_seconds: int

字幕の表示開始タイミング

end_seconds: int

字幕の表示終了タイミング

text: str

字幕テキスト

class Utterance

MPEG2-TSファイルから抽出された発話に対応するデータクラスです。

buffer: numpy.array

音声データを表すNumpyのArray

samplerate: int

音声データのサンプルレート

duration: float

音声データの再生秒数

start_seconds: float

動画の先頭からの開始秒数

end_seconds: float

動画の先頭からの終了秒数

text: str

字幕テキスト

ctc: float

CTC Segmentationの適合度スコア

asr: str

Speech2Textが出力した認識結果 (speech2textを省略した場合はNone)

cer: float

Speech2Textの認識結果の文字誤り率 (speech2textを省略した場合はNone)

class TranscriberConfig

transcribe() 関数の処理を細かく調整するための設定値クラス

バージョン 1.1.0 で追加.

samplerate: int = 16000

音声認識モデルに渡す際のサンプリング周波数

利用する音声認識モデルが訓練されたサンプルレートに応じて変更してください。 既定値は 16000 (16khz) です。

window: int = 320000

音声処理のウィンドウの長さ

長い音声については、このウィンドウ単位で分割して認識を行います。 既定値は 320000 (20秒) です。

blank_threshold: float = 0.98

発話区間を推定する際の閾値

この設定値で、無発話区間とみなす閾値を変更することができます。 既定値は 0.98 (98%) です。

padding: tuple = (16000, 8000)

入力音声に追加されるパディング

音声認識の際に、入力音声の前後に追加する余白を調整できます。 既定値は、前に1000ms、後に500msのパディングを補足して認識を行います。