Skip to main content
Version: Latest

AIPlayer Set up

Full setup process (4 steps)
  • Step 1: Add AIPlayer's parent layout to the page you want to use.
  • Step 2: Prepare App ID, authentication key(User Key) that will be used in the Authenticate function.
  • Step 3: Get the AI to use by implementing the Authenticate response.
  • Step 4: Initialize AIPlayer to the desired AI.

You can create AIPlayer and get the View(UserControl) object through the GetObject() function.

// practical use example
private AIPlayer _aiPlayer; // AIPlayer object to be used in cs
public AIPlayerView AIPlayerObject // View (UserControl) of AIPlayer to be used in xaml
{
get => _aiPlayer.GetObject();
private set => OnPropertyChanged(nameof(AIPlayerObject));
}

Step 1. Organize your layout

Configure the View to use AI Human in the XAML file. Create a ContentControl to place the AI and bind the AIPlayer. In the CS file, the property of the actual binding object is defined.

public AIPlayerView AIPlayerObject
{
get => _aiPlayer.GetObject();
private set => OnPropertyChanged(nameof(AIPlayerObject));
}
...
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>

<ContentControl Margin="0" Grid.Column="0" Content="{Binding Path=AIPlayerObject}" />
</Grid>
...

The Authenticate function requires 2 parameters. These two are App ID and User Key information.

UserKey is a unique string generated by DeepBrain AI and should never be disclosed. If you call the API using this authentication key, you will receive available Default AI data and a token to be used in the future.

If token refresh is required because the token expired, it can be refreshed by calling Authenticate() again.

Step 3. Implement Authenticate and Get the AI list

If you have all the necessary Authenticate function parameters mentioned in step 2, you are ready for authentication. Input these parameters inti Authenticate AIHuam.AIAPI.Instance and implement a callback function. If authentication is successful, AI list will be returned. If you do not have permission to any of the AIs, aiList returns null.

public ObservableCollection<AIAPI.AI> AIs { get; private set; }

...

AIAPI.Instance.Authenticate(APPID, USERKEY, (aiList, error) => {
string message = string.Empty;
if (error == null)
{
message = $"Auth Complete, Avaliable Count : {aiList.ai.Length}";

/* e.g.)
"ai":[{"aiName":"vida","aiDisplayName":"Vida","language":"en"},
{"aiName":"bret","aiDisplayName":"Bret","language":"en"},
{"aiName":"danny","aiDisplayName":"Danny","language":"en"},
{"aiName":"kang","aiDisplayName":"Kang","language":"ko"}]
*/

AIs = new ObservableCollection<AIAPI.AI>();
foreach (AIAPI.AI item in aiList.ai)
{
AIs.Add(item);
}
}
else
{
message = $"Auth Error : {error.ToString()}";
}

AIHuman.Utils.Log.Write(message, Log.Level.Info);
});

Step 4. Initialize AIPlayer to the desired AI

After authentication, you can check the list of AIs that can be used and initialize them to the desired AI. First, create the AIPlayerOptions object with the desired AIAPI.AI.aiName as shown in the example code below. If you want to remove the AIPlayer object that you were using before, use the Dispose function to release the resource.

AIPlayerOptions

Used as a parameter to create AIPlayer objects. Valid only at initialization, refer to implementations to use properties or functions of AIPlayer objects at runtime.

AIName

Set the AI you want to initialize.
Assigns the AIList.AI.aiName value acquired by the AIHuman.Core.AIAPI.Authenticate or GetAIList function to this property. If you assign any value, the AIPlayer may not initialize normally.

AIScale

Set the Scale of the AI at the initialization.
The default is 1.0f.

AIMargin

Set the Margin of the AI at initialization.
The default is null.

AISpeed

Set the Speed of the AI at initialization.
The default is 1.0f.

AIDisconnection

Set the Disconnection of the AI at initialization.
The default is false.

AICachingStrategy

Set the local Caching Strategy of the AIPlayer at initialization.
The default is AIHuman.Interface.AIPlayerCachingStrategy.V1.

CacheLimit

Set the Maximum Local Caching Count of the AIPlayer at initialization.
The default is 2000 units. The unit is AIClipSet.

public AIPlayer AIPlayerObject // View Binding object
{
...
}

...

private AIAPI.AI _selectedAI;
public AIAPI.AI SelectedAI
{
get => _selectedAI;
set
{
if (value == null)
{
return;
}

_selectedAI = value;
OnPropertyChanged(nameof(SelectedAI));
UpdateSelectedAI();
}
}

...

private void UpdateSelectedAI()
{
if (_aiPlayer != null)
{
_aiPlayer.Dispose();
_aiPlayer = null;
}

GestureList?.Clear();
SpeakableLanguages?.Clear();

AIPlayerOptions options = new AIPlayerOptions(SelectedAI.aiName);
//options.AICachingStrategy = AIPlayerCachingStrategy.V2; // for using local caching
//options.CacheLimit = 300; // for using local caching Limit
//options.AIScale = 1.2f; // for AI Human Scale
//options.AISpeed = 1.2f; // for AI Human Speed
//options.AIMargin = AIMargin; // for AI Human Position
//options.AIDisconnection = true; // for AI Human network on/off-line

_aiPlayer = new AIPlayer(options, this);
AIPlayerObject = _aiPlayer.GetObject();

...
}

Depending on the option, the AIPlayer changes to an operable standby (IDLE) state after initialization (download and load resources) is completed. It can also receive a callback as a second parameter in the AIPlayer constructor.

Dev Tips!
  • You can set various options using AIPlayerOptions objects!
  • You can inherit AIHuman.Interface.IAIPlayerCallback and receive a callback for events, etc. through the implemented object!
  • The API Reference also specifies this!

Callbacks such as AI events will be covered in the next chapter.