AIBO Remote Framework (for ERS-7) Specification

2005/10/06


1. Overview

AIBO Remote Framework is a Windows PC application development environment which enables you to make software that works on a Windows PC. The software can control an AIBO (ERS-7) via wireless LAN. You can use AIBO Remote Framework with the AIBO MIND 3 "Memory Stick" and ERS-7 robot. An application programmer can make programs using the AIBO Remote Framework API to control AIBO remotely. AIBO Remote Framework (for ERS-7) contains libraries which connect your PC and AIBO (ERS-7) wirelessly allowing you to send and receive data.

This document describes the AIBO Remote Framework API. First, we are going to explain the overview of the AIBO Remote Framework API. After that we will explain each function of the API.

2. Composition

2.1 Modules

In this chapter, we explain the components of AIBO Remote Framework. The application using AIBO Remote Framework uses the following three modules:

(Refer Fig. 2.1)

 
* AIBO Remote Framework is outlined by the red dotted line

Fig 2.1 AIBO Remote Framework Composition

Multiple AIBOs and PC applications can be connected at the same time. However, in this case there is only one server program.
The AIBO Remote Framework has four dynamically linked libraries (DLL);

Figure 2.2 describes the module structure of these DLLs and AIBO Objects.

Fig 2.2 Module structure diagram

2.2 Function List

AIBO Remote Framework function list

* Connect/Disconnect the network to AIBO
Establish a network connection with a PC and AIBO. An IP address is needed to connect to AIBO.

* Lock/Unlock the connection to the VirtualAIBO Server
The client application can lock the connection to the VirtualAIBO Server for exclusive control when there are multiple client applications.

* Control services of AIBO
Start/Stop services on AIBO. These services are FTP, Sensor, Image, and Audio transmission. You can get the status of each service. If the service is not started, the API's relation with the service will not work. You should start the service before using the API's relation with it.

* Get semantics data
Semantics data can be retrieved. Semantics (SemID) are defined in the SemID.h header file. Some semantics also have SubInfo. SubInfo are described in Semantics.txt

* FTP
AIBO Remote Framework has FTP functions. The FTP is Memory Mapped FTP (MMFTP), the data is stored in memory. When you play user made contents (MOTION, AUDIO, LED), you should transfer the ODA files from the PC to AIBO using MMFTP. AIBO Remote Framework doesn't have the capability to write files directly to the Memory Stick Media in AIBO.

* Get Sensor data
Sensor data can be retrieved.

* Get Camera Image data
You can get camera image data from AIBO. The method is described in 3.2.1 Get Image Data

* Setting Camera parameters
The properties of AIBO's camera (Exposure, Shutter speed, AE(Auto Exposure), AWB(Auto White Balance)) can be set.

* Send/Receive Audio Data
You can transfer audio data from the PC to AIBO and play the audio data through AIBO's speaker. The method is described in 3.2.2 Send Audio Data.
You can also transfer audio data from AIBO's microphones to the PC. The method is described in 3.2.3 Receive Audio Data.

* Control Motion
You can make AIBO play built-in contents that are categorized by Large/Middle/Small values by sending the LMS command. You can make AIBO play built-in contents that are specified by MWCID(Middle Ware Command ID). Some major motions (walk, change posture, change head angle, kick, and heading) are exclusive API functions.

* Internal/External Control
AIBO can be controlled internally or externally. In the internal control mode, AIBO cannot receive control commands (ex. changing the head angle, walking, etc.), but you can get semantics data and sensor data.

* Control Autonomous Objects
You can start/stop autonomous object services. Autonomous object services are voice recognition, moving object recognition, face detection, face recognition, visual pattern recognition, target object recognition, cliff detection, and self recharging.

* Display 3D AIBO
A 3D AIBO model can be displayed using Direct X

* AIBO Search using UPnP
AIBO can be searched for by using UPnP (Universal Plug and Play)

* TTS
You can use the TTS (Text to Speech) engine and make AIBO speak by converting text to voice (in the PC). You can also make WAVE data by using TTS. (WAVE data cannot be created when you use the Sony TTS engine)

* Other
+ Get remaining battery level
+ Set AIBO's status when the connection is disconnected
+ Stop motion (when it is playing)
+ Get the local IP address
+ Set AIBO's clock
+ Get the MAC address of AIBO
+ Authenticate by User ID/Password


3. VirtualAIBO Client

3.1 Sending Messages

3.1.1 Between VirtualAIBO Client - VirtualAIBO Server

In AIBO Remote Framework, data transmission between VirtualAIBO Client and VirtualAIBO Server uses Windows Messaging. In the Fig 2.2, the thick line between VAIBOClient.DLL and VAIBOServer represents Windows Messages. VirtualAIBO Client (*.dll) creates Windows Messages and sends them to the application window.

3.1.2 Between Application - VirtualAIBO Client

The following Windows Messages are sent from the VirtualAIBO Client to the application.

(1) WM_VAIBO_CONNECT
Description : Establish network connection notification
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : 0

(2) WM_VAIBO_DISCONNECT
Description : Finished network disconnection notification
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : 0

(3) WM_VAIBO_REMOTE_NOTIFY
Description : Get changing Internal/External control notification
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : 0 InternalControl 1 ExternalControl

(4) WM_VAIBO_SEMANTICS
Description : Get semantics message notification
wParam : Type of semantics message
+ Upper word is AIBO ID
+ Lower word is
SEM_STATUS // Condition transition notice
SEM_START // Start notice
SEM_DONE // End notice
SEM_ERROR // Error notice
SEM_RESULT // Result notice
SEM_FINISHED // // Finished self charging, or finished picking up its AIBone

lParam : Message Data (Defined in the VAIBODef.h header file)

(Note) Don't call VAIBO class functions that block/wait for a result in functions that process SEM_STATUS, SEM_RESULT, or SEM_FINISHED semantics messages. To send the result and to return from the blocking function, your program must return from the function that is processing the semantics message. But, the blocking function is located in the function that is processing result messages, so the program deadlocks and will not continue. In the following example, the two functions "SendCmd" and "SetRobotObjectMode" block and wait for the result, so this sample will deadlock.

// Dead Lock Sample
// CVAIBO *m_pVAibo
// ON_REGISTERED_MESSAGE(WM_VAIBO_SEMANTICS, OnVAIBOSemantics)
LRESULT CBaseClientDlg::OnVAIBOSemantics( WPARAM wParam, LPARAM lParam )
{
    if ( semState == SEM_RESULT )
    {
        m_pVAibo->SendCmd( APPCMD_IMAGE_PLAY, TRUE);
        m_pVAibo->SetRobotObjectMode(eRobotObjectRecognizeObjectPink, eRobotObjectModeStart );
    }
}

(5) WM_VAIBO_INPUT_SEMANTICS
Description : Get input semantics notification
This message is needed to call VAIBO::GetInputSemantics() to get the data
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : 0

(6) WM_VAIBO_SENSOR_DATA
Description : Get sensor data notification
wParam : Upper word is AIBO ID. Lower word is number of sensor data
lParam : pointer to SensorRec data

(7) WM_VAIBO_PRODUCTID
Description : Get ProductID notification
This message is needed to call VAIBO::GetProductID() to get the data
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : 0

(8) WM_VAIBO_BATTERY_LVL
Description : Remaining battery level notification
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : remaining battery level

(9) WM_MMFTP_SENDING
Description : FTP file transfer notification
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : Data size that is transferred by the ftp service

(10) WM_IMAGETP_UPDATE
Description : Update image data notification
This message is needed to call VAIBO::ImageGetData() to get the image (JPEG) data
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : Received data size

(11) WM_AUDIOTP_UPDATE
Description : Update audio data notification
This message is needed to call VAIBO::AudioGetData() to get the audio (PCM) data
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : Received data size

(12) WM_VAIBO_CLIENT_UPDATE
Description : Add/Remove client connected to the server notification
wParam : Upper word is AIBO ID. Lower word is 1(Add) or 0(Remove)
lParam : Windows handle of client

(13) WM_VAIBO_LOCK
Description : Server lock change notification
wParam : Upper word is AIBO ID. Lower word is 0.
lParam : 1(Lock) or 0(Unlock)


3.2 Shared Memory

