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. 按照请求参数 ...
随机推荐
- 网络协议学习笔记(九)CDN和数据中心
概述 上一篇给大家介绍了DNS协议和HttpDns协议,现在给大家介绍一下CDN和数据中心相关的知识. CDN:你去小卖部取过快递么? 如果你去电商网站下单买个东西,这个东西一定要从电商总部的中心仓库 ...
- JVM组成详解
一.JVM 整体组成 JVM 整体组成可分为以下四个部分: 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库 ...
- win+ r 命令
Win 键+R calc:计算器 notepad:记事本 mspaint:画图 cmd:控制台 control:控制面板 desk.cpl:打开控制面板中的桌面设置 main.cpl:鼠标设置 ine ...
- 【解决了一个小问题】golang build中因为缓存文件损坏导致的编译错误
编译的过程中出现了一个吓人的错误: GOROOT=C:\Go #gosetup GOPATH=C:\Users\ahfuzhang\go #gosetup C:\Go\bin\go.exe mod t ...
- 浅谈MySQL同步到ElasticSearch的几种方式及其优缺点
同步双写 优点:业务逻辑简单. 缺点: 硬编码,有需要写入mysql的地方都需要添加写入ES的代码: 业务强耦合: 存在双写失败丢数据风险: 性能较差:本来mysql的性能不是很高,再加一个ES,系统 ...
- js整体
1.引入 <script type="text/javascript"> 2.输出 使用 window.alert() 写入警告框 使用 document.write ...
- 淘系工程师讲解的使用Spring特性优雅书写业务代码
使用Spring特性优雅书写业务代码 大家在日常业务开发工作中相信多多少少遇到过下面这样的几个场景: 当某一个特定事件或动作发生以后,需要执行很多联动动作,如果串行去执行的话太耗时,如果引入消息中 ...
- 不难懂------git开发过程中流程
001.创建仓库 002.新建项目 003.初始化仓库 这一步不需要做 git init : 文件夹中会多出一个隐藏的.git文件 004.克隆项目 git clone <项目地址> 0 ...
- Kubernetes的故事之持久化存储(十)
一.Storage 1.1.Volume 官网网址:https://kubernetes.io/docs/concepts/storage/volumes/ 通过官网说明大致总结下就是这个volume ...
- Python Study Note 1
Learn The First Day OF Operation Notes