⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uspeech.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
📖 第 1 页 / 共 2 页
字号:
//==============================================================================
// $修订版本号: 1.000 $
// $日期      : 2005年4月15日 星期五 12:18:23 $
// $版本号    : 1.0.0 Alpha 1 $
//
// Taxi Service Sytem Voice Base Unit
// 出租车业务系统发音逻辑基础单元。
//
// $BeginLog$
// $Endlog  $
// $版权所有 (c)2005 广州众向科技有限公司。 保留所有权利$
//==============================================================================
{: 出租车业务系统发音逻辑基础单元。
}

unit uSpeech;

interface

uses Classes, MPlayer, Controls, Math, SysUtils;


type
  TCityVoiceName = (  TAXI_VOICE_BEIJING,
                      TAXI_VOICE_TIANJING,
                      TAXI_VOICE_SHANGHAI,
                      TAXI_VOICE_CHONGQING,
                      TAXI_VOICE_XIANGGANG,
                      TAXI_VOICE_HEILONGJIANG,
                      TAXI_VOICE_JILIN,
                      TAXI_VOICE_LIAONING,
                      TAXI_VOICE_SHANDONG,
                      TAXI_VOICE_HENAN,
                      TAXI_VOICE_HEBEI,
                      TAXI_VOICE_HUBEI,
                      TAXI_VOICE_HUNAN,
                      TAXI_VOICE_SHANXI_JIN,
                      TAXI_VOICE_SHANXI_SHAN,
                      TAXI_VOICE_GANSU,
                      TAXI_VOICE_QINGHAI,
                      TAXI_VOICE_YUNNAN,
                      TAXI_VOICE_SICHUANG,
                      TAXI_VOICE_GUIZHOU,
                      TAXI_VOICE_ANHUI,
                      TAXI_VOICE_JIANGSU,
                      TAXI_VOICE_JIANGXI,
                      TAXI_VOICE_ZHEJIANG,
                      TAXI_VOICE_FUJIAN,
                      TAXI_VOICE_GUANGDONG,
                      TAXI_VOICE_HAINAN,
                      TAXI_VOICE_TAIWAN,
                      TAXI_VOICE_NEIMENGGU,
                      TAXI_VOICE_GUANGXI,
                      TAXI_VOICE_NINGXIA,
                      TAXI_VOICE_XIZANG,
                      TAXI_VOICE_XINJIANG
                     );

  TMediaFileSpeech = class
  private
    FParent: TWinControl;
    FMPSpeech: TMediaPlayer;
    FSoundFilePath: string;
    FTaxiSpeechQueue: TStringList;
    FCurrentSpeechItemIndex: Integer;
  private
    FOnSpeechStop: TNotifyEvent;
    FOnSpeechStart: TNotifyEvent;
  private
    procedure DoOnMediaPlayerNotify(Sender: TObject);
  private
    procedure speechItem(_index: Integer);
  public
    constructor Create(AControl: TControl);
    destructor  Destroy; override;
  public
    procedure Speech;
    procedure FinishSpeech;
    procedure AddSpeech(_speech_str: string);
  published
    property SoundFilePath: string read FSoundFilePath write FSoundFilePath;
  published
    property OnSpeechStop: TNotifyEvent read FOnSpeechStop write FOnSpeechStop;
    property OnSpeechStart: TNotifyEvent read FOnSpeechStart write FOnSpeechStart;
  end;

  // 全局方法
  function OneNumberToCHNSpeech(_one_number: Integer): string;
  function OneCharToSpeech(_one_char: string): string;
  function OneCityToSpeech(_one_city: string): string;
  function NumCharStrToCHNSpeech(_str: string): string;
  function NumberToCHNSpeech(_number: Integer): string;
  function IndexOfCityName(const CityName:String):Integer;
  function GetCityNameVoice(const CityName: String):String;

