本記事では、PaddleSpeechを使って、音声認識、音声合成、音声翻訳、音声分類を行う方法を紹介します。
PaddleSpeechとは
PaddleSpeechとは、Baidu社が開発するAIプラットフォームであるPaddlePaddleを用いた音声タスクを実現するツールキットです。
音声タスクとは、音声認識(Speech to Text)、音声翻訳(Sppech Translation English to Chinese)、音声合成(Text to Speech)、音声分類(Audio classification)などが挙げられます。
特徴として、全てのタスクにおいて1つ以上の事前学習済みモデルが提供され、全てのモデルの学習コードも提供されています。
つまり、事前学習済みモデルを使用してタスクを容易に実行できるとともに、用途に合わせて学習データを用意し、自作モデルをトレーニングすることも可能です。
一点、注意点として、2021年12月末時点では、ほとんどのタスクが中国語のみサポートとなっているため、日本語モデルを使用したい場合は
別途トレーニングが必要です。
しかしPaddleOCRが多言語対応を進めているので、将来的にPaddleSpeechの対応言語が拡張されていく可能性はありそうです。
[AIOCR]PaddleOCRで日本語を文字認識する
CPUでも動作可能なPaddleOCRを使って日本語を文字認識する方法を紹介します
PaddleSpeechの導入手順
セットアップ: conda環境構築
それでは早速、開発環境にPaddleSpeechをセットアップしていきます。
動作確認は下記の環境で行っています。
OS: Ubuntu 18.04.3 LTS
GPU: GeForce GTX 1080
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
それでは、PaddleSpeechをインストールしていきます。他の機械学習環境に影響を与えないためにMinicondaの仮想環境上に構築していきます。Minicondaのインストール手順は公式ドキュメントをご参照ください。
conda環境構築手順を下記に記載します。
なお動作要件は下記の通りです。
- C++コンパイル環境
- Python >= 3.7+
問題なくインストールできているか下記のコマンドを実行して確認します。
上記のようにバージョンが表示されチェックに成功すれば、paddlepaddle-gpuのインストールは完了です。
続いてPaddleSpeechをインストールします
上記コマンドで学習が実行させれば正常にPaddleSegがインストールされています。
音声認識(Sppech to Text)
音声認識(Speech to text)を実行してみます。
なお2021年12月末時点では、中国語(zh)のみ対応しています。
日本語や英語の音声認識を行う場合別途学習させてモデルを生成する必要があります。
今回はhttps://paddlespeech.readthedocs.io/en/latest/tts/demo.htmlから中国語の音声ファイルを使用します。
音声ファイルは"昨日,这名“伤者”与医生全部被警方依法刑事拘留"(直訳:
昨日、「負傷者」と医師はすべて、法律に従って警察に刑事拘留されました)と発話しているファイルを使用します。
正確に認識されていますね。
音声分類(Audio Classification)
次に音声分類試してみます。
このタスクでは、入力した音声にタグと、タグごとのスコアを付与します。
https://paddlespeech.bj.bcebos.com/PaddleAudio/cat.wav
上記猫の鳴き声の音声ファイルを使用します。
タグとそれぞれのタグのスコアが出力されています。
猫、動物などがハイスコアとなっていることからも有効なタグが検出されていますね。
ちなみにデフォルトで用意されているタグは527個です。--topk
を527より大きい数字を設定した場合エラーとなるためご注意下さい。
もっとも、後半のタグのスコアはかなり低くなるためあまり意味を成しません。
字幕生成(automatic video subtitles)
次に音声ファイルの字幕生成を試してみます。
このタスクでは、動画から音声ファイルを抽出し音声認識を実施後、字幕用に句読点を付けたテキストを出力します。
ASR Resultが音声認識結果、Text Resultが字幕用に句読点を付与した出力テキストです。
音声翻訳(Text Translation)
次にText Translationを試してみます。
"the invention of movable metal letters in the middle of the fifteenth century
may justly be considered as the invention of the art of printing."(訳:
15世紀半ばの可動金属文字の発明は、印刷技術の発明と見なすことができます。)と発話している音声ファイルを使用します。
こちらのファイルは、https://paddlespeech.readthedocs.io/en/latest/tts/demo.htmlから取得しています。
ただし、入力できるサンプリング周波数が16000HzとなっているためSOXを使用して変換しています。
出力結果を英訳した結果は以下の通りです。
"The invention of metal letters in the middle of the 15th century may be
considered an invention of the art of printing."
正確に音声を翻訳できていますね。
音声合成(Text to Speech)
最後にText to Speechを実行してみます。
这个声音是机器发出的声音(訳: この音声は機械によって作られた音声です)
上記の音声を作成してみます。
発音の良し悪しの判断ができないのが歯がゆいですがGoogle翻訳にしゃべらせてみたものより、流暢な音声ファイルが生成されます。
まとめ
本記事では、PaddleSpeechで音声認識(Speech to Text)、音声翻訳(Sppech Translation English to Chinese)、音声合成(Text to Speech)、音声分類(Audio classification)を行う方法を紹介しました。
かなり手厚いツールキットで、予測の実行から、学習、データ変換に至るまでほとんどがカバーされています。
学習データさえ用意できれば、多くのモデルのトレーニングを試すことができるため非常に助かりますね。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - WeNet: Production oriented Streaming and Non-streaming End-to-End Speech Recognition Toolkit
2. GitHub - PaddlePaddle/PaddleSpeech
3. Audio Sample
0 件のコメント :
コメントを投稿