NVDA、争渡读屏语音开放API接口
什么是读屏软件?
读屏软件是一种专为视力障碍人士设计的,能够辅助视障人士操作计算机的工具,它可以将屏幕上显示的内容用语音朗读出来,这样视障人士就可以正常使用电脑了。
知名的屏幕阅读软件国内有争渡读屏、阳光读屏等,其中争渡读屏在国内最受欢迎,有免费的公益版。
国外有完全免费开源的NVDA,Windows 系统内置的讲述人(narrator)等。
目前争渡读屏和NVDA开放了语音接口,也就是说,开发者可以主动调用争渡或NVDA的语音接口朗读文本。
软件可以调用屏幕阅读器朗读信息,不仅仅是屏幕阅读器被动获取要朗读的内容。
本文主要采用C#演示争渡读屏和NVDA语音接口调用示例。
一、争渡读屏()
下载地址:http://zdsr.com/
争渡读屏语音接口可以让应用程序发送文本给争渡读屏进行朗读。
采用Win32DLL调用方式。
应用程序把接口dll放入自己应用目录下调用即可使用。
DLL可以在争渡读屏安装目录"C:\Program Files (x86)\zdsr\zdsr"获得。
32位接口:ZDSRAPI.dll;
64位接口:ZDSRAPI_x64.dll;
1.初始化语音接口
int WINAPI InitTTS(int channelType, WCHAR* channelName)
参数:
[in] int channelType: 0 读屏通道 1 独立通道,传入0;
[in] WCHAR* channelName 独立通道名称, channelType 0时传入NULL忽略
返回值:
0:成功
1:版本不匹配
2.朗读文本
int WINAPI Speak(WCHAR* text, BOOL bInterrupt)
参数:
[in] WCHAR* text: 要朗读的文本,Unicode
[in] BOOL bInterrupt: TRUE:清空排队,立刻打断朗读, FALSE:等待空闲时朗读
返回值:
0: 成功
1: 版本不匹配
2: ZDSR没有运行
3.获取朗读状态
int WINAPI GetSpeakState()
返回值:
1: 版本不匹配
2: ZDSR没有运行
3: 正在朗读
4: 没有朗读
4.停止朗读
void WINAPI StopSpeak()
返回值: void
C#平台调用声明如下(请将DLL放在应用程序同目录下的API文件夹内):
[DllImport(@"api\zdsrapi.dll", CharSet = CharSet.Unicode, EntryPoint = "InitTTS")] extern public static int ZD_InitTTS(int channelType, string channelName);
[DllImport(@"api\zdsrapi.dll", CharSet = CharSet.Unicode, EntryPoint = "Speak")] extern public static int ZD_Speak(string text, bool interrupt = true);
[DllImport(@"api\zdsrapi.dll", EntryPoint = "GetSpeakState")] extern public static int ZD_GetSpeakState();
[DllImport(@"api\zdsrapi.dll", EntryPoint = "StopSpeak")] extern public static void ZD_StopSpeak();
二、NVDA
NVDA屏幕阅读器下载:https://nvaccess.org/
语音SDK下载(内涵C#、Python、C/C++调用示例): https://share.weiyun.com/hzalIHPU
此 API 允许应用程序向 NVDA 通信,以便执行诸如朗读文本或输出盲文等功能。
API 以 dll(动态链接库)的形式提供。此 dll 中的功能可以从支持查找和调用 dll 中任何符号的任何编程语言(如 Python 中的 ctys)或链接到 dll 中的任意编程语言中调用,用于 C、C++和C#等语言。
C#调用示例(请将DLL放在应用程序同目录下的API文件夹内并改名为"NVDASpeech.dll"):
[DllImport(@"api\NvdaSpeech.dll", CharSet = CharSet.Unicode)] public static extern int nvdaController_brailleMessage(string message); // 调用NVDA输出盲文
[DllImport(@"api\NvdaSpeech.dll")] public static extern int nvdaController_cancelSpeech(); // 停止 NVDA 朗读
[DllImport(@"api\NvdaSpeech.dll", CharSet = CharSet.Unicode)] public static extern int nvdaController_speakText(string text); // 调用 NVDA 朗读文本
[DllImport(@"api\NvdaSpeech.dll")] public static extern int nvdaController_testIfRunning(); // 检查 NVDA 是否运行(返回 0 表示NVDA处于运行中)
NVDA、争渡读屏语音开放API接口的更多相关文章
- 开放API接口
[开放API]——知乎.博客园等开放API接口(更新ing) Cnodejs.org: https://cnodejs.org/api/ 和风天气: http://docs.heweather.c ...
- 开放API接口安全处理!
目录 概念 加密 MD5 Token 开放api参数 重复提交,恶意调用 日志 验证码 开放API接口安全处理! 参考文献: 公钥,私钥和数字签名这样最好理解 (转载) 概念 存在问题: 数据窃取 数 ...
- 开放API接口安全处理
一.开放API接口定义 顾名思义,开放出来给其他人调用的API接口就是开放API接口.例如,短信接口.邮件接口. 二.开放API的弱点 数据窃取 用户的密码等信息被不轨之人窃取,登录账号发布敏感信息, ...
- 开放api接口签名验证
不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...
- 【转】开放api接口签名验证
不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...
- 新浪网易淘宝等IP地区信息查询开放API接口调用方法
通过IP地址获取对应的地区信息通常有两种方法:1)自己写程序,解析IP对应的地区信息,需要数据库.2)根据第三方提供的API查询获取地区信息. 第一种方法,参见文本<通过纯真IP数据库获取IP地 ...
- 准备开发开放API接口
准备开发APP开放接口,允许JQUERY直接调用http://blog.csdn.net/wuxiangege/article/details/52238968 SIGN的设计与实现http://bl ...
- 远程开户系统开放API接口
如今随着智能识别技术的成熟和商用,金融领域也开始逐渐试水"远程开户".从OCR身份证识别到人脸识别,到如今市场上即将出现完整的远程开户系统,除了需要成熟的技术做支撑外,还需要对市场 ...
- springcloud提供开放api接口签名验证
一.MD5参数签名的方式 我们对api查询产品接口进行优化: 1.给app分配对应的key.secret 2.Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数 ...
随机推荐
- CentOS7 安装mysql并解决安装慢的问题
0.centOS7 mini版安装及网络配置 //可从我的网盘保存下载,可用虚拟机安装 链接:https://pan.baidu.com/s/10_AHxN0DtJ75s1oFOaaZ3A 密码:ud ...
- springboot启动过程中常用的回调
1.介绍 springboot提供非常丰富回调接口,利用这些接口可以做非常多的事情,对于一些常用的回调接口进行介绍 2.常用的拓展接口 1.ApplicationContextInitializer ...
- Source Insight 4安装图文教程(附链接)
Source Insight 4安装图文教程,附激活文件直链 下载链接:http://naturalporters.vicp.io/uploads/si4_kgen_unis.zip 直链没了,就用下 ...
- flask中错误使用flask.redirect('/path')导致的框架奇怪错误
我在首页的位置使用了如下代码: import flask @page_index.route('/') def index(): flask.redirect('/pythoncgi/') 结果站点出 ...
- WebGPU | 相关知识概述
首先看下WebGPU的目标: 同时支持实时屏幕渲染和离屏渲染. 使通用计算能够在 GPU 上高效执行. 支持针对各种原生 GPU API 的实现:Microsoft 的 D3D12.Apple 的 M ...
- QMainWindow(一)
mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> class MainWindo ...
- gorm中的高级查询
智能选择字段 GORM 允许通过 Select 方法选择特定的字段,如果您在应用程序中经常使用此功能,你也可以定义一个较小的结构体,以实现调用 API 时自动选择特定的字段,例如: type User ...
- Android开发----使用 Room 将数据保存到本地数据库
Room介绍以及不使用SQLite的原因 Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库. 处理大量结构化数据的应用可极大地受益于 ...
- 负载均衡的比例(权重,ip_hash,轮询)
目录 一:负载均衡的比例 1.轮询 2.权重 3.ip_hash 二:测试轮询 1.测试 2.重启 3.网址测试 三:测试ip_hash 一:负载均衡的比例 1.轮询 # 默认情况下,Nginx负载均 ...
- 学习JAVAWEB第三天
## 数据库的设计· 1. 多表之间的关系 1. 分类: 1. 一对一(了解): * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2. 一对多(多对一): * 如:部门和 ...