Big coreとLittle core

詳細は以下URLを参照:
https://developer.qualcomm.com/blog/impact-big-core-little-core-architecture-application-development

 

big.LITTLEと呼ばれるアーキテクチャは,高性能を追求するbigと省電力性を追求するlittleの2つの種類のコアで構成されている.これらを組み合わせることにより,オペレーティングシステムレベルとアプリケーションレベルの両方で,処理要求と電力効率のバランスをとることが目的.
メーカーによって,big.LITTLEコアの選択を隠蔽しユーザ側が考える必要をなくしていたり,APIによって制御可能なようにしていたりする.IDEによっては,異なるコアでデバッグを簡単に行える.Don't forget that at some point you'll need to optimize and debug your application!

論文メモ_8

Semi-supervised training for improving data efficiency in end-to-end speech synthesis
利用できるデータをできるだけ生かし、Tacotronを学習する試み。1. word embeddingを用いてencoder networkをconditioning。2. decoder networkを、次フレームの出力を予測するよう学習させ、autoregressive modelとして事前学習する。

 

A new GAN based end-to-end TTS training algorithm
Tacotronのexposure biasを改善するための試み。teacher forcingを行った場合とfree running (inference mode) との間でGANを学習する。discriminatorへの入力は、ネットワークの出力系列ではなく、attention networkのhidden states。

 

Disentangling Correlated Speaker and Noise for Speech Synthesis via Data Augmentation and Adversarial Factorization
GMVAE w/ Tacotronを用いた音声合成。雑音および話者に関する情報をdisentangleするため、global condition用のencoderの出力に対し、雑音が重畳されているかどうかを当てるタスクを追加し、adversarial trainingを行う。雑音が重畳されたより収集が容易なデータも学習データとしたい。

 

Speech-to-speech translation between untranscribed unknown languages
テキストデータを用いずに、speech to speech translation。VQ-VAEを用いて離散シンボルを学習。

 

Domain expansion in DNN-based acoustic models for robust speech recognition
DNN-HMM hybrid systemのアクセントを対象とした adaptation (ここではdomain expansion)を行う。過去に提案されているKL divergence baseの正則化項とelastic weight consolidation (EWC)の併用を、他の先行研究と比較。パラメタのL2ノルムをFisher行列の対応する値で重みづけ。

 

Self-attention transducers for end-to-end speech recognition
RNN-TransducerのRNNをself-attentionに入れ替える。また、path-aware regularization (kaldiでalignmentを求め、これをマルチタスクとして使用)、chunk-flow mechanism (attention計算時に使用するencoder側の系列を固定長へと制限)を用いたonline decodingへの対応を行う。

 

A multi-task learning framework for overcoming the catastrophic forgetting in automatic speech recognition
domain adaptationを行う際、適応前ドメインの精度も落とさずに新たなドメインに適応を行う試み。対象はCTC。適応時のロスに、適応前学習データを用いた適応前後のCTCの出力のKL divergenceとCTCのlossを追加し、適応前学習データに対する精度が落ちないようにする。fine-tuningやretrainingよりも早く収束し、性能も同等もしくは良い結果となった。

 

Evaluating Long-form Text-to-Speech: Comparing the Ratings of Sentences and Paragraphs
従来のTTSは、文単位でスコアを求めることが多い。paragraphやdialogレベルでの音声合成では、過去のコンテキストとの関連や一貫性も重要なため、コンテキストを考慮した上でTTSの評価を行う枠組み

 

Exploring methods for the automatic detection of errors in manual transcription
ASRの学習に使用する音声・テキストペア内に含まれる、書き起こし誤りを検出する試み。(kaldiでは、書き起こしを用いてbiased LMを学習し、decoding結果の精度をチェックことで間違った正解ラベルの検出を行う。この文献では、)DNN-HMMで計算した事後確率とforced alignmentをとって計算した確率のsymmetric KL divergenceの標準偏差を発話単位で計算し、これを閾値として誤りを検出する。ただ、EERは、biased LM-baseの手法と同等。

論文メモ_7

Improving performance of end-to-end ASR on numeric sequences
数字列を発声した際、システムはそれを文字ではなく数字で表示してほしい。数字へと精度よく変換するための手法の提案。書き起こしに対してtrivialかnon-trivialかをタグ付けし、non-trivialな部分は別途モデル (FST|NN) へ入力し変換を行う。

 

Discriminative learning for monaural speech separation using deep embedding features
end-to-endにspeech separationをする。deep clusteringとuPITを組み合わせ、すべてをend-to-endで学習。まずDCでembedded featureを求め、これをuPIT側へ入力。(discriminative learning of uPIT: 選択したpermutationの候補以外の組み合わせで計算したロスにマイナスをかけ、それをDCとuPITにロスに足しこむ。)

 

Fast DNN acoustic model speaker adaptation by learning hidden unit contribution features
従来のLHUCは、適応データを準備してLHUCのパラメタをbackpropで学習する。backprop無しでデータ量の増加に応じてonline adaptationできるように、averaging layerを持つLHUC prediction networkを用意し、この出力に応じてadaptationを行う。

 

Unsupervised adaptation with adversarial dropout regularization for robust speech recognition
adversarial dropout regularizationを用いた音響モデルの話者適応。モデルはDNN-HMM hybrid systemで、framewise posteriorを対象としてる。

 

Exploiting semi-supervised training through a dropout regularization in end-to-end speech recognition
dropoutを用いてラベルを作成し、semi supervised trainingを行う。decoding scoreやエントロピーを用いて生成したラベルrの信頼度を計算し、適応データとして使用するかどうか決める。

 

Sequence-to-sequence learning via attention transfer for incremental speech recognition
Incremental speech recognitionの学習手法。attention matrixからknowledge distillation。

 

Group latent embedding for vector quantized variational autoencoder in non-parallel voice conversion
VQ-VAEを用いた音声変換。辞書をsub-groupに分割し選択したsubgroupの重み付き和を潜在変数に。

スマホで音声認識

[1] で開発されているプロジェクトのコードを読み、動かす。kaldiOpenFSTをarmv7でコンパイルし、aarを作成している。コア部分はC++ (kaldi)、front end interfaceはJavaJava側からswigC++を呼び出している。予めHCLとGをcomposeせず、on-the-fly decoding。実機で動かすと、性能は落ちるが予想以上にlatencyが低く、いい感じ。

[1] https://github.com/alphacep/kaldi-android

Kaldiをwindows上でコンパイルする

Compile Kaldi on Windows
参考URL: https://github.com/kaldi-asr/kaldi/blob/master/windows/INSTALL.md

1. OpenFSTコンパイル
以下のプロジェクトをクローンし、slnをvisual studioでビルドする。
https://github.com/kkm000/openfst.git

2. Kaldiコンパイル
2.1 OpenBLASのダウンロード
(kaldi)/tools$ curl -L -O http://sourceforge.net/projects/openblas/files/v0.2.14/OpenBLAS-v0.2.14-Win64-int32.zip
(kaldi)/tools$ curl -L -O http://sourceforge.net/projects/openblas/files/v0.2.14/mingw64_dll.zip
(kaldi)/tools$ unzip OpenBLAS-v0.2.14-Win64-int32.zip
(kaldi)/tools$ unzip mingw64_dll.zip

(kaldi)/windows$ cp variables.props.dev variables.props
variables.propsを編集 (OPENBLASDIR, OPENFST, OPENFSTLIB)

(kaldi)/windows$ cp kaldiwin_openblas.props kaldiwin.props

(kaldi)/windows$ perl generate_solution.pl --vsver vs2017 --enable-openblas

fst.libが見つからないと言われるので、(kaldi)/windows/openfstwin_release.propsのfst.libをlibfst.libに変更する。また、AdditionalLibraryDirectoriesを適切に変更し、libfst.libを参照できるようにする。

---
管理者権限でcmdを立ち上げ
1. windows key + r
2. type 'cmd'
3. ctrl + shift + enter

Visual Studio+Cygwinコマンドライン開発環境の構築
https://qiita.com/mkaminaga/items/7e15dd3ca385780b31b5

---

論文メモ_6

Synchronous Bidirectional Neural Machine Translation
NMTでforwad pass decoderとbackward pass decoderの情報を統合する試み。ビームサーチレベルでleft-to-rightとright-to-leftの仮説を保持し、pruning後に生き残った両方向の仮説のstateを、それぞれの方向のdecoderが受け取るようなネットワーク構造を提案。

 

Knowledge Distillation for Small-Footprint Highway Networks
Hybrid DNN-HMMのDNN (highway networks) をknowledge distillationした研究。

 

Predicting expressive speaking style from text in end-to-end speech synthesis
Global Style Tokensを用いて、multi-speaker multi-speaking styleのTTSを行う試み。style tokenの重み付き和をtextから予測し、これを用いてglobal conditioningを行う。

 

Multilingual ASR with massive data augmentation
Hybrid ASR systemを作成する際、音響モデル・言語モデルともにmultilingual dataを用いて言語非依存なモデルを学習する(end-to-endでは、monolithic neural network architectureでmulti lingual ASRを学習する研究が既に報告されている)。その際、low resourceを仮定し、speed perturbationやspecAugmentなどのdata augmentation を行う。hybrid systemの場合でも、言語依存の場合と比較して性能改善。(大規模データでどうなる?)

 

Large-Scale Multilingual Speech Recognitionwith a Streaming End-to-End Model
RNN-Tを用いてmultilingual ASRを行う試み。1) language vectorの入力 2) data sampling 3) adapterを用いて言語依存化 を行った。言語セットが類似している場合、言語情報を入力することは有効。

 

Probing the information encoded in x-vectors
(i-vectorおよび)x-vectorに話者以外の情報 (チャネルやテキスト情報、雑音情報) が含まれているか、調査を行う。

 

VAE-Based Regularization for Deep Speaker Embedding
(後段のPLDAとの相性を考え)VAEを用いてx-vectorをGaussianに。また、speaker cohesive lossを提案:話者sの平均x-vectorを$s(x)$、話者sサンプルiのx-vectorを$\mu(x)$としたとき、$\ln p(\mu(x)|\s(x))$を新たにロスとして追加。同一話者のlatent representationをより近くへ。

 

An Online Attention-Based Model for Speech Recognition
attention networkが取りうるencoder representationを制限するための手法を提案。考慮する領域をneural baseで決定することが、先行研究との違い (adaptive monotonic chunk-wise attention: AMoChA)。取りうるattentionの領域を学習するための教師データとしては、searchの情報やHMMのアライメント情報を用いる。encoder networkはlatency controlled bidirectional LSTM。

 

Lattice Generation in Attention-Based Speech Recognition Models
encode decoder networks でlatticeを生成する試み。(TODO) コードが公開されている。あまり理解できなかったので、公開されているコードを読む。

 

Trainable dynamic subsampling for end-to-end speech recognition
音声はencoder側のtime stepが大きくなりがちなので、subsamplingが行われる。従来は手動で決定していたsamplingを行うタイミングを学習することで、フレームの重要度に応じてdata drivenに取捨選択させようとする試み。hidden vectorを入力としてMLPを学習し、hardに決定する。

 

Speaker adaptation for attention based end-to-end speech recognition
attention-based encoder decoder networksを話者適応する試み。1) KL divergenceを用いた正則化項の追加 2) adversarial training (話者) の追加 3) 異なるlabel unitを用いたmulti task learningを行う。発話数は100 or 200発話で、すべてのパラメタもしくはencoder networkのみを更新。

論文メモ_5

AI and Accessibility: A Discussion of Ethical Considerations
1. システムの包括性:誰に向けたシステムか。多様なdiversityをカバーできているか。
2. バイアス:性別や人種に対する偏見、障害に基づく差別を促さないか。SNSのようなサービスから、知られたくない個性や状態が推測できる可能性がある。
3. プライバシー:システム学習のために協力者がデータを提供する際、データを完全に匿名化できるとは限らない。
4. エラー:エラーはつきもの。overconfidence/underconfidenceを減らすために、どのように結果を提示すべきか。
5. ExpectationSetting:特定のタスクでうまくいっただけなのに、さもそれが現実世界でも動作するような誇張は無くすべき。
6. どのようにsimulated dataを作ればいい?
7. 新しい技術に対する需要性:プライバシーや公平性など、技術を利用することで生じる、間接的な利害関係者への影響はどうか, eg., google glass

 

Two-Pass End-to-End Speech Recognition
mobile deviceのような低リソース計算機下で、認識性能を上げるための試み。RNN-Tでstreaming ASRを行い、その結果を用いてattention decoderで2nd pass decodingを行う。encoder networkを共有し、RNN-Tの値を用いてMinimum WER基準でdecoder networkを学習。

 

Twin Regularization for online speech recognition
Unidirectional LSTMをencoder networkとして使用するオンラインシナリオで、認識を上げるための試み。forwardで求めたhidden statesとbackwardで求めたhidden statesのMSEをロスとして追加。

 

Compression of End-to-End Models
end-to-end ASRをモバイル端末で動かすため、以下の手法を検討。sequence level knowledge distillation、matrix factorization、weight pruning。

 

Multilingual Adaptation of RNN based ASR Systems
言語特徴量を補助情報として使用して、multilingual ASRの性能を上げる試み。
音声に対して言語ラベルを予測するネットワークを学習し、そのbottleneck featureを1) 補助情報として使用 2) LSTMの出力に掛け合わせる の2通りを比較、実験。

 

Learning Problem-agnostic Speech Representations from Multiple Self-supervised Tasks
様々な音声関連のタスクで有用な特徴量を抽出する試み。目的関数はシンプルで、音声波形を入力し、Log power spectrumやMFCC、prosodyを出力するように学習。frame単位のmappingだけでなく、globalな情報も目的関数として組み込んだり、与えられたサンプルが当該フレームより前にあるか後にあるかを当てるタスクも組み込んだりする。

 

Non-Parallel Sequence-to-Sequence Voice Conversion with Disentangled Linguistic and Speaker Representation

 

VAE-based Domain Adaptation for Speaker Verification
out-of-domainな環境でも頑健にspeaker verificationを行うための適応手法に関する研究。x-vectorを学習後、それを対象としてVAEを学習。得られたlatent representationを用いてPLDA。VAEやPLDAを適応。

 

Uncertainty weighting and propagation in DNN-HMM based speech recognition
DNN-HMM hybrid ASR systemにuncertainty weightingを適用。senoneの事後確率の分散を求め、これが閾値よりも大きければあまり信頼できないとし、それに応じて事後確率に重みをかける。

 

A study of speaker adaptation for DNN-based speech synthesis
DNNベースのTTS systemを話者適応する試み。i-vectorの入力およびLHUCを用いたパラメタ更新を行う。

 

Adaptation of an Expressive Single Speaker Deep Neural Network Speech Synthesis System
DNNベースのTTS systemを話者適応する試み。hidden unitの数を学習後に新たに増やし、これを学習。

 

Speaker adaptation in DNN-based speech synthesis using d-vectors
DNNベースのTTS systemを話者適応する試み。d-vectorを補助情報として使用する際、1) そのまま使用 2) 既知話者のd-vectorの線形補間として表現 3) 二つの併用 などを比較。

 

Linear Networks based Speaker Adaptation for Speech Synthesis
DNNベースのTTS systemを話者適応する試み。新たに層を追加したりSVDで行列分解を行い、少量パラメタのみを更新。