GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

readbeyond

aeneas – aeneasはPython / Cライブラリであり、オーディオとテキストを自動的に同期させるためのツールセットです(強制的なアライメントとも呼..

投稿日:

aeneasはPython / Cライブラリであり、オーディオとテキストを自動的に同期させるためのツールセットです(強制的なアライメントとも呼ばれます) 。http://www.readbeyond.it/aeneas/

アエナ

aeneasは、Python / Cライブラリであり、オーディオとテキストを自動的に同期させるためのツールセットです(別名強制アライメント)。

ゴール

aeneasは、テキストフラグメントのリストとテキストのナレーションを含むオーディオファイルとの間の同期マップを自動的に生成する。 コンピュータサイエンスでは、この作業は強制的な位置合わせ (自動的に計算する)として知られています

例えば、 このテキストファイルこのオーディオファイルが与えられると、オーディオファイル内の対応する時間間隔を、各フラグメントについて決定する。

1                                                     => [00:00:00.000, 00:00:02.640]
From fairest creatures we desire increase,            => [00:00:02.640, 00:00:05.880]
That thereby beauty's rose might never die,           => [00:00:05.880, 00:00:09.240]
But as the riper should by time decease,              => [00:00:09.240, 00:00:11.920]
His tender heir might bear his memory:                => [00:00:11.920, 00:00:15.280]
But thou contracted to thine own bright eyes,         => [00:00:15.280, 00:00:18.800]
Feed'st thy light's flame with self-substantial fuel, => [00:00:18.800, 00:00:22.760]
Making a famine where abundance lies,                 => [00:00:22.760, 00:00:25.680]
Thy self thy foe, to thy sweet self too cruel:        => [00:00:25.680, 00:00:31.240]
Thou that art now the world's fresh ornament,         => [00:00:31.240, 00:00:34.400]
And only herald to the gaudy spring,                  => [00:00:34.400, 00:00:36.920]
Within thine own bud buriest thy content,             => [00:00:36.920, 00:00:40.640]
And tender churl mak'st waste in niggarding:          => [00:00:40.640, 00:00:43.640]
Pity the world, or else this glutton be,              => [00:00:43.640, 00:00:48.080]
To eat the world's due, by the grave and thee.        => [00:00:48.080, 00:00:53.240]

この同期マップは、アプリケーションに応じていくつかの形式でファイルに出力できます。

  • 研究:Audacity(AUD)、ELAN(EAF)、TextGrid;
  • デジタル出版:EPUB 3のSMIL;
  • SubRip(SRT)、SubViewer(SBV / SUB)、TTML、WebVTT(VTT)。
  • Web:JSON;
  • さらなる処理:CSV、SSV、TSV、TXT、XML。

システム要件、サポートされているプラ​​ットフォームおよびインストール

システム要求

  1. 合理的に最近のマシン(推奨4 GB RAM、2 GHz 64ビットCPU)
  2. Python 2.7(Linux、OS X、Windows)または3.5以降(Linux、OS X)
  3. FFmpeg
  4. eSpeak
  5. PythonパッケージBeautifulSoup4lxml 、およびnumpy
  6. Python C / C ++拡張をコンパイルするためのPythonヘッダ(オプションですが強く推奨されます)
  7. UTF-8をサポートするシェル(オプションですが強く推奨されます)

サポートされているプラ​​ットフォーム

aeneasは、現在サポートされているプラットフォームPython 2.7Python 3.5の Debian 64bitで開発され、テストされています それにもかかわらず、 aeneasは他のLinuxディストリビューション、Mac OS X、Windowsで動作することが確認されています。 詳細については、 PLATFORMSファイルを参照してください。

あなたのOSにネイティブにインストールすることが困難であると判明した場合は、 VirtualBoxVagrantの下で動作する仮想化されたDebianイメージ内にaeneasを提供するaeneas-vagrantを使用することを強く推奨します。これは現代のOS(Linux、Mac OS X、Windows )。

インストール

オールインワンのインストーラはMac OS XとWindowsで利用でき、debベースのLinuxディストリビューション(Debian、Ubuntu)のBashスクリプトはこのリポジトリにあります。 VirtualBox + Vagrant仮想マシンをダウンロードすることもできます。 異なるオペレーティングシステムの詳細な段階的インストール手順については、 INSTALLファイルを参照してください。

一般的なOSに依存しない手順は簡単です。

  1. Python (2.7.x推奨)、 FFmpegeSpeak をインストールする

  2. espeakffmpegffprobepip 、およびpython シェルから、次の実行可能ファイルを呼び出すことができます。

  3. 最初にnumpypipインストールし、次にaeneasをインストールしaeneas (この順序は重要です)。

    pip install numpy
    pip install aeneas
  4. aeneasが正しくインストールされているかどうかを確認するには、以下を実行します。

     python -m aeneas.diagnostics

使用法

  1. 引数なしで実行すると、 使用方法のメッセージが表示されます

    python -m aeneas.tools.execute_task
    python -m aeneas.tools.execute_job

    また、含まれているファイルのおかげで、マシン上ですぐに実行できるライブサンプルのリストを得ることもできます:

    python -m aeneas.tools.execute_task --examples
    python -m aeneas.tools.execute_task --examples-all
  2. ペアの同期マップ map.jsonプレーンテキスト形式のaudio.mp3text.txt )を計算するには、 map.jsonを実行します。

    python -m aeneas.tools.execute_task \
        audio.mp3 \
        text.txt \
        "task_language=eng|os_task_file_format=json|is_text_type=plain" \
        map.json

    (コマンドは視覚的に分かりやすくするために\をつけた行に分割されていますが、本番ではコマンド全体を1行にすることができますし、シェル変数を使用することもできます)。

    audio.mp3ようなid属性でマークされたフラグメントを含む)ペア( audio.mp3page.xhtml)の 同期マップ map.smil計算するには次のコマンドを実行します。

    python -m aeneas.tools.execute_task \
        audio.mp3 \
        page.xhtml \
        "task_language=eng|os_task_file_format=smil|os_task_file_smil_audio_ref=audio.mp3|os_task_file_smil_page_ref=page.xhtml|is_text_type=unparsed|is_text_unparsed_id_regex=f[0-9]+|is_text_unparsed_id_sort=numeric" \
        map.smil

    ご覧のとおり、3番目の引数( 設定文字列 )は、タスクのI / Oフォーマットと処理オプションを制御するパラメータを指定します。 詳細については、 ドキュメントを参照してください。

  3. 処理するタスクが複数ある場合、 ジョブコンテナを作成してバッチ処理できます。

    python -m aeneas.tools.execute_job job.zip output_directory

    ファイルjob.zipは、 config.txtまたはconfig.xml設定ファイルが含まれていなければなりません。入力アセットを解析し、出力同期マップファイルをフォーマットするために必要なすべての情報を提供します。 詳細については、 ドキュメントを参照してください。

