Delphi:文本朗读器(基于百度TTS语音库)@TOC
Delphi:文本朗读器–文本转语音(基于百度TTS语音库)
unit uSpeecher;
interface
uses
Windows, Messages, SysUtils, Classes,IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket,
IdIOHandlerStack, IdSSL, IdSSLOpenSSL,bass,strutils;
const
MY_CUID='F0B5F42DAA724497B7D531228EA6392D';
WM_SPEECHER = WM_USER+1004; //语音消息
PERSON_1=1; //度小宇=1
PERSON_0=0; //度小美=0
PERSON_3=3; //度逍遥=3
PERSON_4=4; //度丫丫=4
PERSON_5=5; //度小娇=5
PERSON_103=103; //度米朵=103
PERSON_106=106; //度博文=106
PERSON_110=110; //度小童=110
PERSON_111=111; //度小萌=111
AUE_MP3=3; //mp3
AUE_PCM_16=4; //4为pcm-16k
AUE_PCM_8=5; //5为pcm-8k;
AUE_WAV=6; //6为wav(内容同pcm-16k);
HTTP_TTS='http://tsn.baidu.com/text2audio';
HTTPS_TTS='https://tsn.baidu.com/text2audio';
MAX_LEN_TEXT=2048; //一次合成的最大字符数;
MAX_LEN_TEXT_NET=95; //网络合成的最大字符数;
MAX_PLAY_VOLUM=1; //播放音量最大值;
STAT_STOP=0;
STAT_PLAYING=1;
STAT_PAUSE=2;
type
TSpeecher = class(TThread)
private
mBusy:boolean;
mPause:boolean;
Fdatadir:string; //工作目录(保存mp3);
FhForm:HWND;
FText:String; //朗读的文本;
FToken:string;
Fcuid:string; //GUID,token;
FSpeed:integer; //语速,取值0-15,默认为5中语速
FPitch:integer; //音调,取值0-15,默认为5中语调
FVolum:integer; //音量,取值0-15,默认为5中音量
Fperson:integer; //发音人;
Faue:integer; //语音格式;
FPlayVolum:Single; //播放音量;
Fstate:integer; //播放状态:停止;暂停,播放中
function LinkHttpParameters(text:string):utf8string; //连接参数 ;
function saveAudioToFile(text:string):string; //保存语音到文件
function playAudio(hAudio: HSTREAM):boolean;
procedure cutText(text:string;var ss:tstrings);//将长文本切割;
procedure SetFormHandle(hForm:HWND);
procedure SetToken(token:string);
procedure Setcuid(cuid:string);
procedure SetSpeed(Speed:integer);
procedure SetPitch(Pitch:integer);
procedure SetVolum(Volum:integer);
procedure SetPlayVolum(PlayVolum:Single);
procedure SetPerson(person:integer);
procedure SetAue(aue:integer);
procedure SetText(text:string);
procedure SetState(state:integer);
//procedure SetFormHandle(hForm:HWND);
prote