The Shared Memory system is used when data is sent and received between the VirtualAIBO Server and the User application. The data can be Image data, Audio data, and server stored information (Windows handle, sensor data, posture data, AIBO's status, battery level, and semantics). Four shared memory areas are used: Image, Audio (Send), Audio (Receive), and server stored information. Image, Audio (Send), and Audio (Receive) shared memory areas are created when the VirtualAIBO Server is started. Sixteen shared memory areas are created for each type, so the maximum number of AIBO that can be connected to the VirtualAIBO Server is 16.

3.2.1 Get Image Data

(1) VirtualAIBO Server stores image data to the shared memory (Key:VAIBOImageObject*).
(2) VirtualAIBO Server sends a Windows Message to VirtualAIBO Client.
(3) VirtualAIBO Client can get the image data from the shared memory (Key:VAIBOImageObject*).
(4) After getting the image data, Virtual AIBO Client sends a Windows Message (WM_IMAGETP_UPDATE) to the user application.
(5) When user application receives the Windows Message (WM_IMAGETP_UPDATE) from VirtualAIBO Client, it can retrieve the image data by using the Remote Framework API (VAIBO::ImageGetData). The user application can send the Windows handle to VirtualAIBO Client by using the Remote Framework API (VAIBO::ImageSetWindowHandle). VirtualAIBO Client will automatically draw the image on the window that was sent from the user application.

(+) VAIBOImageObject* ; "*" specify AIBO's connection ID that is a number from 1 to 16.

3.2.2 Send Audio Data

(1) To send audio data from the PC to AIBO, the user application should call the Remote Framework API (VAIBO::AudioSendData).
(2) VirtualAIBO Client stores the audio data to the shared memory (Key:VAIBOAudioSendObject*).
(3) VirtualAIBO Client sends a Windows Message to the VirtualAIBO Server after the audio data has been stored in the shared memory.
(4) VirtualAIBO Server sends the audio data from the shared memory (Key:VAIBOAudioSendObject*) to AIBO.

(+) VAIBOAudioSendObject* ; "*" specify AIBO's connection ID that is a number from 1 to 16.

3.2.3 Receive Audio Data

(1) VirtualAIBO Server stores the audio data retrieved from AIBO to the shared memory (Key:VAIBOAudioRecvObject*).
(2) VirtualAIBO Server sends a Windows Message to the VirtualAIBO Client.
(3) VirtualAIBO Client can get the audio data from the shared memory (Key:VAIBOAudioRecvObject*).
(4) VirtualAIBO Client sends a Windows Message (WM_AUDIOTP_UPDATE) to the user application.
(5) When the user application receives the Windows Message (WM_AUDIOTP_UPDATE), it can retrieve the audio data by using the Remote Framework API (VAIBO::AudioGetData), and process the audio data.

(+) VAIBOAudioRecvObject* ; "*" specify AIBO's connection ID that is a number from 1 to 16.

3.2.4 Get the other Server Stored Information

The other server stored information (Windows handle, sensor data, posture data, AIBO's status, battery level, and semantics) can be retrieved by using the shared memory system. The process is the same as 3.2.1-3. Data is passed between VirtualAIBO Server and VirtualAIBO Client by using shared memory. The user application can get the data with the same method as getting image and audio data.

4. API List

4.1 VAIBOClient

API Name Function
CVAIBO::CVAIBO Constructor
CVAIBO::~CVAIBO Destructor
CVAIBO::Connect Connect to AIBO
CVAIBO::Disconnect Disconnect from AIBO
CVAIBO::SetLock Server Lock/Unlock
CVAIBO::GetProductID Get AIBO's product ID
CVAIBO::GetRemoteMACAddress Get AIBO's MAC address
CVAIBO::GetRobotDesign Get the robot design
CVAIBO::RequestNetService Request to start the network service
CVAIBO::SendCmd Send a command to AIBO
CVAIBO::PlayMotion Play a motion that is categorized with Larger/Middle/Small/Level values
CVAIBO::PlayMotionWithAngle Play a motion that is categorized with Larger/Middle/Small/Level values and angle parameters
CVAIBO::IsConnect Get the network connection status
CVAIBO::IsLock Get the server lock/unlock status
CVAIBO::GetStateSensorTP Get the Open/Close status of SensorTP
CVAIBO::GetStateImageTP Get the Open/Close status of ImageTP
CVAIBO::GetStateAudioTP Get the Open/Close status of AudioTP
CVAIBO::GetStateNetAudio Get the Open/Close status of NetAudio
CVAIBO::IsFTPOpen Get the Open/Close status of the FTP connection
CVAIBO::GetInputSemantics Get ImputSemantics data
CVAIBO::GetSemInfo Get Semantics information
CVAIBO::SensorTransferStart Start data transmission of SensorTP
CVAIBO::SensorTransferStop Stop data transmission of SensorTP
CVAIBO::SensorGetData Get SensorTP data
CVAIBO::SensorGetSkipRate Get the skip rate of SensorTP
CVAIBO::SensorSetSkipRate Set the skip rate of SensorTP
CVAIBO::ImageInit Initialize the Image object
CVAIBO::ImageOpen Start transmitting Image data
CVAIBO::ImageClose Stop transmitting Image data
CVAIBO::ImagePause Pause transmitting Image data
CVAIBO::ImageResume Resume transmitting Image data
CVAIBO::ImageGetData Get Image data
CVAIBO::ImageSetWindowHandle Set the Windows handle for displaying Image data
CVAIBO::ImageOutputCaptureData Take a Picture
CVAIBO::ImageGetFrameRate Get the frame rate of Image data transmission
CVAIBO::CameraSetModeDefault Set the camera mode to automatic
CVAIBO::CameraSetModeManual Set the camera mode to manual settings
CVAIBO::CameraSetParamExposure Set camera parameter (exposure)
CVAIBO::CameraSetParamShutterSpeed Set camera parameter (shutter speed)
CVAIBO::CameraSetModeAEAWB Set camera settings AE(Auto Exposure) and AWB(Auto White Balance)
CVAIBO::AudioInit Initialize the Audio object
CVAIBO::AudioGetOpen Start receiving Audio data
CVAIBO::AudioSendOpen Open the network port for AudioStream
CVAIBO::AudioSendSetMode Set AudioMode
CVAIBO::AudioClose Stop receiving Audio data
CVAIBO::AudioGetData Get Audio data
CVAIBO::AudioSendData Send Audio data by AudioStream
CVAIBO::AudioSendWAVFile Send Audio data (File) by AudioStream
CVAIBO::AudioSendPlay Start playing AudioStream
CVAIBO::AudioSendStop Stop playing AudioStream
CVAIBO::FTPMMSendWAVFile Send WAVE file by using MMFTP
CVAIBO::FTPMMSendMWCFile Send MWC file by using MMFTP
CVAIBO::FTPMMSendMOTIONFile Send MOTION file by using MMTFP
CVAIBO::FTPMMSendAUDIOFile Send AUDIO file by using MMFTP
CVAIBO::FTPMMSendLEDFile Send LED file by using MMFTP
CVAIBO::UpdateContents Update contents
CVAIBO::PlayContents Play contents
CVAIBO::DoKick Kick
CVAIBO::DoHeader Header
CVAIBO::DoWalking Walk
CVAIBO::DoApproach Walk to a target
CVAIBO::DoGetOffStation Get off of the station
CVAIBO::SetPosture Set posture
CVAIBO::GetPosture Get posture
CVAIBO::GetStatus Get current status of AIBO
CVAIBO::ChangeHeadAngle Move head
CVAIBO::TurnBody Turn body
CVAIBO::MotionStop Stop motion
CVAIBO::GetBatteryLevel Get remaining battery level
CVAIBO::SetBatteryLevelNotify Set remaining battery level notification ON/OFF
CVAIBO::ExternalControl Make AIBO remotely controlled
CVAIBO::InternalControl Make AIBO internally controlled
CVAIBO::ChangeDisconnectMode Set AIBO's mode when it is disconnected
CVAIBO::SetRobotObjectMode Start/Stop autonomous services
CVAIBO::SetClock Set internal clock
CVAIBO::IsControlReady Is AIBO controllable?
CVAIBO::IsRemote Is AIBO controlled remotely?
CVAIBO::SetObserverWnd Set message observer window
CVAIBO::GetLocalIPAddress Get Local IP address
CVAIBO::GetLastCmdID Get last CmdID
CVAIBO::GetRobotObjectMode Get the status of internal objects in AIBO
CVAIBO::GetProtocolVersion Get the protocol version of each service
CVAIBO::DoRobotFunction Execute an internal AIBO function
CVAIBO::StopRobotFunction Stop executing an internal AIBO function
CVAIBO::VPRSetMode Set VPR mode
CVAIBO::VPRTrainModel Train VPR model
CVAIBO::VPRRemoveModel Remove VPR model
CVAIBO::VPRQueryModel Query trained VPR model
CVAIBO::VPRGetImage Get the training image of a VPR model
CVAIBO::SetVolume Set sound volume
CVAIBO::RequestVolume Get sound volume
CVAIBO::SetUserIdPwd Set user ID and Password
CVAIBO::GetUserIdPwd Get user ID and Password
CVAIBO::ImageGetInfo Get image recognition setting information
CVAIBO::ImageGetRecogData Get image recognition data
CATPDirectSound::CATPDirectSound Constructor
CATPDirectSound::~CATPDirectSound Destructor
CATPDirectSound::Init Initialize class
CATPDirectSound::StartPlay Start playing audio
CATPDirectSound::EndPlay Stop playing audio
CATPDirectSound::PlayWaveData Play wave data
CATPDirectSound::StartCapture Start capturing audio
CATPDirectSound::EndCapture Stop capturing audio

Header: The CVAIBO class is defined in VAIBO.h. The CATPDirectSound class is defined in ATPDirectSound.h.
Library: VAIBOClient.lib
[+] VAIBOClient uses ijl15.dll

4.2 VAIBO3D

API Name Function
CAIBO3D::CAIBO3D Constructor
CAIBO3D::~CAIBO3D Destructor
CAIBO3D::Create3D Create an AIBO 3D model
CAIBO3D::Show Show/Hide the AIBO 3D model
CAIBO3D::HomePosition Move the AIBO 3D model to the home position
CAIBO3D::RotateBody Rotate the AIBO 3D model
CAIBO3D::GetBodyAngle Get the body angle of the AIBO 3D model
CAIBO3D::Set3DPosture Set the posture of the AIBO 3D model
CAIBO3D::MoveAIBOAnimation Animation of the AIBO 3D model moving
CAIBO3D::RotateAIBOAnimation Animation of the AIBO 3D model rotating
CAIBO3D::PlayAnimation Play the animation of the AIBO 3D model
CAIBO3D::StopAnimation Stop the animation of the AIBO 3D model
CAIBO3D::ClearTrack Clear the motion path data
CAIBO3D::DrawTrack Draw the motion path
CAIBO3D::RotateJoint Rotate each joint of the AIBO 3D model
CAIBO3D::SetColor Set the color of the AIBO 3D model
CAIBO3D::GetColor Get the color of the AIBO 3D model
CAIBO3D::MoveCamera Move camera view
CAIBO3D::ZoomCamera Zoom camera
CAIBO3D::RotateCamera Rotate camera
CAIBO3D::GetCameraPos Get camera position
CAIBO3D::GetCameraAngle Get camera angle
CAIBO3D::SetLight Set light
CAIBO3D::SetFloorTexture Set floor texture
CAIBO3D::SetBackTexture Set background texture
CAIBO3D::DeleteFloorTexture Delete floor texture
CAIBO3D::DeleteBackTexture Delete background texture
CAIBO3D::SetLocalRotationX Set the X-axis rotation of the AIBO 3D model in local coordinates
CAIBO3D::SetLocalRotationY Set the Y-axis rotation of the AIBO 3D model in local coordinates
CAIBO3D::SetLocalRotationZ Set the Z-axis rotation of the AIBO 3D model in local coordinates
CAIBO3D::SetLocalRotation Set the rotation of the AIBO 3D model in local coordinates
CAIBO3D::SetLocalTransfer Set the parallel translation of the AIBO 3D model in local coordinates
CAIBO3D::GetLocalRotation Get the rotation of the AIBO 3D model in local coordinates
CAIBO3D::GetLocalTransfer Get the parallel translation of the AIBO 3D model in local coordinates
CAIBO3D::ShowCopyModel Show/Hide a duplicate model
CAIBO3D::IsShowCopyModel Get the status (shown/hidden) of the duplicate model
CAIBO3D::SetCopyModelRotationX Set the X-axis rotation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::SetCopyModelRotationY Set the Y-axis rotation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::SetCopyModelRotationZ Set the Z-axis rotation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::SetCopyModelRotation Set the rotation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::SetCopyModelTransfer Set the parallel translation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::GetCopyModelRotation Get the rotation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::GetCopyModelTransfer Get the parallel translation of the duplicate AIBO 3D model in local coordinates
CAIBO3D::IsShowDrawText2D Get the status (shown/hidden) of the 2D text
CAIBO3D::ShowDrawText2D Show/Hide the 2D text
CAIBO3D::CreateDrawText2DSurface Create the surface for the 2D text
CAIBO3D::SetDrawText2DString Set the string of the 2D text
CAIBO3D::SetDrawText2DFont Set the font of the 2D text
CAIBO3D::SetDrawText2DColor Set the color of the 2D text
CAIBO3D::SetDrawText2DBackColor Set the background color of the 2D text
CAIBO3D::SetDrawText2DBackTransparent Set the transparency of the 2D text
CAIBO3D::SetDrawText2DDrawArea Set the drawing area of the 2D text
CAIBO3D::IsShowDrawText3D Get the status (shown/hidden) of the 3D text
CAIBO3D::ShowDrawText3D Show/Hide the 3D text
CAIBO3D::CreateDrawText3DSurface Create the surface of the 3D text
CAIBO3D::SetDrawText3DString Set the string of the 3D text
CAIBO3D::SetDrawText3DFont Set the font of the 3D text
CAIBO3D::SetDrawText3DColor Set the color of the 3D text
CAIBO3D::SetDrawText3DBackColor Set the background color of the 3D text
CAIBO3D::SetDrawText3DBackTransparent Set the transparency of the 3D text
CAIBO3D::SetDrawText3DBasePoint Set the base point of the 3D text
CAIBO3D::SetDrawText3DDrawArea Set the drawing area of the 3D text
CAIBO3D::GetVersion Get the version

Header: AIBO3D.h.
Library: AIBO3D.lib

4.3 CPCINFO

API Name Function
CCpcInfo::CCpcInfo Constructor
CCpcInfo::~CCpcInfo Destructor
CCpcInfo::GetJointArray Get the array of joint IDs
CCpcInfo::GetSensorArray Get an array of Primitive Locator IDs and sensor data
CCpcInfo::GetPrimitiveLocator Get a Primitive Locator

Header: CpcInfo.h
Library: CpcInfo.lib

4.4 VAIBOUPnP

API Name Function
DiscoveryAIBOByUPnP Search for AIBO using UPnP

Header: VAIBOUPnPClient.h
Library: VAIBOUPnP.lib

4.5 VAIBOTTS

API Name Function
CVAIBOTTS::Init Initialize library
CVAIBOTTS::End End library
CVAIBOTTS::GetTTSEngineNum Get the number of TTS engines
CVAIBOTTS::GetTTSEngineName Get the name of a TTS engine
CVAIBOTTS::GetTTSEngineKind Get the type of TTS engine
CVAIBOTTS::GetVoiceEngine Get the current TTS engine
CVAIBOTTS::SetVoiceEngine Set the current TTS engine
CVAIBOTTS::Speak Generate speech from a string using TTS
CVAIBOTTS::MakeWaveFile Generate a WAV file from a string using TTS
CVAIBOTTS::MakePcmData Generate PCM data from a string using TTS
CVAIBOTTS::SetVoiceSpeed Set VOICE speed
CVAIBOTTS::SetVoicePitch Set VOICE pitch
CVAIBOTTS::SetVoiceAccent Set VOICE accent
CVAIBOTTS::SetVoiceVolume Set VOICE volume
CVAIBOTTS::SetOutputFormat Set PCM data output format
CVAIBOTTS::GetVoiceSpeed Get VOICE speed
CVAIBOTTS::GetVoicePitch Get VOICE pitch
CVAIBOTTS::GetVoiceAccent Get VOICE accent
CVAIBOTTS::GetVoiceVolume Get VOICE volume
CVAIBOTTS::GetOutputFormat Get PCM data output format
CVAIBOTTS::GetWordNumInLexicon Get the number of registered words in the lexicon
CVAIBOTTS::GetWordInLexicon Get a registered word in the lexicon
CVAIBOTTS::GetPronunciationInLexicon Get the pronunciation of a registered word in the lexicon
CVAIBOTTS::GetPartInLexicon Get a part of a registered word in the lexicon
CVAIBOTTS::AddWordInLexicon Add a word to the lexicon
CVAIBOTTS::DeleteWordInLexicon Delete a word from the lexicon

Header: VAIBOTTS.h
Library: VAIBOTTS.lib

[+] ssnykp.dll, sony_tts_dll.dll, ssnykp.dll, udlib.dll, posattr.dll, and uwkanjidll.dll are used in CAIBOTTS.