このドキュメントには、組み込みのコマンドラインツールを使用する方法を説明する非常に推奨されるチュートリアルが含まれています。

ドキュメントとサポート

サポートされている機能

  • テキストファイルをparsedplainsubtitles 、またはunparsed (XML)形式で入力する
  • mplainおよびmunparsed (XML)形式のマルチレベル入力テキストファイル
  • id属性とclass属性を使用したXML(XHTMLなど)ファイルからのテキスト抽出
  • 任意のテキスト断片の細分性(単一の単語、サブフレーズ、フレーズ、段落など)
  • 入力オーディオファイルフォーマット: ffmpeg読めるもの
  • 出力同期マップの形式:AUD、CSV、EAF、JSON、SMIL、SRT、SSV、SUB、TEXTGRID、TSV、TTML、TXT、VTT、XML
  • AFR、ARA、BUL、CAT、CYM、CES、DAN、DEU、ELL、ENG、EPO、EST、FAS、FIN、FRA、GLE、GRC、HRV、HUN、ISL、ITA、JPN、 LAT、LAV、LIT、NLD、NOR、RON、RUS、POL、POR、SLK、SPA、SRP、SWA、SWE、TUR、UKR
  • 処理時間を短縮するためにPython C拡張を介して計算されたMFCCとDTW
  • AWS Polly TTS API、eSpeak(デフォルト)、eSpeak-ng、Festival、MacOS(言い換えれば)、Nuance TTS APIの組み込みのTTSエンジンラッパー
  • 高速オーディオ合成のためのPython C拡張を介して呼び出されるデフォルトのTTS(eSpeak)
  • ユーザが用意したカスタムのTTSエンジンPythonラッパーを実行する可能性(speectの例を含む)
  • 複数のオーディオ/テキストペアのバッチ処理
  • YouTubeのビデオからオーディオをダウンロードする
  • マルチレベルモードでは、段落から文章までの再帰的整列
  • マルチレベルモードでは、MFCC分解能、MFCCマスキング、DTWマージン、TTSエンジンを各レベルごとに個別に指定できます
  • スペルミス/間違った単語、ローカルな単語の並べ替え、背景ノイズ/散発的なスパイク
  • CCアプリケーションの最大文字/秒制約を含む調整可能な分割時間
  • オーディオヘッド/テールの自動検出
  • 手動で同期マップを微調整するためのHTMLファイルを出力する( finetuneasプロジェクト)
  • 実行時にチューニング可能な実行パラメータ
  • Webアプリケーションのデプロイメントに適したコード(オンデマンドクラウドコンピューティングのインスタンスなど)
  • 各リリース前に実行されなければならない1,200以上のユニット/統合/パフォーマンステストを含む広範なテストスイート

