ailia Tech BLOG

ailia AI Voiceとailia AI SpeechにPython APIを追加

音声合成を行うことができるailia AI Voiceと、音声認識を行うことができるailia AI SpeechにPython APIを追加しました。

ailia AI Voice and AI Speech for Python

ailia AI Voiceとailia AI Speechについて

ailia AI VoiceはGPT-SoVITSを使用した音声合成を、ailia AI SpeechはWhisperを使用した音声認識を行うことができるライブラリです。

従来、これらのライブラリはC++、C#、Flutter向けのBindingを提供していましたが、新たにPython向けのBindingの提供を開始しました。

ailia AI Voiceとailia AI Speechは依存関係が非常に少なく、Pytorchを使用せずにONNXで動作するため、フレームワークのバージョンに依存しない安定した運用を実現します。また、Pythonでプロトタイピングした後に、UnityやFlutter向けのBindingを使用してiOSやAndroidのモバイルデバイスにデプロイすることも可能です。

インストール

pipでインストール可能です。

pip3 install ailia_voice  
pip3 install ailia_speech

使用方法

ailia AI Voiceとailia AI SpeechのPython Bindingでは、非常に短いコードで音声合成と音声認識を実現します。モデルファイルも自動的にダウンロードされます。

ailia AI Voiceによる音声合成の使用方法は下記となります。reference_audio_girl.wavをダウンロードし、このファイルの声色を元に音声合成を行い、ファイルに保存します。

import ailia_voice  

import librosa  
import time  
import soundfile  

import os  
import urllib.request  

# Load reference audio  
ref_text = "水をマレーシアから買わなくてはならない。"  
ref_file_path = "reference_audio_girl.wav"  
if not os.path.exists(ref_file_path):  
 urllib.request.urlretrieve(  
  "https://github.com/ailia-ai/ailia-models/raw/refs/heads/master/audio_processing/gpt-sovits/reference_audio_captured_by_ax.wav",  
  "reference_audio_girl.wav"  
 )  
audio_waveform, sampling_rate = librosa.load(ref_file_path, mono=True)  

# Infer  
voice = ailia_voice.GPTSoVITS()  
voice.initialize_model(model_path = "./models/")  
voice.set_reference_audio(ref_text, ailia_voice.AILIA_VOICE_G2P_TYPE_GPT_SOVITS_JA, audio_waveform, sampling_rate)  
buf, sampling_rate = voice.synthesize_voice("こんにちは。今日はいい天気ですね。", ailia_voice.AILIA_VOICE_G2P_TYPE_GPT_SOVITS_JA)  

# Save result  
soundfile.write("output.wav", buf, sampling_rate)

ailia AI Speechによる音声認識の使用方法は下記となります。demo.wavをダウンロードし、このファイルに対して音声認識を行います。戻り値はgeneratorとなるため、長い音声でも認識結果を順番に取得可能です。

import ailia_speech  

import librosa  

import os  
import urllib.request  

# Load target audio  
input_file_path = "demo.wav"  
if not os.path.exists(input_file_path):  
 urllib.request.urlretrieve(  
  "https://github.com/ailia-ai/ailia-models/raw/refs/heads/master/audio_processing/whisper/demo.wav",  
  "demo.wav"  
 )  
audio_waveform, sampling_rate = librosa.load(input_file_path, mono=True)  

# Infer  
speech = ailia_speech.Whisper()  
speech.initialize_model(model_path = "./models/", model_type = ailia_speech.AILIA_SPEECH_MODEL_TYPE_WHISPER_MULTILINGUAL_SMALL)  
recognized_text = speech.transcribe(audio_waveform, sampling_rate)  
for text in recognized_text:  
  print(text)

パラメータの指定

コンストラクタにailia SDKに渡すパラメータを指定可能です。GPUを使用する場合、下記のように設定します。

import ailia  
import ailia_voice  
import ailia_speech  

env_id = ailia.get_gpu_environment_id()  
voice = ailia_voice.GPTSoVITS(env_id = env_id)  
speech = ailia_speech.Whisper(env_id = env_id)

オフラインでの動作

model_pathにAIモデルのファイルが存在する場合、音声合成と音声認識が完全にオフラインで動作します。

音声認識の途中結果の表示

Whisperのcallbackに関数を与えることで、音声認識の途中結果を取得することが可能です。

import ailia_speech  

def f_callback(text):  
 print(text)  

speech = ailia_speech.Whisper(callback = f_callback)

ドキュメント

基本的な使用方法はpypiのページを参照してください。

ailia-voiceailia AI Voicepypi.org

ailia-speechailia AI Speechpypi.org

APIドキュメントは下記のailia-sdkのページを参照してください。

GitHub - ailia-ai/ailia-sdk: cross-platform high speed inference SDKcross-platform high speed inference SDK. Contribute to ailia-ai/ailia-sdk development by creating an account on GitHub.github.com


アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。