const
  // 中英文业务语音
  // 中英文业务单次语音
  TAXI_VOICE_CHN_YUET   = 'CHN_YueT.wav';

  // 中文数字语音
  TAXI_VOICE_CHN_YI     = 'CHN_Yi.wav';
  TAXI_VOICE_CHN_YAO    = 'CHN_Yao.wav';
  TAXI_VOICE_CHN_ER     = 'CHN_Er.wav';
  TAXI_VOICE_CHN_SAN    = 'CHN_San.wav';
  TAXI_VOICE_CHN_SI     = 'CHN_Si.wav';
  TAXI_VOICE_CHN_WU     = 'CHN_Wu.wav';
  TAXI_VOICE_CHN_LIU    = 'CHN_Liu.wav';
  TAXI_VOICE_CHN_QI     = 'CHN_Qi.wav';
  TAXI_VOICE_CHN_BA     = 'CHN_Ba.wav';
  TAXI_VOICE_CHN_JIU    = 'CHN_Jiu.wav';
  TAXI_VOICE_CHN_SHI    = 'CHN_Shi.wav';
  TAXI_VOICE_CHN_LIN    = 'CHN_Lin.wav';
  TAXI_VOICE_CHN_QIAN   = 'CHN_Qian.wav';
  TAXI_VOICE_CHN_BAI    = 'CHN_Bai.wav';

  // 英文字母语音
  TAXI_VOICE_CHAR_A = 'CHAR_A.wav';
  TAXI_VOICE_CHAR_B = 'CHAR_B.wav';
  TAXI_VOICE_CHAR_C = 'CHAR_C.wav';
  TAXI_VOICE_CHAR_D = 'CHAR_D.wav';
  TAXI_VOICE_CHAR_E = 'CHAR_E.wav';
  TAXI_VOICE_CHAR_F = 'CHAR_F.wav';
  TAXI_VOICE_CHAR_G = 'CHAR_G.wav';
  TAXI_VOICE_CHAR_H = 'CHAR_H.wav';
  TAXI_VOICE_CHAR_I = 'CHAR_I.wav';
  TAXI_VOICE_CHAR_J = 'CHAR_J.wav';
  TAXI_VOICE_CHAR_K = 'CHAR_L.wav';
  TAXI_VOICE_CHAR_L = 'CHAR_L.wav';
  TAXI_VOICE_CHAR_M = 'CHAR_M.wav';
  TAXI_VOICE_CHAR_N = 'CHAR_N.wav';
  TAXI_VOICE_CHAR_O = 'CHAR_O.wav';
  TAXI_VOICE_CHAR_P = 'CHAR_P.wav';
  TAXI_VOICE_CHAR_Q = 'CHAR_O.wav';
  TAXI_VOICE_CHAR_R = 'CHAR_R.wav';
  TAXI_VOICE_CHAR_S = 'CHAR_S.wav';
  TAXI_VOICE_CHAR_T = 'CHAR_Y.wav';
  TAXI_VOICE_CHAR_U = 'CHAR_U.wav';
  TAXI_VOICE_CHAR_V = 'CHAR_V.wav';
  TAXI_VOICE_CHAR_W = 'CHAR_W.wav';
  TAXI_VOICE_CHAR_X = 'CHAR_X.wav';
  TAXI_VOICE_CHAR_Y = 'CHAR_Y.wav';
  TAXI_VOICE_CHAR_Z = 'CHAR_Z.wav';

  TAXI_VOICE_CHAOSHU = 'CHAOSHU.wav';
  TAXI_VOICE_FANGDAO = 'FANGDAO.wav';
  TAXI_VOICE_CHAOSHITINGCE = 'CHAOSHITINGCE.wav';
  TAXI_VOICE_QIANGJIE = 'QIANGJIE.wav';
  TAXI_VOICE_BAOJING = 'BAOJING.wav';

  TAXI_VOICE_LINSHI = 'LINSHI.wav';
  TAXI_VOICE_GUA = 'GUA.wav';

const
  TAXI_CITYNAME :Array[0..32] of string =
                  ('京','津','沪','渝','港','黑','吉','辽','鲁','豫',
                   '冀','鄂','湘','晋','陕','甘','青','云','川','贵',
                   '皖','苏','赣','浙','闽','粤','琼','台','蒙','桂',
                   '宁','藏','新'
                  );
                  
  TAXI_CITYNAME_VOICE :Array[TCityVoiceName] of String =
                  (
                    'CITY_BEIJING.wav',
                    'CITY_TIANJING.wav',
                    'CITY_SHANGEHAI.wav',
                    'CITY_CHONGQING.wav',
                    'CITY_XIANGGANG.wav',
                    'CITY_HEILONGJIANG.wav',
                    'CITY_JILIN.wav',
                    'CITY_LIAONING.wav',
                    'CITY_SHANDONG.wav',
                    'CITY_HENAN.wav',
                    'CITY_HEBEI.wav',
                    'CITY_HUBEI.wav',
                    'CITY_HUNAN.wav',
                    'CITY_SHANXI_JIN.wav',
                    'CITY_SHANXI_SHAN.wav',
                    'CITY_GANSU.wav',
                    'CITY_QINGHAI.wav',
                    'CITY_YUNNAN.wav',
                    'CITY_SICHUANG.wav',
                    'CITY_GUIZHOU.wav',
                    'CITY_ANHUI.wav',
                    'CITY_JIANGSU.wav',
                    'CITY_JIANGXI.wav',
                    'CITY_ZHEJIANG.wav',
                    'CITY_FUJIAN.wav',
                    'GUANGDONG.wav',
                    'HAINAN.wav',
                    'TAIWAN.wav',
                    'NEIMENGGU.wav',
                    'GUANGXI.wav',
                    'NINGXIA.wav',
                    'XIZANG.wav',
                    'XINJIANG.wav'
                  );

implementation

//------------------------------------------------------------------------------
//  全局功能函数
//------------------------------------------------------------------------------

{: 生成单个数字的中文语音串。
  @param _one_number  单个的数字
  @result             生成的语音串
}
function OneNumberToCHNSpeech(_one_number: Integer): string;
begin
  case _one_number of
    0: Result := TAXI_VOICE_CHN_LIN;
    1: Result := TAXI_VOICE_CHN_YI;
    2: Result := TAXI_VOICE_CHN_ER;
    3: Result := TAXI_VOICE_CHN_SAN;
    4: Result := TAXI_VOICE_CHN_SI;
    5: Result := TAXI_VOICE_CHN_WU;
    6: Result := TAXI_VOICE_CHN_LIU;
    7: Result := TAXI_VOICE_CHN_QI;
    8: Result := TAXI_VOICE_CHN_BA;
    9: Result := TAXI_VOICE_CHN_JIU;
  end;
end;

{: 生成单个数字的中文语音串。
  @param _one_city  单个的城市简称
  @result           生成的语音串
}
function OneCityToSpeech(_one_city: string): string;
begin
  if Length(Trim(_one_city)) = 0 then exit;
  Result := GetCityNameVoice(Copy(_one_city,1,2));
end;

{: 生成单个字母的语音串。
  @param  _one_char   单个的字母
  @result             生成的语音串
}
function OneCharToSpeech(_one_char: string): string;
begin
  if Trim(_one_char) = '' then Exit;

  case Ord(UpperCase(_one_char)[1]) of
    Ord('A'): Result := TAXI_VOICE_CHAR_A;
    Ord('B'): Result := TAXI_VOICE_CHAR_B;
    Ord('C'): Result := TAXI_VOICE_CHAR_C;
    Ord('D'): Result := TAXI_VOICE_CHAR_D;
    Ord('E'): Result := TAXI_VOICE_CHAR_E;
    Ord('F'): Result := TAXI_VOICE_CHAR_F;
    Ord('G'): Result := TAXI_VOICE_CHAR_G;
    Ord('H'): Result := TAXI_VOICE_CHAR_H;
    Ord('I'): Result := TAXI_VOICE_CHAR_I;
    Ord('J'): Result := TAXI_VOICE_CHAR_J;
    Ord('K'): Result := TAXI_VOICE_CHAR_K;
    Ord('L'): Result := TAXI_VOICE_CHAR_L;
    Ord('M'): Result := TAXI_VOICE_CHAR_M;
    Ord('N'): Result := TAXI_VOICE_CHAR_N;
    Ord('O'): Result := TAXI_VOICE_CHAR_O;
    Ord('P'): Result := TAXI_VOICE_CHAR_P;
    Ord('Q'): Result := TAXI_VOICE_CHAR_Q;
    Ord('R'): Result := TAXI_VOICE_CHAR_R;
    Ord('S'): Result := TAXI_VOICE_CHAR_S;
    Ord('T'): Result := TAXI_VOICE_CHAR_T;
    Ord('U'): Result := TAXI_VOICE_CHAR_U;
    Ord('V'): Result := TAXI_VOICE_CHAR_V;
    Ord('W'): Result := TAXI_VOICE_CHAR_W;
    Ord('X'): Result := TAXI_VOICE_CHAR_X;
    Ord('Y'): Result := TAXI_VOICE_CHAR_Y;
    Ord('Z'): Result := TAXI_VOICE_CHAR_Z;
  end;
end;

{: 从由数字和字符组成的字符串生成中文语音串。
  @param  _str   由数字和字符组成的字符串
  @result        生成的语音串
}
function NumCharStrToCHNSpeech(_str: string): string;
var
  i: Integer;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -