Github: https://github.com/readbeyond/aeneas
アエナ
aeneasは、Python / Cライブラリであり、オーディオとテキストを自動的に同期させるためのツールセットです(別名強制アライメント)。
- バージョン:1.7.3
- 日付:2017-03-15
- 開発者: ReadBeyond
- リード開発者: Alberto Pettarin
- ライセンス:GNU Affero General Public Licenseバージョン3(AGPL v3)
- お問い合わせ先: aeneas@readbeyond.it
- クイックリンク: ホーム – GitHub – PyPI – ドキュメント – チュートリアル – ベンチマーク – メーリングリスト – Webアプリケーション
ゴール
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。
システム要件、サポートされているプラットフォームおよびインストール
システム要求
- 合理的に最近のマシン(推奨4 GB RAM、2 GHz 64ビットCPU)
- Python 2.7(Linux、OS X、Windows)または3.5以降(Linux、OS X)
- FFmpeg
- eSpeak
- Pythonパッケージ
BeautifulSoup4
、lxml
、およびnumpy
- Python C / C ++拡張をコンパイルするためのPythonヘッダ(オプションですが強く推奨されます)
- UTF-8をサポートするシェル(オプションですが強く推奨されます)
サポートされているプラットフォーム
aeneasは、現在サポートされているプラットフォームはPython 2.7とPython 3.5の Debian 64bitで開発され、テストされています 。 それにもかかわらず、 aeneasは他のLinuxディストリビューション、Mac OS X、Windowsで動作することが確認されています。 詳細については、 PLATFORMSファイルを参照してください。
あなたのOSにネイティブにインストールすることが困難であると判明した場合は、 VirtualBoxとVagrantの下で動作する仮想化されたDebianイメージ内にaeneasを提供するaeneas-vagrantを使用することを強く推奨します。これは現代のOS(Linux、Mac OS X、Windows )。
インストール
オールインワンのインストーラはMac OS XとWindowsで利用でき、debベースのLinuxディストリビューション(Debian、Ubuntu)のBashスクリプトはこのリポジトリにあります。 VirtualBox + Vagrant仮想マシンをダウンロードすることもできます。 異なるオペレーティングシステムの詳細な段階的インストール手順については、 INSTALLファイルを参照してください。
一般的なOSに依存しない手順は簡単です。
-
espeak
、ffmpeg
、ffprobe
、pip
、およびpython
シェルから、次の実行可能ファイルを呼び出すことができます。 -
最初に
numpy
をpip
インストールし、次にaeneas
をインストールしaeneas
(この順序は重要です)。pip install numpy pip install aeneas
-
aeneasが正しくインストールされているかどうかを確認するには、以下を実行します。
python -m aeneas.diagnostics
使用法
-
引数なしで実行すると、 使用方法のメッセージが表示されます 。
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
-
ペアの同期マップ
map.json
( プレーンテキスト形式のaudio.mp3
、text.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.mp3
、 page.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フォーマットと処理オプションを制御するパラメータを指定します。 詳細については、 ドキュメントを参照してください。
-
処理するタスクが複数ある場合、 ジョブコンテナを作成してバッチ処理できます。
python -m aeneas.tools.execute_job job.zip output_directory
ファイル
job.zip
は、config.txt
またはconfig.xml
設定ファイルが含まれていなければなりません。入力アセットを解析し、出力同期マップファイルをフォーマットするために必要なすべての情報を提供します。 詳細については、 ドキュメントを参照してください。
このドキュメントには、組み込みのコマンドラインツールを使用する方法を説明する非常に推奨されるチュートリアルが含まれています。
ドキュメントとサポート
- ドキュメント: http : //www.readbeyond.it/aeneas/docs/
- コマンドラインツールのチュートリアル: http : //www.readbeyond.it/aeneas/docs/clitutorial.html
- ライブラリチュートリアル: http : //www.readbeyond.it/aeneas/docs/libtutorial.html
- 古い、詳細なチュートリアル: aeneasパッケージへの実用的な入門
- メーリングリスト: https : //groups.google.com/d/forum/aeneas-forced-alignment
- 変更履歴: http : //www.readbeyond.it/aeneas/docs/changelog.html
- どのようにaeneasが動作するかについての高度な説明: HOWITWORKS
- 開発の歴史: 歴史
- テスト:テスト
- ベンチマークスイート: https : //readbeyond.github.io/aeneas-benchmark/
サポートされている機能
- テキストファイルを
parsed
、plain
、subtitles
、または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 Bairはaeneasとその依存関係をMac OS Xにインストールするための製法を準備しました。
Daniel Bair 、 Chris Hubbard 、 Richard Margettsは、Mac OS XとWindows用のインストーラをパッケージ化しました。
Firat Ozdemirはfinetuneas
HTML / JSコードを提供し、ブラウザの同期マップを微調整しました。
Willem van der Waltがコードスニペットを寄稿して、同期マップをTextGrid形式で出力しました。
Chris VaughnはMacOS TTSラッパーを寄稿しました。
すべての偉大なGitHubの貢献者 、およびGoogleグループのメンバー。