📄 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 + -