aboutsummaryrefslogtreecommitdiff
path: root/mp/src/utils/phonemeextractor/talkback.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/utils/phonemeextractor/talkback.h')
-rw-r--r--mp/src/utils/phonemeextractor/talkback.h1464
1 files changed, 732 insertions, 732 deletions
diff --git a/mp/src/utils/phonemeextractor/talkback.h b/mp/src/utils/phonemeextractor/talkback.h
index 3a1b179a..bb6ee808 100644
--- a/mp/src/utils/phonemeextractor/talkback.h
+++ b/mp/src/utils/phonemeextractor/talkback.h
@@ -1,732 +1,732 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-// =============================================================================
-// Interface to the LIPSinc TalkBack 1.1 library (TalkBack_*.lib).
-//
-// Copyright � 1998-2002 LIPSinc. All rights reserved.
-
-#if !defined(TalkBack_h)
-#define TalkBack_h
-
-#include <stddef.h> // size_t.
-
-// Enforce a C API.
-#if defined(__cplusplus)
-extern "C"
-{
-#endif
-
-// -----------------------------------------------------------------------------
-// Use the preprocessor to make the new API compatible with the old one.
-
-#define TalkbackStartupLibrary TalkBackStartupLibrary
-#define TalkbackShutdownLibrary TalkBackShutdownLibrary
-#define TalkbackGetVersion TalkBackGetVersion
-#define TalkbackGetVersionString TalkBackGetVersionString
-#define TalkbackCheckSoundFile TalkBackCheckSoundFile
-#define TalkbackCheckSpokenText TalkBackCheckSpokenText
-#define TalkbackGetErrorString TalkBackGetErrorString
-#define TalkbackGetAnalysis TalkBackGetAnalysis
-#define TalkbackFreeAnalysis TalkBackFreeAnalysis
-#define TalkbackGetFirstFrameNum TalkBackGetFirstFrameNum
-#define TalkbackGetLastFrameNum TalkBackGetLastFrameNum
-#define TalkbackGetFrameStartTime TalkBackGetFrameStartTime
-#define TalkbackGetFrameEndTime TalkBackGetFrameEndTime
-#define TalkbackGetNumPhonemes TalkBackGetNumPhonemes
-#define TalkbackGetPhonemeEnum TalkBackGetPhonemeEnum
-#define TalkbackGetPhonemeStartTime TalkBackGetPhonemeStartTime
-#define TalkbackGetPhonemeEndTime TalkBackGetPhonemeEndTime
-#define TalkbackInsertPhoneme TalkBackInsertPhoneme
-#define TalkbackDeletePhoneme TalkBackDeletePhoneme
-#define TalkbackChangePhonemeStart TalkBackChangePhonemeStart
-#define TalkbackChangePhonemeEnd TalkBackChangePhonemeEnd
-#define TalkbackChangePhonemeEnum TalkBackChangePhonemeEnum
-#define TalkbackGetNumWords TalkBackGetNumWords
-#define TalkbackGetWord TalkBackGetWord
-#define TalkbackGetWordStartTime TalkBackGetWordStartTime
-#define TalkbackGetWordEndTime TalkBackGetWordEndTime
-#define TalkbackGetNumSpeechTargetTracks TalkBackGetNumSpeechTargetTracks
-#define TalkbackGetNumSpeechTargetKeys TalkBackGetNumSpeechTargetKeys
-#define TalkbackGetSpeechTargetKeyInfo TalkBackGetSpeechTargetKeyInfo
-#define TalkbackGetSpeechTargetValueAtFrame TalkBackGetSpeechTargetValueAtFrame
-#define TalkbackGetDominantSpeechTargetAtFrame TalkBackGetDominantSpeechTargetAtFrame
-#define TalkbackGetSpeechTargetValueAtTime TalkBackGetSpeechTargetValueAtTime
-#define TalkbackGetSpeechTargetDerivativesAtTime TalkBackGetSpeechTargetDerivativesAtTime
-#define TalkbackGetNumGestureTracks TalkBackGetNumGestureTracks
-#define TalkbackGetNumGestureKeys TalkBackGetNumGestureKeys
-#define TalkbackGetGestureKeyInfo TalkBackGetGestureKeyInfo
-#define TalkbackGetGestureValueAtFrame TalkBackGetGestureValueAtFrame
-#define TalkbackGetGestureValueAtTime TalkBackGetGestureValueAtTime
-#define TalkbackGetGestureDerivativesAtTime TalkBackGetGestureDerivativesAtTime
-
-// -----------------------------------------------------------------------------
-// For debug builds, set this to a non-zero value to get verbose debugging
-// output from TalkBack.
-
-extern int g_enableTalkBackDebuggingOutput;
-
-// -----------------------------------------------------------------------------
-// Miscellaneous constants.
-
-// For calling TalkBackGetAnalysis() with all defaults.
-#define TALKBACK_DEFAULT_SETTINGS NULL
-
-// For setting the iSoundText parameter in TalkBackGetAnalysis() to "no text."
-#define TALKBACK_NO_TEXT NULL
-
-// Handy constants for TALKBACK_ANALYSIS_SETTINGS fields:
-
- // For setting fSize.
-#define TALKBACK_SETTINGS_SIZE sizeof(TALKBACK_ANALYSIS_SETTINGS)
- // For setting fFrameRate to the
- // default.
-#define TALKBACK_DEFAULT_FRAME_RATE 30
- // For setting fOptimizeForFlipbook
- // to *not* optimize for flipbook.
-#define TALKBACK_OPTIMIZE_FOR_FLIPBOOK_OFF 0
- // For setting fOptimizeForFlipbook
- // to optimize for flipbook.
-#define TALKBACK_OPTIMIZE_FOR_FLIPBOOK_ON 1
- // For setting fRandomSeed to use the
- // current time to seed the random
- // number generator and thereby get
- // non-deterministic speech gestures.
-#define TALKBACK_RANDOM_SEED -1
- // For setting fConfigFile to "no
- // config file."
-#define TALKBACK_NO_CONFIG_FILE NULL
-
-// -----------------------------------------------------------------------------
-// Data types.
-
-// TALKBACK_NOERR if successful, TalkBack error code if not.
-typedef long TALKBACK_ERR;
-
-// Opaque analysis results.
-typedef void TALKBACK_ANALYSIS;
-
-// Speech target.
-typedef long TALKBACK_SPEECH_TARGET;
-
-// Speech gesture.
-typedef long TALKBACK_GESTURE;
-
-// Phoneme.
-typedef long TALKBACK_PHONEME;
-
-// -----------------------------------------------------------------------------
-// Data structures.
-
-#pragma pack(push, 1)
-
-// Optional analysis settings passed to TalkBackGetAnalysis().
-typedef struct
-{
- // Set this field to sizeof(TALKBACK_ANALYSIS_SETTINGS) before using the
- // structure.
- long fSize;
- // Frame rate for analysis. This only matters if you will be using *AtFrame
- // functions.
- //
- // Default value: 30 (frames per second).
- long fFrameRate;
- // Set this to 1 to optimize for flipbook output, 0 to do analysis normally.
- //
- // Default value: 0 (normal analysis).
- long fOptimizeForFlipbook;
- // Set this to -1 to seed the random number generator with the current time.
- // Any other number will be used directly for the random number seed, which
- // is useful if you want repeatable speech gestures. This value does not
- // influence lip-synching at all.
- //
- // Default value: -1 (use current time).
- long fRandomSeed;
- // Path to the configuration (.INI) file with phoneme-to-speech-target
- // mapping. Set this to NULL to use the default mapping.
- //
- // Default value: NULL (use default mapping).
- char const *fConfigFile;
-} TALKBACK_ANALYSIS_SETTINGS;
-
-typedef struct
-{
- // Set this field to sizeof(TALKBACK_SOUND_FILE_METRICS) before using the
- // structure. This will allow the structure to evolve if necessary.
- size_t m_size;
- // Bits per sample.
- long m_bitsPerSample;
- // Sample rate in Hertz.
- long m_sampleRate;
- // Duration of the audio in seconds.
- double m_duration;
- // 1 if the sound file can be analyzed, 0 if not.
- long m_canBeAnalyzed;
- // 1 if the sound file is clipped, 0 if not.
- long m_isClipped;
- // The decibel range of the sound file.
- double m_decibelRange;
- // A quality value for the sound file: the nominal range is 0 to 100. Try
- // to keep it above 45 for good results.
- int m_quality;
-
- // Added for version 2 of the metrics structure:
- // ---------------------------------------------
- // The number of channels in the sound file: 1 for mono, 2 for stereo, etc.
- long m_channelCount;
-} TALKBACK_SOUND_FILE_METRICS;
-
-#pragma pack(pop)
-
-// -----------------------------------------------------------------------------
-// Constants.
-
-// TalkBack error codes. Use TalkBackGetErrorString() to return text
-// descriptions for these codes.
-enum
-{
- // Windows convention: set this bit to indicate an application-defined error
- // code.
- BIT29 = (1 << 29),
- // Success (not an error).
- TALKBACK_NOERR = 0,
- // The first error code: useful for iterating through the error codes.
- TALKBACK_ERROR_FIRST = 4201 | BIT29,
- // Generic error.
- TALKBACK_ERROR = TALKBACK_ERROR_FIRST,
- // TalkBackStartupLibrary() failed [internal error] or was never called.
- TALKBACK_STARTUP_FAILED_ERR,
- // TalkBackShutdownLibrary() failed, either because
- // TalkBackStartupLibrary() was never called or because
- // TalkBackShutdownLibrary() has already been called.
- TALKBACK_SHUTDOWN_FAILED_ERR,
- // The TalkBack data files could not be found [invalid path or missing
- // files].
- TALKBACK_CORE_DATA_NOT_FOUND_ERR,
- // One or more of the parameters are NULL.
- TALKBACK_NULL_PARAMETER_ERR,
- // One or more of the parameters is invalid.
- TALKBACK_INVALID_PARAMETER_ERR,
- // The analysis object pointer is invalid.
- TALKBACK_INVALID_ANALYSIS_ERR,
- // Analysis failed [the sound file cannot be analyzed or an internal error
- // occurred].
- TALKBACK_ANALYSIS_FAILED_ERR,
- // One or more of the indices (track, key, frame, word, phoneme) are
- // invalid (out of range).
- TALKBACK_INVALID_INDEX_ERR,
- // The time parameter is invalid (out of range).
- TALKBACK_INVALID_TIME_ERR,
- // A serious internal error occurred in TalkBack; please alert LIPSinc by
- // sending mail with a description of how the error was triggered to
- TALKBACK_INTERNAL_ERR,
- // Could not open the specified sound file.
- TALKBACK_COULD_NOT_LOAD_SOUND_ERR,
- // TalkBackStartupLibrary() has not been called.
- TALKBACK_STARTUP_NOT_CALLED,
- // The configuration file specified in the TALKBACK_ANALYSIS_SETTINGS
- // structure is invalid.
- TALKBACK_CONFIG_PARSE_ERROR,
- // The last error code: useful for iterating through the error codes.
- TALKBACK_ERROR_LAST = TALKBACK_CONFIG_PARSE_ERROR
-};
-
-// Default lip-synching track identifiers.
-//
-// NOTE: these track identifiers apply *only* to the default phoneme-to-track
-// mapping! Consult the TalkBack Reference Guide for more details.
-//
-// NOTE: these values are valid *only* if you use the default mapping and are
-// provided as a convenience. If you use your own mapping, these values
-// are invalid and should not be used.
-
-enum
-{
- TALKBACK_SPEECH_TARGET_INVALID = -1,
- TALKBACK_SPEECH_TARGET_FIRST = 0,
- TALKBACK_SPEECH_TARGET_EAT = TALKBACK_SPEECH_TARGET_FIRST, // 0
- TALKBACK_SPEECH_TARGET_EARTH, // 1
- TALKBACK_SPEECH_TARGET_IF, // 2
- TALKBACK_SPEECH_TARGET_OX, // 3
- TALKBACK_SPEECH_TARGET_OAT, // 4
- TALKBACK_SPEECH_TARGET_WET, // 5
- TALKBACK_SPEECH_TARGET_SIZE, // 6
- TALKBACK_SPEECH_TARGET_CHURCH, // 7
- TALKBACK_SPEECH_TARGET_FAVE, // 8
- TALKBACK_SPEECH_TARGET_THOUGH, // 9
- TALKBACK_SPEECH_TARGET_TOLD, // 10
- TALKBACK_SPEECH_TARGET_BUMP, // 11
- TALKBACK_SPEECH_TARGET_NEW, // 12
- TALKBACK_SPEECH_TARGET_ROAR, // 13
- TALKBACK_SPEECH_TARGET_CAGE, // 14
- TALKBACK_SPEECH_TARGET_LAST = TALKBACK_SPEECH_TARGET_CAGE, // 14
- TALKBACK_NUM_SPEECH_TARGETS // 15 (0..14)
-};
-
-// Speech gesture track identifiers.
-
-enum
-{
- TALKBACK_GESTURE_INVALID = -1,
- TALKBACK_GESTURE_FIRST = 0,
- TALKBACK_GESTURE_EYEBROW_RAISE_LEFT = TALKBACK_GESTURE_FIRST, // 0
- TALKBACK_GESTURE_EYEBROW_RAISE_RIGHT, // 1
- TALKBACK_GESTURE_BLINK_LEFT, // 2
- TALKBACK_GESTURE_BLINK_RIGHT, // 3
- TALKBACK_GESTURE_HEAD_BEND, // 4
- TALKBACK_GESTURE_HEAD_SIDE_SIDE, // 5
- TALKBACK_GESTURE_HEAD_TWIST, // 6
- TALKBACK_GESTURE_EYE_SIDE_SIDE_LEFT, // 7
- TALKBACK_GESTURE_EYE_SIDE_SIDE_RIGHT, // 8
- TALKBACK_GESTURE_EYE_UP_DOWN_LEFT, // 9
- TALKBACK_GESTURE_EYE_UP_DOWN_RIGHT, // 10
- TALKBACK_GESTURE_LAST = TALKBACK_GESTURE_EYE_UP_DOWN_RIGHT, // 10
- TALKBACK_NUM_GESTURES // 11 (0..10)
-};
-
-// Phoneme identifiers.
-
-enum
-{
- TALKBACK_PHONEME_INVALID = -1,
- TALKBACK_PHONEME_FIRST = 0,
- TALKBACK_PHONEME_IY = TALKBACK_PHONEME_FIRST, // 0
- TALKBACK_PHONEME_IH, // 1
- TALKBACK_PHONEME_EH, // 2
- TALKBACK_PHONEME_EY, // 3
- TALKBACK_PHONEME_AE, // 4
- TALKBACK_PHONEME_AA, // 5
- TALKBACK_PHONEME_AW, // 6
- TALKBACK_PHONEME_AY, // 7
- TALKBACK_PHONEME_AH, // 8
- TALKBACK_PHONEME_AO, // 9
- TALKBACK_PHONEME_OY, // 10
- TALKBACK_PHONEME_OW, // 11
- TALKBACK_PHONEME_UH, // 12
- TALKBACK_PHONEME_UW, // 13
- TALKBACK_PHONEME_ER, // 14
- TALKBACK_PHONEME_AX, // 15
- TALKBACK_PHONEME_S, // 16
- TALKBACK_PHONEME_SH, // 17
- TALKBACK_PHONEME_Z, // 18
- TALKBACK_PHONEME_ZH, // 19
- TALKBACK_PHONEME_F, // 20
- TALKBACK_PHONEME_TH, // 21
- TALKBACK_PHONEME_V, // 22
- TALKBACK_PHONEME_DH, // 23
- TALKBACK_PHONEME_M, // 24
- TALKBACK_PHONEME_N, // 25
- TALKBACK_PHONEME_NG, // 26
- TALKBACK_PHONEME_L, // 27
- TALKBACK_PHONEME_R, // 28
- TALKBACK_PHONEME_W, // 29
- TALKBACK_PHONEME_Y, // 30
- TALKBACK_PHONEME_HH, // 31
- TALKBACK_PHONEME_B, // 32
- TALKBACK_PHONEME_D, // 33
- TALKBACK_PHONEME_JH, // 34
- TALKBACK_PHONEME_G, // 35
- TALKBACK_PHONEME_P, // 36
- TALKBACK_PHONEME_T, // 37
- TALKBACK_PHONEME_K, // 38
- TALKBACK_PHONEME_CH, // 39
- TALKBACK_PHONEME_SIL, // 40
- TALKBACK_PHONEME_LAST = TALKBACK_PHONEME_SIL, // 40
- TALKBACK_NUM_PHONEMES // 41 (0..40)
-};
-
-// -----------------------------------------------------------------------------
-// Function declarations.
-
-// ---------------------------
-// Startup/shutdown functions.
-// ---------------------------
-
-// Must be the first function called when using TalkBack.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackStartupLibrary(
- char const *iCoreDataDir); // IN: full path of folder containing TalkBack data files.
-
-// Should be the last function called when using TalkBack.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackShutdownLibrary(); // IN: nothing.
-
-// ------------------
-// Version functions.
-// ------------------
-
-// Gets the TalkBack version number.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetVersion(
- long *oMajor, // OUT: major version number.
- long *oMinor, // OUT: minor version number.
- long *oRevision); // OUT: revision version number.
-
-// Gets the TalkBack version number as a string.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetVersionString(
- long iMaxChars, // IN: size of version string buffer.
- char *oVersion); // OUT: version string buffer.
-
-// ------------------
-// Utility functions.
-// ------------------
-
-// Checks whether a sound file can be analyzed and returns some quality metrics.
-//
-// NOTE: this function is deprecated and has been supplanted by
-// TalkBackGetSoundFileMetrics().
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackCheckSoundFile(
- char const *iSoundFileName, // IN: name of sound file to be checked.
- long *oCanBeAnalyzed, // OUT: 1 if sound can be analyzed, 0 if not.
- long *oIsClipped, // OUT: 1 if sound is clipped, 0 if not.
- double *oDecibelRange); // OUT: used decibel range of sound.
-
-// Returns metrics for the specified sound file.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetSoundFileMetrics(
- char const *iSoundFileName, // IN: name of sound file to be checked.
- TALKBACK_SOUND_FILE_METRICS *ioMetrics); // IN/OUT: address of a structure where the metrics will be stored.
-
-// Checks whether text can be used for text-based analysis, returning the text
-// as it will be analyzed.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackCheckSpokenText(
- char const *iSpokenText, // IN: text to check.
- long iMaxChars, // IN: size of analyzed text buffer.
- char *oAnalyzedText); // OUT: buffer for text as it will be analyzed.
-
-// Convert a TalkBack error code to a description string.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetErrorString(
- TALKBACK_ERR iErrorCode, // IN: TalkBack error code to convert.
- long iMaxChars, // IN: size of the buffer.
- char *oErrorString); // OUT: buffer for the description string.
-
-// Gets the error code and text for the most recent TalkBack error.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetLastError(
- long iMaxChars, // IN: size of the buffer.
- char *oErrorString, // OUT: buffer for the description string.
- TALKBACK_ERR *oErrorCode); // OUT: most recent TalkBack error code.
-
-// -------------------
-// Analysis functions.
-// -------------------
-
-// Gets an opaque TALKBACK_ANALYSIS object. This object is then queried with the
-// TalkBackGet* functions below.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetAnalysis(
- TALKBACK_ANALYSIS **ioAnalysis, // IN/OUT: address of a TALKBACK_ANALYSIS *variable where analysis will be stored.
- char const *iSoundFileName, // IN: name of the sound file to analyze.
- char const *iSoundText, // IN: text spoken in sound file (can be NULL to use textless analysis).
- TALKBACK_ANALYSIS_SETTINGS *iSettings); // IN: pointer to a TALKBACK_ANALYSIS_SETTINGS structure (can be NULL for defaults).
-
-// Frees an opaque TALKBACK_ANALYSIS object. This releases all memory used by
-// the analysis.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackFreeAnalysis(
- TALKBACK_ANALYSIS **ioAnalysis); // IN/OUT: analysis to free.
-
-// #######################################################################
-// NOTE: all functions from this point on require a valid analysis object.
-// #######################################################################
-
-// ------------------------
-// Speech target functions.
-// ------------------------
-
-// Gets the number of speech target tracks.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetNumSpeechTargetTracks(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long *oResult); // OUT: number of speech target tracks.
-
-// Gets the number of keys in the specified speech target track.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetNumSpeechTargetKeys(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech target track.
- long *oResult); // OUT: number of keys in the speech target track.
-
-// Gets key information (time, value, derivative in, and derivative out) for the
-// specified key in the specified speech target track.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetSpeechTargetKeyInfo(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech target track.
- long iKeyNum, // IN: speech target key.
- double *oTime, // OUT: time of key.
- double *oValue, // OUT: value of key.
- double *oDerivativeIn, // OUT: incoming derivative of key.
- double *oDerivativeOut); // OUT: outgoing derivative of key.
-
-// Gets the value of the function curve for the specified speech target track at
-// the specified time.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetSpeechTargetValueAtTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech target track.
- double iTime, // IN: time in seconds.
- double *oResult); // OUT: value of the function curve.
-
-// Gets the derivatives of the function curve for the specified speech target
-// track at the specified time.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetSpeechTargetDerivativesAtTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech target track.
- double iTime, // IN: time in seconds.
- double *oDerivativeIn, // OUT: value of the incoming derivative of the function curve.
- double *oDerivativeOut); // OUT: value of the outgoing derivative of the function curve.
-
-// -------------------------
-// Speech gesture functions.
-// -------------------------
-
-// Gets the number of speech gesture tracks.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetNumGestureTracks(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long *oResult); // OUT: number of speech gesture tracks
-
-// Gets the number of keys in the specified speech gesture track.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetNumGestureKeys(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech gesture track.
- long *oResult); // OUT: number of keys in the speech gesture track.
-
-// Gets key information (time, value, derivative in, and derivative out) for the
-// specified key in the specified speech gesture track.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetGestureKeyInfo(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech gesture track.
- long iKeyNum, // IN: speech gesture key.
- double *oTime, // OUT: time of key.
- double *oValue, // OUT: value of key.
- double *oDerivativeIn, // OUT: incoming derivative of key.
- double *oDerivativeOut); // OUT: outgoing derivative of key.
-
-// Gets the value of the function curve for the specified speech gesture track
-// at the specified time.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetGestureValueAtTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech gesture track.
- double iTime, // IN: time in seconds.
- double *oResult); // OUT: value of the function curve.
-
-// Gets the derivatives of the function curve for the specified speech gesture
-// track at the specified time.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetGestureDerivativesAtTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech gesture track.
- double iTime, // IN: time in seconds.
- double *oDerivativeIn, // OUT: value of the incoming derivative of the function curve.
- double *oDerivativeOut); // OUT: value of the outgoing derivative of the function curve.
-
-// ----------------
-// Frame functions.
-// ----------------
-
-// NOTE: these functions use the frame rate specified in the
-// TALKBACK_ANALYSIS_SETTINGS structure passed to TalkBackGetAnalysis() and
-// default to 30 fps (TALKBACK_DEFAULT_FRAME_RATE) if the structure pointer was
-// NULL.
-
-// Gets the first frame number.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetFirstFrameNum(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long *oResult); // OUT: number of the first frame.
-
-// Gets the last frame number.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetLastFrameNum(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long *oResult); // OUT: number of the last frame.
-
-// Gets the start time of the specified frame.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetFrameStartTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iFrameNum, // IN: frame.
- double *oResult); // OUT: start time of the frame in seconds.
-
-// Gets the end time of the specified frame.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetFrameEndTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iFrameNum, // IN: frame.
- double *oResult); // OUT: end time of the frame in seconds.
-
-// Gets the value of the function curve for a speech target integrated over the
-// specified frame.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetSpeechTargetValueAtFrame(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech target track.
- long iFrameNum, // IN: frame number.
- double *oResult); // OUT: value of the function curve integrated over the frame.
-
-// Gets the dominant speech target at the specified frame.
-//
-// NOTE: this function is meant to be used in flipbook mode only.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetDominantSpeechTargetAtFrame(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iFrameNum, // IN: frame number.
- TALKBACK_SPEECH_TARGET *oSpeechTarget); // OUT: dominant speech target.
-
-// Gets the value of the function curve for a speech gesture integrated over the
-// specified frame.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetGestureValueAtFrame(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iTrackNum, // IN: speech gesture track.
- long iFrameNum, // IN: frame number.
- double *oResult); // OUT: value of the function curve integrated over the frame.
-
-// ------------------
-// Phoneme functions.
-// ------------------
-
-// Gets the number of phonemes.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetNumPhonemes(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long *oResult); // OUT: number of phonemes.
-
-// Gets the enumeration of the specified phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetPhonemeEnum(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeNum, // IN: phoneme.
- TALKBACK_PHONEME *oResult); // OUT: enumeration of the specified phoneme.
-
-// Gets the start time of the specified phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetPhonemeStartTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeNum, // IN: phoneme.
- double *oResult); // OUT: start time of the phoneme in seconds.
-
-// Gets the end time of the specified phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetPhonemeEndTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeNum, // IN: phoneme.
- double *oResult); // OUT: end time of the phoneme in seconds.
-
-// ---------------
-// Word functions.
-// ---------------
-
-// NOTE: these functions only yield data for text-based analysis.
-
-// Gets the number of words.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetNumWords(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long *oResult); // OUT: number of words.
-
-// Gets the text of the specified word.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetWord(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iWordNum, // IN: word.
- long iMaxChars, // IN: size of word buffer.
- char *oWord); // OUT: word buffer.
-
-// Gets the start time of the specified word.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetWordStartTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iWordNum, // IN: word.
- double *oResult); // OUT: start time of the word in seconds.
-
-// Gets the end time of the specified word.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackGetWordEndTime(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iWordNum, // IN: word.
- double *oResult); // OUT: end time of the word in seconds.
-
-// --------------------------
-// Phoneme editing functions.
-// --------------------------
-
-// Use these functions to modify the phoneme list after you get an opaque
-// analysis object from TalkBackGetAnalysis(). After modifying the phoneme list
-// in the opaque analysis object, subsequent TalkBackGet* calls on that opaque
-// analysis object for speech target (lip-synching) data will return values
-// based on the modified phoneme list. However, speech gesture data is not
-// affected by phoneme editing.
-//
-// NOTE: phoneme editing is only provided in order to support Ventriloquist-like
-// applications where tweaking of the phoneme segmenation (and subsequent
-// recalculation of the animation data) is required. Most customers probably
-// won't need this functionality.
-
-// Inserts a phoneme at the specified position in the specified manner.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackInsertPhoneme(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- TALKBACK_PHONEME iPhoneme, // IN: enumeration of phoneme to insert.
- long iInsertPosition, // IN: position (phoneme number) at which to insert.
- int iInsertBefore); // IN: manner of insertion:
- // 0 means put phoneme after insert position;
- // 1 means put phoneme before insert position.
-
-// Deletes the specified phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackDeletePhoneme(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeToDelete); // IN: phoneme to delete.
-
-// Changes the start time of the specified phoneme.
-//
-// NOTE: the start time specified may not be the actual start time for a number
-// of reasons, most notably if the specified start time will make the phoneme
-// too short. This function returns the actual start time so the caller can
-// check the result without having to query the phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackChangePhonemeStart(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeToChange, // IN: phoneme to change.
- double *ioNewTime); // IN/OUT: new start time value in seconds (in); actual start time (out).
-
-// Changes the end time of the specified phoneme.
-//
-// NOTE: the end time specified may not be the actual end time for a number of
-// reasons, most notably if the specified end time will make the phoneme too
-// short. This function returns the actual end time so the caller can check the
-// result without having to query the phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackChangePhonemeEnd(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeToChange, // IN: phoneme to change.
- double *ioNewTime); // IN/OUT: new end time value in seconds (in); actual end time (out).
-
-// Changes the enumeration of the specified phoneme.
-TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
-TalkBackChangePhonemeEnum(
- TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
- long iPhonemeToChange, // IN: phoneme to change.
- TALKBACK_PHONEME iNewPhoneme); // IN: new phoneme enumeration.
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//=============================================================================//
+// =============================================================================
+// Interface to the LIPSinc TalkBack 1.1 library (TalkBack_*.lib).
+//
+// Copyright � 1998-2002 LIPSinc. All rights reserved.
+
+#if !defined(TalkBack_h)
+#define TalkBack_h
+
+#include <stddef.h> // size_t.
+
+// Enforce a C API.
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+// -----------------------------------------------------------------------------
+// Use the preprocessor to make the new API compatible with the old one.
+
+#define TalkbackStartupLibrary TalkBackStartupLibrary
+#define TalkbackShutdownLibrary TalkBackShutdownLibrary
+#define TalkbackGetVersion TalkBackGetVersion
+#define TalkbackGetVersionString TalkBackGetVersionString
+#define TalkbackCheckSoundFile TalkBackCheckSoundFile
+#define TalkbackCheckSpokenText TalkBackCheckSpokenText
+#define TalkbackGetErrorString TalkBackGetErrorString
+#define TalkbackGetAnalysis TalkBackGetAnalysis
+#define TalkbackFreeAnalysis TalkBackFreeAnalysis
+#define TalkbackGetFirstFrameNum TalkBackGetFirstFrameNum
+#define TalkbackGetLastFrameNum TalkBackGetLastFrameNum
+#define TalkbackGetFrameStartTime TalkBackGetFrameStartTime
+#define TalkbackGetFrameEndTime TalkBackGetFrameEndTime
+#define TalkbackGetNumPhonemes TalkBackGetNumPhonemes
+#define TalkbackGetPhonemeEnum TalkBackGetPhonemeEnum
+#define TalkbackGetPhonemeStartTime TalkBackGetPhonemeStartTime
+#define TalkbackGetPhonemeEndTime TalkBackGetPhonemeEndTime
+#define TalkbackInsertPhoneme TalkBackInsertPhoneme
+#define TalkbackDeletePhoneme TalkBackDeletePhoneme
+#define TalkbackChangePhonemeStart TalkBackChangePhonemeStart
+#define TalkbackChangePhonemeEnd TalkBackChangePhonemeEnd
+#define TalkbackChangePhonemeEnum TalkBackChangePhonemeEnum
+#define TalkbackGetNumWords TalkBackGetNumWords
+#define TalkbackGetWord TalkBackGetWord
+#define TalkbackGetWordStartTime TalkBackGetWordStartTime
+#define TalkbackGetWordEndTime TalkBackGetWordEndTime
+#define TalkbackGetNumSpeechTargetTracks TalkBackGetNumSpeechTargetTracks
+#define TalkbackGetNumSpeechTargetKeys TalkBackGetNumSpeechTargetKeys
+#define TalkbackGetSpeechTargetKeyInfo TalkBackGetSpeechTargetKeyInfo
+#define TalkbackGetSpeechTargetValueAtFrame TalkBackGetSpeechTargetValueAtFrame
+#define TalkbackGetDominantSpeechTargetAtFrame TalkBackGetDominantSpeechTargetAtFrame
+#define TalkbackGetSpeechTargetValueAtTime TalkBackGetSpeechTargetValueAtTime
+#define TalkbackGetSpeechTargetDerivativesAtTime TalkBackGetSpeechTargetDerivativesAtTime
+#define TalkbackGetNumGestureTracks TalkBackGetNumGestureTracks
+#define TalkbackGetNumGestureKeys TalkBackGetNumGestureKeys
+#define TalkbackGetGestureKeyInfo TalkBackGetGestureKeyInfo
+#define TalkbackGetGestureValueAtFrame TalkBackGetGestureValueAtFrame
+#define TalkbackGetGestureValueAtTime TalkBackGetGestureValueAtTime
+#define TalkbackGetGestureDerivativesAtTime TalkBackGetGestureDerivativesAtTime
+
+// -----------------------------------------------------------------------------
+// For debug builds, set this to a non-zero value to get verbose debugging
+// output from TalkBack.
+
+extern int g_enableTalkBackDebuggingOutput;
+
+// -----------------------------------------------------------------------------
+// Miscellaneous constants.
+
+// For calling TalkBackGetAnalysis() with all defaults.
+#define TALKBACK_DEFAULT_SETTINGS NULL
+
+// For setting the iSoundText parameter in TalkBackGetAnalysis() to "no text."
+#define TALKBACK_NO_TEXT NULL
+
+// Handy constants for TALKBACK_ANALYSIS_SETTINGS fields:
+
+ // For setting fSize.
+#define TALKBACK_SETTINGS_SIZE sizeof(TALKBACK_ANALYSIS_SETTINGS)
+ // For setting fFrameRate to the
+ // default.
+#define TALKBACK_DEFAULT_FRAME_RATE 30
+ // For setting fOptimizeForFlipbook
+ // to *not* optimize for flipbook.
+#define TALKBACK_OPTIMIZE_FOR_FLIPBOOK_OFF 0
+ // For setting fOptimizeForFlipbook
+ // to optimize for flipbook.
+#define TALKBACK_OPTIMIZE_FOR_FLIPBOOK_ON 1
+ // For setting fRandomSeed to use the
+ // current time to seed the random
+ // number generator and thereby get
+ // non-deterministic speech gestures.
+#define TALKBACK_RANDOM_SEED -1
+ // For setting fConfigFile to "no
+ // config file."
+#define TALKBACK_NO_CONFIG_FILE NULL
+
+// -----------------------------------------------------------------------------
+// Data types.
+
+// TALKBACK_NOERR if successful, TalkBack error code if not.
+typedef long TALKBACK_ERR;
+
+// Opaque analysis results.
+typedef void TALKBACK_ANALYSIS;
+
+// Speech target.
+typedef long TALKBACK_SPEECH_TARGET;
+
+// Speech gesture.
+typedef long TALKBACK_GESTURE;
+
+// Phoneme.
+typedef long TALKBACK_PHONEME;
+
+// -----------------------------------------------------------------------------
+// Data structures.
+
+#pragma pack(push, 1)
+
+// Optional analysis settings passed to TalkBackGetAnalysis().
+typedef struct
+{
+ // Set this field to sizeof(TALKBACK_ANALYSIS_SETTINGS) before using the
+ // structure.
+ long fSize;
+ // Frame rate for analysis. This only matters if you will be using *AtFrame
+ // functions.
+ //
+ // Default value: 30 (frames per second).
+ long fFrameRate;
+ // Set this to 1 to optimize for flipbook output, 0 to do analysis normally.
+ //
+ // Default value: 0 (normal analysis).
+ long fOptimizeForFlipbook;
+ // Set this to -1 to seed the random number generator with the current time.
+ // Any other number will be used directly for the random number seed, which
+ // is useful if you want repeatable speech gestures. This value does not
+ // influence lip-synching at all.
+ //
+ // Default value: -1 (use current time).
+ long fRandomSeed;
+ // Path to the configuration (.INI) file with phoneme-to-speech-target
+ // mapping. Set this to NULL to use the default mapping.
+ //
+ // Default value: NULL (use default mapping).
+ char const *fConfigFile;
+} TALKBACK_ANALYSIS_SETTINGS;
+
+typedef struct
+{
+ // Set this field to sizeof(TALKBACK_SOUND_FILE_METRICS) before using the
+ // structure. This will allow the structure to evolve if necessary.
+ size_t m_size;
+ // Bits per sample.
+ long m_bitsPerSample;
+ // Sample rate in Hertz.
+ long m_sampleRate;
+ // Duration of the audio in seconds.
+ double m_duration;
+ // 1 if the sound file can be analyzed, 0 if not.
+ long m_canBeAnalyzed;
+ // 1 if the sound file is clipped, 0 if not.
+ long m_isClipped;
+ // The decibel range of the sound file.
+ double m_decibelRange;
+ // A quality value for the sound file: the nominal range is 0 to 100. Try
+ // to keep it above 45 for good results.
+ int m_quality;
+
+ // Added for version 2 of the metrics structure:
+ // ---------------------------------------------
+ // The number of channels in the sound file: 1 for mono, 2 for stereo, etc.
+ long m_channelCount;
+} TALKBACK_SOUND_FILE_METRICS;
+
+#pragma pack(pop)
+
+// -----------------------------------------------------------------------------
+// Constants.
+
+// TalkBack error codes. Use TalkBackGetErrorString() to return text
+// descriptions for these codes.
+enum
+{
+ // Windows convention: set this bit to indicate an application-defined error
+ // code.
+ BIT29 = (1 << 29),
+ // Success (not an error).
+ TALKBACK_NOERR = 0,
+ // The first error code: useful for iterating through the error codes.
+ TALKBACK_ERROR_FIRST = 4201 | BIT29,
+ // Generic error.
+ TALKBACK_ERROR = TALKBACK_ERROR_FIRST,
+ // TalkBackStartupLibrary() failed [internal error] or was never called.
+ TALKBACK_STARTUP_FAILED_ERR,
+ // TalkBackShutdownLibrary() failed, either because
+ // TalkBackStartupLibrary() was never called or because
+ // TalkBackShutdownLibrary() has already been called.
+ TALKBACK_SHUTDOWN_FAILED_ERR,
+ // The TalkBack data files could not be found [invalid path or missing
+ // files].
+ TALKBACK_CORE_DATA_NOT_FOUND_ERR,
+ // One or more of the parameters are NULL.
+ TALKBACK_NULL_PARAMETER_ERR,
+ // One or more of the parameters is invalid.
+ TALKBACK_INVALID_PARAMETER_ERR,
+ // The analysis object pointer is invalid.
+ TALKBACK_INVALID_ANALYSIS_ERR,
+ // Analysis failed [the sound file cannot be analyzed or an internal error
+ // occurred].
+ TALKBACK_ANALYSIS_FAILED_ERR,
+ // One or more of the indices (track, key, frame, word, phoneme) are
+ // invalid (out of range).
+ TALKBACK_INVALID_INDEX_ERR,
+ // The time parameter is invalid (out of range).
+ TALKBACK_INVALID_TIME_ERR,
+ // A serious internal error occurred in TalkBack; please alert LIPSinc by
+ // sending mail with a description of how the error was triggered to
+ TALKBACK_INTERNAL_ERR,
+ // Could not open the specified sound file.
+ TALKBACK_COULD_NOT_LOAD_SOUND_ERR,
+ // TalkBackStartupLibrary() has not been called.
+ TALKBACK_STARTUP_NOT_CALLED,
+ // The configuration file specified in the TALKBACK_ANALYSIS_SETTINGS
+ // structure is invalid.
+ TALKBACK_CONFIG_PARSE_ERROR,
+ // The last error code: useful for iterating through the error codes.
+ TALKBACK_ERROR_LAST = TALKBACK_CONFIG_PARSE_ERROR
+};
+
+// Default lip-synching track identifiers.
+//
+// NOTE: these track identifiers apply *only* to the default phoneme-to-track
+// mapping! Consult the TalkBack Reference Guide for more details.
+//
+// NOTE: these values are valid *only* if you use the default mapping and are
+// provided as a convenience. If you use your own mapping, these values
+// are invalid and should not be used.
+
+enum
+{
+ TALKBACK_SPEECH_TARGET_INVALID = -1,
+ TALKBACK_SPEECH_TARGET_FIRST = 0,
+ TALKBACK_SPEECH_TARGET_EAT = TALKBACK_SPEECH_TARGET_FIRST, // 0
+ TALKBACK_SPEECH_TARGET_EARTH, // 1
+ TALKBACK_SPEECH_TARGET_IF, // 2
+ TALKBACK_SPEECH_TARGET_OX, // 3
+ TALKBACK_SPEECH_TARGET_OAT, // 4
+ TALKBACK_SPEECH_TARGET_WET, // 5
+ TALKBACK_SPEECH_TARGET_SIZE, // 6
+ TALKBACK_SPEECH_TARGET_CHURCH, // 7
+ TALKBACK_SPEECH_TARGET_FAVE, // 8
+ TALKBACK_SPEECH_TARGET_THOUGH, // 9
+ TALKBACK_SPEECH_TARGET_TOLD, // 10
+ TALKBACK_SPEECH_TARGET_BUMP, // 11
+ TALKBACK_SPEECH_TARGET_NEW, // 12
+ TALKBACK_SPEECH_TARGET_ROAR, // 13
+ TALKBACK_SPEECH_TARGET_CAGE, // 14
+ TALKBACK_SPEECH_TARGET_LAST = TALKBACK_SPEECH_TARGET_CAGE, // 14
+ TALKBACK_NUM_SPEECH_TARGETS // 15 (0..14)
+};
+
+// Speech gesture track identifiers.
+
+enum
+{
+ TALKBACK_GESTURE_INVALID = -1,
+ TALKBACK_GESTURE_FIRST = 0,
+ TALKBACK_GESTURE_EYEBROW_RAISE_LEFT = TALKBACK_GESTURE_FIRST, // 0
+ TALKBACK_GESTURE_EYEBROW_RAISE_RIGHT, // 1
+ TALKBACK_GESTURE_BLINK_LEFT, // 2
+ TALKBACK_GESTURE_BLINK_RIGHT, // 3
+ TALKBACK_GESTURE_HEAD_BEND, // 4
+ TALKBACK_GESTURE_HEAD_SIDE_SIDE, // 5
+ TALKBACK_GESTURE_HEAD_TWIST, // 6
+ TALKBACK_GESTURE_EYE_SIDE_SIDE_LEFT, // 7
+ TALKBACK_GESTURE_EYE_SIDE_SIDE_RIGHT, // 8
+ TALKBACK_GESTURE_EYE_UP_DOWN_LEFT, // 9
+ TALKBACK_GESTURE_EYE_UP_DOWN_RIGHT, // 10
+ TALKBACK_GESTURE_LAST = TALKBACK_GESTURE_EYE_UP_DOWN_RIGHT, // 10
+ TALKBACK_NUM_GESTURES // 11 (0..10)
+};
+
+// Phoneme identifiers.
+
+enum
+{
+ TALKBACK_PHONEME_INVALID = -1,
+ TALKBACK_PHONEME_FIRST = 0,
+ TALKBACK_PHONEME_IY = TALKBACK_PHONEME_FIRST, // 0
+ TALKBACK_PHONEME_IH, // 1
+ TALKBACK_PHONEME_EH, // 2
+ TALKBACK_PHONEME_EY, // 3
+ TALKBACK_PHONEME_AE, // 4
+ TALKBACK_PHONEME_AA, // 5
+ TALKBACK_PHONEME_AW, // 6
+ TALKBACK_PHONEME_AY, // 7
+ TALKBACK_PHONEME_AH, // 8
+ TALKBACK_PHONEME_AO, // 9
+ TALKBACK_PHONEME_OY, // 10
+ TALKBACK_PHONEME_OW, // 11
+ TALKBACK_PHONEME_UH, // 12
+ TALKBACK_PHONEME_UW, // 13
+ TALKBACK_PHONEME_ER, // 14
+ TALKBACK_PHONEME_AX, // 15
+ TALKBACK_PHONEME_S, // 16
+ TALKBACK_PHONEME_SH, // 17
+ TALKBACK_PHONEME_Z, // 18
+ TALKBACK_PHONEME_ZH, // 19
+ TALKBACK_PHONEME_F, // 20
+ TALKBACK_PHONEME_TH, // 21
+ TALKBACK_PHONEME_V, // 22
+ TALKBACK_PHONEME_DH, // 23
+ TALKBACK_PHONEME_M, // 24
+ TALKBACK_PHONEME_N, // 25
+ TALKBACK_PHONEME_NG, // 26
+ TALKBACK_PHONEME_L, // 27
+ TALKBACK_PHONEME_R, // 28
+ TALKBACK_PHONEME_W, // 29
+ TALKBACK_PHONEME_Y, // 30
+ TALKBACK_PHONEME_HH, // 31
+ TALKBACK_PHONEME_B, // 32
+ TALKBACK_PHONEME_D, // 33
+ TALKBACK_PHONEME_JH, // 34
+ TALKBACK_PHONEME_G, // 35
+ TALKBACK_PHONEME_P, // 36
+ TALKBACK_PHONEME_T, // 37
+ TALKBACK_PHONEME_K, // 38
+ TALKBACK_PHONEME_CH, // 39
+ TALKBACK_PHONEME_SIL, // 40
+ TALKBACK_PHONEME_LAST = TALKBACK_PHONEME_SIL, // 40
+ TALKBACK_NUM_PHONEMES // 41 (0..40)
+};
+
+// -----------------------------------------------------------------------------
+// Function declarations.
+
+// ---------------------------
+// Startup/shutdown functions.
+// ---------------------------
+
+// Must be the first function called when using TalkBack.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackStartupLibrary(
+ char const *iCoreDataDir); // IN: full path of folder containing TalkBack data files.
+
+// Should be the last function called when using TalkBack.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackShutdownLibrary(); // IN: nothing.
+
+// ------------------
+// Version functions.
+// ------------------
+
+// Gets the TalkBack version number.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetVersion(
+ long *oMajor, // OUT: major version number.
+ long *oMinor, // OUT: minor version number.
+ long *oRevision); // OUT: revision version number.
+
+// Gets the TalkBack version number as a string.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetVersionString(
+ long iMaxChars, // IN: size of version string buffer.
+ char *oVersion); // OUT: version string buffer.
+
+// ------------------
+// Utility functions.
+// ------------------
+
+// Checks whether a sound file can be analyzed and returns some quality metrics.
+//
+// NOTE: this function is deprecated and has been supplanted by
+// TalkBackGetSoundFileMetrics().
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackCheckSoundFile(
+ char const *iSoundFileName, // IN: name of sound file to be checked.
+ long *oCanBeAnalyzed, // OUT: 1 if sound can be analyzed, 0 if not.
+ long *oIsClipped, // OUT: 1 if sound is clipped, 0 if not.
+ double *oDecibelRange); // OUT: used decibel range of sound.
+
+// Returns metrics for the specified sound file.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetSoundFileMetrics(
+ char const *iSoundFileName, // IN: name of sound file to be checked.
+ TALKBACK_SOUND_FILE_METRICS *ioMetrics); // IN/OUT: address of a structure where the metrics will be stored.
+
+// Checks whether text can be used for text-based analysis, returning the text
+// as it will be analyzed.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackCheckSpokenText(
+ char const *iSpokenText, // IN: text to check.
+ long iMaxChars, // IN: size of analyzed text buffer.
+ char *oAnalyzedText); // OUT: buffer for text as it will be analyzed.
+
+// Convert a TalkBack error code to a description string.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetErrorString(
+ TALKBACK_ERR iErrorCode, // IN: TalkBack error code to convert.
+ long iMaxChars, // IN: size of the buffer.
+ char *oErrorString); // OUT: buffer for the description string.
+
+// Gets the error code and text for the most recent TalkBack error.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetLastError(
+ long iMaxChars, // IN: size of the buffer.
+ char *oErrorString, // OUT: buffer for the description string.
+ TALKBACK_ERR *oErrorCode); // OUT: most recent TalkBack error code.
+
+// -------------------
+// Analysis functions.
+// -------------------
+
+// Gets an opaque TALKBACK_ANALYSIS object. This object is then queried with the
+// TalkBackGet* functions below.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetAnalysis(
+ TALKBACK_ANALYSIS **ioAnalysis, // IN/OUT: address of a TALKBACK_ANALYSIS *variable where analysis will be stored.
+ char const *iSoundFileName, // IN: name of the sound file to analyze.
+ char const *iSoundText, // IN: text spoken in sound file (can be NULL to use textless analysis).
+ TALKBACK_ANALYSIS_SETTINGS *iSettings); // IN: pointer to a TALKBACK_ANALYSIS_SETTINGS structure (can be NULL for defaults).
+
+// Frees an opaque TALKBACK_ANALYSIS object. This releases all memory used by
+// the analysis.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackFreeAnalysis(
+ TALKBACK_ANALYSIS **ioAnalysis); // IN/OUT: analysis to free.
+
+// #######################################################################
+// NOTE: all functions from this point on require a valid analysis object.
+// #######################################################################
+
+// ------------------------
+// Speech target functions.
+// ------------------------
+
+// Gets the number of speech target tracks.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetNumSpeechTargetTracks(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long *oResult); // OUT: number of speech target tracks.
+
+// Gets the number of keys in the specified speech target track.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetNumSpeechTargetKeys(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech target track.
+ long *oResult); // OUT: number of keys in the speech target track.
+
+// Gets key information (time, value, derivative in, and derivative out) for the
+// specified key in the specified speech target track.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetSpeechTargetKeyInfo(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech target track.
+ long iKeyNum, // IN: speech target key.
+ double *oTime, // OUT: time of key.
+ double *oValue, // OUT: value of key.
+ double *oDerivativeIn, // OUT: incoming derivative of key.
+ double *oDerivativeOut); // OUT: outgoing derivative of key.
+
+// Gets the value of the function curve for the specified speech target track at
+// the specified time.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetSpeechTargetValueAtTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech target track.
+ double iTime, // IN: time in seconds.
+ double *oResult); // OUT: value of the function curve.
+
+// Gets the derivatives of the function curve for the specified speech target
+// track at the specified time.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetSpeechTargetDerivativesAtTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech target track.
+ double iTime, // IN: time in seconds.
+ double *oDerivativeIn, // OUT: value of the incoming derivative of the function curve.
+ double *oDerivativeOut); // OUT: value of the outgoing derivative of the function curve.
+
+// -------------------------
+// Speech gesture functions.
+// -------------------------
+
+// Gets the number of speech gesture tracks.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetNumGestureTracks(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long *oResult); // OUT: number of speech gesture tracks
+
+// Gets the number of keys in the specified speech gesture track.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetNumGestureKeys(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech gesture track.
+ long *oResult); // OUT: number of keys in the speech gesture track.
+
+// Gets key information (time, value, derivative in, and derivative out) for the
+// specified key in the specified speech gesture track.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetGestureKeyInfo(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech gesture track.
+ long iKeyNum, // IN: speech gesture key.
+ double *oTime, // OUT: time of key.
+ double *oValue, // OUT: value of key.
+ double *oDerivativeIn, // OUT: incoming derivative of key.
+ double *oDerivativeOut); // OUT: outgoing derivative of key.
+
+// Gets the value of the function curve for the specified speech gesture track
+// at the specified time.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetGestureValueAtTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech gesture track.
+ double iTime, // IN: time in seconds.
+ double *oResult); // OUT: value of the function curve.
+
+// Gets the derivatives of the function curve for the specified speech gesture
+// track at the specified time.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetGestureDerivativesAtTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech gesture track.
+ double iTime, // IN: time in seconds.
+ double *oDerivativeIn, // OUT: value of the incoming derivative of the function curve.
+ double *oDerivativeOut); // OUT: value of the outgoing derivative of the function curve.
+
+// ----------------
+// Frame functions.
+// ----------------
+
+// NOTE: these functions use the frame rate specified in the
+// TALKBACK_ANALYSIS_SETTINGS structure passed to TalkBackGetAnalysis() and
+// default to 30 fps (TALKBACK_DEFAULT_FRAME_RATE) if the structure pointer was
+// NULL.
+
+// Gets the first frame number.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetFirstFrameNum(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long *oResult); // OUT: number of the first frame.
+
+// Gets the last frame number.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetLastFrameNum(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long *oResult); // OUT: number of the last frame.
+
+// Gets the start time of the specified frame.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetFrameStartTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iFrameNum, // IN: frame.
+ double *oResult); // OUT: start time of the frame in seconds.
+
+// Gets the end time of the specified frame.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetFrameEndTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iFrameNum, // IN: frame.
+ double *oResult); // OUT: end time of the frame in seconds.
+
+// Gets the value of the function curve for a speech target integrated over the
+// specified frame.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetSpeechTargetValueAtFrame(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech target track.
+ long iFrameNum, // IN: frame number.
+ double *oResult); // OUT: value of the function curve integrated over the frame.
+
+// Gets the dominant speech target at the specified frame.
+//
+// NOTE: this function is meant to be used in flipbook mode only.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetDominantSpeechTargetAtFrame(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iFrameNum, // IN: frame number.
+ TALKBACK_SPEECH_TARGET *oSpeechTarget); // OUT: dominant speech target.
+
+// Gets the value of the function curve for a speech gesture integrated over the
+// specified frame.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetGestureValueAtFrame(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iTrackNum, // IN: speech gesture track.
+ long iFrameNum, // IN: frame number.
+ double *oResult); // OUT: value of the function curve integrated over the frame.
+
+// ------------------
+// Phoneme functions.
+// ------------------
+
+// Gets the number of phonemes.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetNumPhonemes(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long *oResult); // OUT: number of phonemes.
+
+// Gets the enumeration of the specified phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetPhonemeEnum(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeNum, // IN: phoneme.
+ TALKBACK_PHONEME *oResult); // OUT: enumeration of the specified phoneme.
+
+// Gets the start time of the specified phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetPhonemeStartTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeNum, // IN: phoneme.
+ double *oResult); // OUT: start time of the phoneme in seconds.
+
+// Gets the end time of the specified phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetPhonemeEndTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeNum, // IN: phoneme.
+ double *oResult); // OUT: end time of the phoneme in seconds.
+
+// ---------------
+// Word functions.
+// ---------------
+
+// NOTE: these functions only yield data for text-based analysis.
+
+// Gets the number of words.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetNumWords(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long *oResult); // OUT: number of words.
+
+// Gets the text of the specified word.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetWord(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iWordNum, // IN: word.
+ long iMaxChars, // IN: size of word buffer.
+ char *oWord); // OUT: word buffer.
+
+// Gets the start time of the specified word.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetWordStartTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iWordNum, // IN: word.
+ double *oResult); // OUT: start time of the word in seconds.
+
+// Gets the end time of the specified word.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackGetWordEndTime(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iWordNum, // IN: word.
+ double *oResult); // OUT: end time of the word in seconds.
+
+// --------------------------
+// Phoneme editing functions.
+// --------------------------
+
+// Use these functions to modify the phoneme list after you get an opaque
+// analysis object from TalkBackGetAnalysis(). After modifying the phoneme list
+// in the opaque analysis object, subsequent TalkBackGet* calls on that opaque
+// analysis object for speech target (lip-synching) data will return values
+// based on the modified phoneme list. However, speech gesture data is not
+// affected by phoneme editing.
+//
+// NOTE: phoneme editing is only provided in order to support Ventriloquist-like
+// applications where tweaking of the phoneme segmenation (and subsequent
+// recalculation of the animation data) is required. Most customers probably
+// won't need this functionality.
+
+// Inserts a phoneme at the specified position in the specified manner.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackInsertPhoneme(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ TALKBACK_PHONEME iPhoneme, // IN: enumeration of phoneme to insert.
+ long iInsertPosition, // IN: position (phoneme number) at which to insert.
+ int iInsertBefore); // IN: manner of insertion:
+ // 0 means put phoneme after insert position;
+ // 1 means put phoneme before insert position.
+
+// Deletes the specified phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackDeletePhoneme(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeToDelete); // IN: phoneme to delete.
+
+// Changes the start time of the specified phoneme.
+//
+// NOTE: the start time specified may not be the actual start time for a number
+// of reasons, most notably if the specified start time will make the phoneme
+// too short. This function returns the actual start time so the caller can
+// check the result without having to query the phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackChangePhonemeStart(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeToChange, // IN: phoneme to change.
+ double *ioNewTime); // IN/OUT: new start time value in seconds (in); actual start time (out).
+
+// Changes the end time of the specified phoneme.
+//
+// NOTE: the end time specified may not be the actual end time for a number of
+// reasons, most notably if the specified end time will make the phoneme too
+// short. This function returns the actual end time so the caller can check the
+// result without having to query the phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackChangePhonemeEnd(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeToChange, // IN: phoneme to change.
+ double *ioNewTime); // IN/OUT: new end time value in seconds (in); actual end time (out).
+
+// Changes the enumeration of the specified phoneme.
+TALKBACK_ERR // RETURNS: TALKBACK_NOERR if successful, TalkBack error code if not.
+TalkBackChangePhonemeEnum(
+ TALKBACK_ANALYSIS *iAnalysis, // IN: opaque analysis object returned by TalkBackGetAnalysis().
+ long iPhonemeToChange, // IN: phoneme to change.
+ TALKBACK_PHONEME iNewPhoneme); // IN: new phoneme enumeration.
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif