Voiceful allows us to create new digital voice experiences for apps and services. It features speech and singing synthesis, transformation, pitch-correction, time-alignment, audio-to-midi, among others.
Our Native SDK can be integrated as cross-platform C++ libraries for Mobile (iOS/Android), Desktop (macOS/Windows/Linux) or Server applications.
Our expressive voice generation approach, based on Deep Learning, was initially developed to generate artificial singing voice with high realism. It can learn a model from existing recordings of any individual and generate new speech or singing content. +More info
We can transform an actor's voice into a monster vocalization for a film, change a male voice into a kid or elder voice, and integrate it in real-time in games, social apps, or music applications. +More info
VoAlign analyzes and automatically corrects a voice recording without losing quality. We can align it to a reference recording for lip-syncing or ADR, or apply pitch correction automatically to an estimated musical key.
+More info
This voice analysis tool extracts acoustic and musical information from a voice recording. Data can be sent in real-time, or exported in a readable format to be used in applications such as visualization, classification, monitoring or singing rating. +More info
Beyond voice signals, Voiceful includes also a high-quality time-scaling and pitch-shifting to process any audio content (music, field recordings, dialogues, etc). +More info
VoMix works as a virtual DAW with all standard audio effects (autogain, compression, EQ, reverb, delay, panning, mixing, etc.) to deliver audio in a professional-like quality. +More info
See below an example code for integrating our SDK tools in C++.
#include "VoTransLib_api.h"
/***************************************************************
C++ usage example for VOICEFUL VoTrans Stand Alone SDK
The below code is incomplete, it lacks audio in/out that will
be implemented using standard audio driver libraries or
reading from audio files on disk
****************************************************************/
//VoTrans object
void* mVoTrans = NULL;
//parameters
float gain_val = 0.9f;
float pitch_val = 3.f;
float mTimbreParameters[5] = { 0.5f, 0.6f, 0.7f, 0.55f, 0.5f };
float vibratodepth_val = 0.2f;
float vibratofreq_val = 0.3f;
float robot_val = 0.0f;
float alien_val = 0.0f;
float pitchcorrection_val = 0.0f;
float harmonizer_val = 0.0f;
//INITIALIZATION OF THE LIBRARY
int init()
{
int mnCh = 2; //number of channels
float mSampleRate = 44100.f;
int mBlockSize = 256;
mVoTrans = VT_Create();
//CONFIGURATION
int highQuality = 1;
int noisy = 0;
int bypass = 0;
VT_Configure(mnCh, mSampleRate, mBlockSize,
highQuality, noisy, bypass, mVoTrans);
VT_SetPreAnalysis(NULL, mVoTrans);
VT_BeginProcess(mVoTrans);
}
//PROCESS (in loop)
//This function will be the audio driver callback if used in realtime or
//called in a loop while reading from a disk file or memory buffer if
//transforming offline samples
void ProcessCallback(float* inbuffer, float* outbuffer)
{
//set parameters (e.g. from gui)
VT_SetGainParameter(gain_val, mVoTrans);
VT_SetPitchTranspositionInSemitonesParameter(pitch_val, mVoTrans);
VT_SetTimbreParameters(mTimbreParameters, mVoTrans);
VT_SetVibratoDepthParameter(vibratodepth_val, mVoTrans);
VT_SetVibratoFreqParameter(vibratofreq_val, mVoTrans);
VT_SetRobotParameter(robot_val, mVoTrans);
VT_SetAlienParameter(alien_val, mVoTrans);
VT_SetPitchCorrectionParameter(pitchcorrection_val, mVoTrans);
VT_SetHarmonizerParameter(harmonizer_val, mVoTrans);
//inbuffer & outbuffer memory is allocated by the user,
//DoProcessFloat fills the outbuffer with a maximum of
//configured blocksize (e.g. mBlockSize=256)
int n = VT_DoProcessFloat(inbuffer, outbuffer, mVoTrans);
}
//DESTROY
void end()
{
VT_EndProcess(mVoTrans);
VT_Destroy(mVoTrans);
}