制限と欠落している機能

  • オーディオはテキストと一致する必要があります。偽のテキストやオーディオの大部分が誤った同期マップを生成する可能性があります
  • 音声は話されていると仮定されている:歌のキャプションには適していない、CCアプリケーションにはYMMV
  • メモリスワッピングに対する保護はありません:1つのオーディオファイルの最大継続時間(例えば、4GB RAM =>最大2hオーディオ、16GB RAM =>最大10hオーディオ)に十分なRAM量を確保してください
  • 未解決の問題

ワードレベルアラインメントに関する一考察

かなりの数のユーザがオーディオおよびテキストを単語レベルで整列させるために(すなわち、各フラグメントは単語である)、 aeneasを実行する。 aeneasは単語レベルのアラインメントを念頭に置いて設計されておらず、結果はASRモデルの優れた言語のASRベースの強制 アライナよりも劣るかもしれませんが、 アエナは単語レベルでのアラインメントの質を向上させるオプションを提供します:

  • マルチレベルテキスト(v1.5.1以降)、
  • MFCC非音声マスキング(v1.7.0以降、デフォルトでは無効)
  • フェスティバルやAWS / Nuance TTS API(v1.5.0以降)など、より優れたTTSエンジンを使用してください。

aeneas.tools.execute_taskコマンドラインツールを使用する場合は、 --presets-word switchを追加してMFCCの非音声マスキングを有効にすることができます。

$ python -m aeneas.tools.execute_task --example-words --presets-word
$ python -m aeneas.tools.execute_task --example-words-multilevel --presets-word

aeneasをライブラリとして使用する場合は、適切なRuntimeConfigurationパラメータを設定するだけです。 詳細については、 コマンドラインのチュートリアルを参照してください。

ライセンス

aeneasは、GNU Affero General Public License Version 3の条件でリリースされています 。詳細については、 LICENSEファイルを参照してください。

サードパーティのコードのライセンスとaeneasに含まれるファイルは、 licensesディレクトリにあります。

このプロジェクトの作成には、いかなるコピー権も害されませんでした。

サポートと貢献

スポンサー

  • 2015年7月Michele Gianellaは境界調整コード(v1.0.4)の開発を寛大にサポートしました。

  • 2015年8月Michele GianellaはMFCC / DTWコードのポートをC(v1.1.0)に部分的にスポンサーし、

  • 2015年9月 :西アフリカの友人は、ヘッド/テール検出コード(v1.2.0)の開発を部分的に後援し、

  • 2015年10月 :匿名の寄付が「YouTubeダウンローダー」オプションの開発を後援(v1.3.0)

  • 2016年4月 :Fruch財団はv1.5.0の開発とドキュメントを親切に後援しました

  • 2016年12月Centro Internazionale Del Libro Parlato「Adriano Sernagiotto」 (Feltre、イタリア)が部分的にv1.7シリーズの開発を後援

サポート

あなたはaeneasの発展をサポートしますか?

私はスポンサーシップを受け入れる

  • バグを修正し、
  • 新しい機能を追加する、
  • コードの品質とパフォーマンスを改善し、
  • コードを他の言語/プラットフォームに移植する
  • ドキュメンテーションを改善する。

お気軽にご連絡ください

貢献する

あなたがバグを見つけたと思ったり、機能要求があると思われる場合は、 GitHubのissue trackerを使って提出してください。

aeneasの使用に関する質問をしたい場合は、 メーリングリストに電子メールを送ることが最善の選択肢です。

最後に、コードの寄付を歓迎します! ブランチポリシーとそれに続くコードスタイルの詳細については、 コード寄与ガイドを参照してください。

謝辞

MFCCとDTWの使用を提案し、オーディオとテキストを整列させるための最初の実験コードを共同開発したNicola Montecchioに感謝します。

ReadBeyond Sync用のAPIとWebアプリケーションを開発したPaolo Bertasi氏は 、このパッケージの構造を非同期で使用するための手助けをしました。

Chris HubbardはaeneasをDebian / Ubuntu .debとしてパッケージ化するためのファイルを用意しました。

Daniel Bairaeneasとその依存関係をMac OS Xにインストールするための製法を準備しました。

Daniel BairChris HubbardRichard Margettsは、Mac OS XとWindows用のインストーラをパッケージ化しました。

Firat Ozdemirfinetuneas HTML / JSコードを提供し、ブラウザの同期マップを微調整しました。

Willem van der Waltがコードスニペットを寄稿して、同期マップをTextGrid形式で出力しました。

Chris VaughnはMacOS TTSラッパーを寄稿しました。

すべての偉大なGitHubの貢献者 、およびGoogleグループのメンバー。







-readbeyond
-, , , , , , , , , , , , , , , , , , ,

執筆者: