?? tw8adll.txt
字號:
錄放音函數適合于語音信息量較小的情況, 例如, 可一次將容量很小的
文件中的內容全部讀入緩沖區, 避免頻繁地打開或關閉文件. 多文件連
續放音可將多個不同的語音文件組合起來按一定的順序放音.
使用錄放音函數時應注意以下幾點:
1. 各個通道可以相互獨立地錄音或放音, 但某一通道不能同時錄音和放音
2. 對于以某一壓縮比錄音的語音文件, 放音時必須采用與錄音時相同的壓縮比
3. 對于文件錄放音通道的緩沖區大小, 用戶一般不必設置, 采用缺省值即可.
如果錄放音正常結束, 自動釋放緩沖區; 如果用戶在錄放音過程中退出, 必
須調用 TW_StopRecordFile(...) 或 TW_StopPlayFile(...) 結束錄放音,
并釋放緩沖區, 否則緩沖區不會被釋放
4. 應用程序必須通過不斷調用TW_RecordFileRest() 或 TW_PlayFileRest()
函數來保證錄放音的連續性。
5. 在有錄放音的應用程序中,應注意不要調用費時的操作(如較慢的數據庫
查詢),否則由于不能及時調用 TW_RecordFileRest()、TW_PlayFileRest(),
而影響錄放音的連續性。
緩沖區錄放音(只適用于C語言):
===========================
DWORD TW_StartRecord (WORD Ch, PBYTE pBuf, DWORD Length);
-------------------------------------------------------------
功能: 某一通道開始緩沖區錄音
參數: Ch: 通道號
pBuf: 錄音緩沖區指針
Length: 錄音字節數
返回: 上次錄音時還沒有錄完的字節數
說明: 各通道可以互不干擾, 獨立進行錄音, 調用 TW_RecordRest(...) 判斷是否錄完.
如果需要錄音到某一數據文件, 建議調用 TW_StartRecordFile(...)
在連續錄音時要多次調用 TW_StartRecord(...).
DWORD TW_StopRecord (WORD Ch);
--------------------------------
功能: 強制停止某一通道的緩沖區錄音
參數: Ch:通道號
返回: 停止錄音時還沒有錄完的字節數
說明: 某一通道錄音沒有結束時可以用此函數強制停止錄音
DWORD TW_RecordRest (WORD Ch);
-------------------------------
功能: 查詢某一通道有多少字節沒有錄完, 若沒錄完, 繼續錄音
參數: Ch:通道號
返回: 沒有錄完的字節數, 如果為 0, 則表示錄音結束
說明: 應用程序必須不斷調用 TW_RecordRest(...) 來保證錄音的連續性, 如果不
及時調用此函數, 錄音就會出現漏音. 返回 0 時, 不必再調用 TW_StopReord (...)
停止錄音
DWORD TW_StartPlay (WORD Ch, PBYTE pBuf, DWORD Length);
---------------------------------------------------------
功能: 某一通道開始緩沖區放音
參數: Ch: 通道號
pBuf: 放音緩沖區指針
Length: 放音字節數
返回: 上次放音時還沒有放完的字節數
說明: 各通道可以互不干擾, 獨立進行放音, 但是對某一個通道來說, 錄音和放音
不能同時進行, 調用 TW_PlayRest(...) 判斷是否放完.
如果需要對某一數據文件進行放音, 建議調用 TW_StartPlayFile(...)
在連續放音時要多次調用 TW_StartPlay(...).
DWORD TW_StopPlay (WORD Ch);
--------------------------------
功能: 強制停止某一通道的緩沖區放音
參數: Ch:通道號
返回: 停止放音時還沒有放完的字節數
說明: 某一通道放音沒有結束時可以用此函數強制停止放音
DWORD TW_PlayRest (WORD Ch);
--------------------------------
功能: 查詢某一通道還有多少字節沒有放完, 若沒放完, 繼續放音
參數: Ch: 通道號
返回: 沒有放完的字節數, 如果為 0, 則表示放音結束
說明: 應用程序必須不斷調用 TW_PlayRest(...) 來保證放音的連續性, 如果不及時
調用此函數, 放音就會出現斷音. 返回 0 時, 不必再調用 TW_StopPlay (...)
停止放音
文件錄放音:
===========
若以下函數返回負數時,其意義如下:
-1 : 通道號錯誤
-2 : 內存分配失敗
-3 : 打開或建立文件失敗
-4 : 文件操作失敗
TW_StartRecordFile
------------------
語法:
C : LONG TW_StartRecordFile (WORD Ch, LPCSTR FName, LONG Start, DWORD Length)
VB: Function TW_StartRecordFile(ByVal Ch As Integer, ByVal FName As String, ByVal Start As Long, ByVal Length As Long) As Long
Delphi: function TW_StartRecordFile(Ch:WORD; FName:PChar; Start, Length:Cardinal):longint
VF: TW_StartRecordFile(Ch,FName,Start,Length)
PB: FUNCTION Long TW_StartRecordFile (UnsignedInteger Ch, String FName, Long Start, UnsignedLong Length)
功能: 對某一通道進行文件錄音
參數: Ch: 通道號
FName: 數據文件名
Start: 文件起始位置
Length:錄音字節數
返回: 開始錄音前數據文件的長度 (返回負數表示文件錄音失敗)
說明: 如果數據文件不存在, 則被自動建立, 如果要將錄音數據追加到文件尾,
可將參數 3 設置成 LONG_MAX 或MAXLONG(在C語言中), 或將參數3設置
成一個足夠大的整數.各個通道可以互相獨立地進行文件錄音.
使用 TurboWay 系列電話卡所錄制的語音數據文件的格式都是標準 A 律
PCM 碼或者 ADPCM 碼, 文件擴展名統一規定為 TW, 例如: "HELLO.TW"
TW_RecordFileRest
-----------------
語法:
C : LONG TW_RecordFileRest(WORD Ch)
VB: Function TW_RecordFileRest(ByVal Ch As Integer) As Long
Delphi: function TW_RecordFileRest(Ch:WORD):longint
VF: TW_RecordFileRest(Ch)
PB: FUNCTION Long TW_RecordFileRest(UnsignedInteger Ch)
功能: 繼續文件錄音, 并不斷將緩沖區中錄完的內容寫入文件
參數: Ch: 通道號
返回: 沒有錄完的字節數 (返回負數表示文件錄音失敗)
說明: 應用程序必須隨時調用 TW_RecordFileRest(...) 來查詢文件錄音是否結束,
這樣才能保證文件錄音的連續性. 建議事先運行 SMARTDRV 提高寫盤速度.
返回 0 時, 不必再調用 TW_StopRecordFile (...) 停止錄音
TW_StopRecordFile
-----------------
語法:
C : LONG TW_StopRecordFile(WORD Ch)
VB: Function TW_StopRecordFile(ByVal Ch As Integer) As Long
Delphi: function TW_StopRecordFile(Ch:WORD):longint
VF: TW_StopRecordFile(Ch)
PB: FUNCTION Long TW_StopRecordFile(UnsignedInteger Ch)
功能: 強制停止某一通道的文件錄音
參數: Ch: 通道號
返回: 沒有錄完的字節數
TW_StartPlayFile
----------------
語法:
C : LONG TW_StartPlayFile (WORD Ch, LPCSTR FName, DWORD Start, DWORD Length)
VB: Function TW_StartPlayFile(ByVal Ch As Integer, ByVal FName As String, ByVal Start As Long, ByVal Length As Long) As Long
Delphi: function TW_StartPlayFile(Ch:WORD; FName:PChar; Start, Length:Cardinal):longint
VF: TW_StartPlayFile(Ch,FName,Start,Length)
PB: FUNCTION Long TW_StartPlayFile(UnsignedInteger Ch, String FName, UnsignedLong Start, UnsignedLong Length)
功能: 對某一通道進行文件放音
參數: Ch: 通道號
FName: 數據文件名
Start: 文件起始位置
Length: 放音字節數
返回: 實際放音的長度 (返回負數表示文件放音失敗)
說明: 如果要對全部數據文件進行放音, 可將參數 4 設置成 0.
各個通道可以互相獨立地進行文件放音, 建議事先運行 SMARTDRV 提高讀盤速度
TW_PlayFileRest
---------------
語法:
C : LONG TW_PlayFileRest(WORD Ch)
VB: Function TW_PlayFileRest(ByVal Ch As Integer) As Long
Delphi: function TW_PlayFileRest(Ch:WORD):longint
VF: TW_PlayFileRest(Ch)
PB: FUNCTION Long TW_PlayFileRest(UnsignedInteger Ch)
功能: 繼續文件放音, 并不斷將語音文件中未放音的部分讀入緩沖區
參數: Ch: 通道號
返回: 沒有放完的字節數 (返回負數表示文件放音失敗)
說明: 應用程序必須隨時調用 TW_PlayFileRest(...) 來查詢文件放音是否結束,
這樣才能保證文件放音的連續性. 返回 0 時, 不必再調用 TW_StopPlayFile(...)
停止放音
TW_StopPlayFile
---------------
語法:
C : LONG TW_StopPlayFile(WORD Ch)
VB: Function TW_StopPlayFile(ByVal Ch As Integer) As Long
Delphi: function TW_StopPlayFile(Ch:WORD):longint
VF: TW_StopPlayFile(Ch)
PB: FUNCTION Long TW_StopPlayFile(UnsignedInteger Ch)
功能: 強制停止某一通道的文件放音
參數: Ch: 通道號
返回: 沒有放完的字節數
多文件連續放音:
===============
TW_SetVoice(只適用于C語言)
--------------------------
語法: void TW_SetVoice (LPSTR *);
功能: 設置多文件放音中字符所對應的語音文件
參數: 語音文件名數組的地址
返回: 無
說明:
TW_SetVoicei
------------
語法: C : void TW_SetVoicei (int Index, LPSTR FName)
VB: Sub TW_SetVoicei(ByVal Index As Long, ByVal FName As String)
Delphi: procedure TW_SetVoicei(Index:integer;FName:PChar)
VF: TW_SetVoicei (Index, FName)
PB: SUBROUTINE TW_SetVoicei(Integer Index, string FName)
功能: 設置多文件放音中某個字符所對應的語音文件
參數: Index: 字符的序號
FName: 語音文件名
返回: 無
說明: 在調用TW_SetVoice()設置完后,可調用本函數修該某個字符
對應的語音文件.
TW_MakeSentence
---------------
語法:
C: void TW_MakeSentence (double Digit, LPSTR RetStr);
VB: Sub TW_MakeSentence (ByVal Digit As Double, ByVal RetStr As String)
Delphi: procedure TW_MakeSentence(Digit:double;RetStr:PChar)
VF: TW_MakeSentence(Digit, @RetStr)
PB: SUBROUTINE TW_MakeSentence(double Digit, REF String RetStr)
功能: 轉換雙精度浮點數為放音語句字符串(用在多文件連續放音中)
參數: Digit: 雙精度浮點數
RetStr: 語句字符串
返回: 無
說明: 函數調用前, 必須給參數RetStr分配足夠的空間.
如果希望念出一個數, 例如 123.4, 可以分別將數字 0 到 9 及小數點的語
音存入11個語音文件, 將數轉換為字符串后直接調用 TW_PlaySentence(...)
函數放音, 但這時放音內容將是: "一二三點四", 不符合通常習慣的 "一
百二十三點四" 的報數方式. 如果希望按照習慣方式報數, 可調用本函數,
它自動將數轉換為字符串, 并處理成符合人們習慣的報數字符串, 此時再調
用 TW_PlaySentence(...) 函數即可按習慣方式報數
數的范圍是: 大于負一萬億 (-10^12), 小于一萬億 (10^12)
本函數要求在程序中先調用 TW_SetVoice()或TW_SetVoicei()建立字符與語音文件
的對應關系, 才能使用TW_PlaySentence()開始放音. 在調用TW_SetVoice()時,語音
文件名數組應按如下定義:
char *VoiceFiles[] = {
空,
空,
對應 '0' 的語音文件名,
對應 '1' 的語音文件名,
對應 '2' 的語音文件名,
對應 '3' 的語音文件名,
對應 '4' 的語音文件名,
對應 '5' 的語音文件名,
對應 '6' 的語音文件名,
對應 '7' 的語音文件名,
對應 '8' 的語音文件名,
對應 '9' 的語音文件名,
對應 '十'的語音文件名,
對應 '百'的語音文件名,
對應 '千'的語音文件名,
對應 '萬'的語音文件名,
對應 '億'的語音文件名,
對應 '點'的語音文件名,
對應 '負'的語音文件名
};
數組名任意, 數組頭兩項必須為空 NULL, 從第三項開始存放文件名.
在調用TW_SetVoicei()時,
要求字符的序號與語音文件有以下對應關系:
字符的序號 語音文件名
0 NULL
1 NULL
2 數字 0 的語音文件
3 數字 1 的語音文件
4 數字 2 的語音文件
5 數字 3 的語音文件
6 數字 4 的語音文件
7 數字 5 的語音文件
8 數字 6 的語音文件
9 數字 7 的語音文件
10 數字 8 的語音文件
11 數字 9 的語音文件
12 十 的語音文件
13 百 的語音文件
14 千 的語音文件
15 萬 的語音文件
16 億 的語音文件
17 小數點 '.' 的語音文件
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -