19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VALL-E X

Last updated at Posted at 2023-09-22

はじめに

こんにちは、fuyu-quantです.

今回はVALL-E Xの紹介になります.英語,中国語,日本語の3つ言語での音声合成,感情やアクセントを考慮した音声合成,言語をまたいだ音声合成などを行うことができます.さらに自分が用意した数秒の音声ファイルと文字起こししたものを与えることで音声を複製することもできます.
記事に誤り等ありましたらご指摘いただけますと幸いです。

目次

1. VALL-E X

ライセンス:MIT(商用利用可能)
リポジトリ:https://github.com/Plachtaa/VALL-E-X
論文:https://arxiv.org/abs/2303.03926

VALL-E XはMicrosoftが開発した音声合成のモデルです。論文はMicrosoftから出ていますが、今回紹介するモデルはMicrosoftaが出しているモデルではないです(Microsoftの公式のモデルは公開されていないみたいです)主な特徴としては、英語、日本語、中国語での音声合成と数秒の音声ファイルからその声を模倣した合成音声を生成できます。
アーキテクチャなどについては以下のサイトを参考にしてみてください。
VALL-E-X : 再学習不要で声質を変更できる音声合成モデル

2. 使い方

音声ファイルの埋め込み方が分からなかったので,実際に生成した音声を確認したい人は以下のリンクで実行してみてください.

Data Science Wiki

Open In Colab

以下のコマンドでインストールします.

!git clone https://github.com/Plachtaa/VALL-E-X.git
cd VALL-E-X
!pip install -r requirements.txt
from utils.generation import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav
from IPython.display import Audio

モデルのダウンロード

preload_models()

音声合成(英語)

英語での音声合成は長い文章でもクオリティの高い音声を作成することができました.

text_prompt = """
    Quantum computers are advanced computational devices that use principles of quantum mechanics to process information. Unlike classical computers which use bits as 0s or 1s, quantum computers use qubits, which can be in a superposition of both states. This allows them to solve certain problems much faster than classical computers, especially in areas like cryptography and optimization.
"""
audio_array = generate_audio(text_prompt)

write_wav("/content/english.wav", SAMPLE_RATE, audio_array)
Audio(audio_array, rate=SAMPLE_RATE)

音声合成(日本語)

日本語は短い言葉であれば非常に上手く音声合成をすることができますが,長い文章の時はどんどんホラーのような音声になってしまいます.

text_prompt = """
    ひき肉でーーーす.
"""
audio_array = generate_audio(text_prompt, prompt="cafe")

write_wav("/content/japanese.wav", SAMPLE_RATE, audio_array)
Audio(audio_array, rate=SAMPLE_RATE)

音声合成(複数言語(英語-中国語))

text_prompt = """
    [EN]Machine learning is a branch of artificial intelligence (AI) and computer science which focuses on the use of data and algorithms to imitate the way that humans learn, gradually improving its accuracy.[EN]
    [ZH]神经网络(Neural Network)是模拟人脑工作机制的算法,用于识别模式和处理数据。它包括多个层,每个层都有许多神经元。通过训练数据,神经网络可以不断调整其内部权重,以优化其预测和分类能力。[ZH]
"""
audio_array = generate_audio(text_prompt, language='mix')

write_wav("/content/multilingual.wav", SAMPLE_RATE, audio_array)
Audio(audio_array, rate=SAMPLE_RATE)

様々な音声の選択

以下のリンクから

https://github.com/Plachtaa/VALL-E-X/tree/master/presets

いくつか試しましたが選択する音声ごとに聞き取りやすい言語は異なりました.

またさまざまな感情の音声も用意されています.

text_prompt = """
I'll get serious starting tomorrow
"""

audio_array = generate_audio(text_prompt, prompt="cafe")

write_wav("/content/sample.wav", SAMPLE_RATE, audio_array)
Audio(audio_array, rate=SAMPLE_RATE)

Voice Cloning(音声複製)

自分が手元で用意した音声のデータを使い,音声を複製する方法です.

今回は音声合成したものを利用し,同じ声で音声合成しています

from utils.prompt_making import make_prompt

# 先ほど生成した音声を使う
make_prompt(name="sample", audio_prompt_path="/content/sample.wav",
                transcript="I'll get serious starting tomorrow.")

# whisperが使える時は文章を明示的に与えなくても自動で文字起こしができる
#make_prompt(name="paimon", audio_prompt_path="paimon_prompt.wav")

text_prompt = """
Procrastination is the thief of time
"""
audio_array = generate_audio(text_prompt, prompt="sample")

write_wav("/content/sample2.wav", SAMPLE_RATE, audio_array)
Audio(audio_array, rate=SAMPLE_RATE)

3. おわりに

今回は音声合成モデルのVALL-E Xの紹介でした。英語、日本語、中国語で利用することができ、特に英語では長い文章であっても綺麗な音声で出力することができました。またVoice Cloning(音声複製)では数秒のデータを与えるだけですぐに複製ができました。
記事に誤り等ありましたらご指摘いただけますと幸いです。

4. 参考文献

19
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?