什么是读屏软件?

读屏软件是一种专为视力障碍人士设计的,能够辅助视障人士操作计算机的工具,它可以将屏幕上显示的内容用语音朗读出来,这样视障人士就可以正常使用电脑了。

知名的屏幕阅读软件国内有争渡读屏、阳光读屏等,其中争渡读屏在国内最受欢迎,有免费的公益版。

国外有完全免费开源的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接口的更多相关文章

  1. 开放API接口

    [开放API]——知乎.博客园等开放API接口(更新ing)   Cnodejs.org: https://cnodejs.org/api/ 和风天气: http://docs.heweather.c ...

  2. 开放API接口安全处理!

    目录 概念 加密 MD5 Token 开放api参数 重复提交,恶意调用 日志 验证码 开放API接口安全处理! 参考文献: 公钥,私钥和数字签名这样最好理解 (转载) 概念 存在问题: 数据窃取 数 ...

  3. 开放API接口安全处理

    一.开放API接口定义 顾名思义,开放出来给其他人调用的API接口就是开放API接口.例如,短信接口.邮件接口. 二.开放API的弱点 数据窃取 用户的密码等信息被不轨之人窃取,登录账号发布敏感信息, ...

  4. 开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  5. 【转】开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  6. 新浪网易淘宝等IP地区信息查询开放API接口调用方法

    通过IP地址获取对应的地区信息通常有两种方法:1)自己写程序,解析IP对应的地区信息,需要数据库.2)根据第三方提供的API查询获取地区信息. 第一种方法,参见文本<通过纯真IP数据库获取IP地 ...

  7. 准备开发开放API接口

    准备开发APP开放接口,允许JQUERY直接调用http://blog.csdn.net/wuxiangege/article/details/52238968 SIGN的设计与实现http://bl ...

  8. 远程开户系统开放API接口

    如今随着智能识别技术的成熟和商用,金融领域也开始逐渐试水"远程开户".从OCR身份证识别到人脸识别,到如今市场上即将出现完整的远程开户系统,除了需要成熟的技术做支撑外,还需要对市场 ...

  9. springcloud提供开放api接口签名验证

    一.MD5参数签名的方式 我们对api查询产品接口进行优化: 1.给app分配对应的key.secret 2.Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数 ...

随机推荐

  1. spring security 在controller层 方法级别使用注解 @PreAuthorize("hasRole('ROLE_xxx')")设置权限拦截 ,无权限则返回403

    1.前言 以前学习的时候使用权限的拦截,一般都是对路径进行拦截 ,要么用拦截器设置拦截信息,要么是在配置文件内设置拦截信息, spring security 支持使用注解的形式 ,写在方法和接口上拦截 ...

  2. 第10组 Beta冲刺 (3/5)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14018630.html ·作业博客:https://edu.cnblogs.co ...

  3. TestNG 运行Webdriver测试用例

    1.单击选中的新建工程的名称,按Ctrl+N组合键,弹出对话框选择"TestNG"下的"TestNG class"选项,点击"next" 2 ...

  4. [流畅的Python]第一章数据模型

    这些来自同一家出版社的动物书 像是计算机科学界一盏盏指路明灯 余幼时 初试读 学浅 以为之晦涩难懂 像是老学究咬文嚼字 现在看起来还有些有趣 其实理工男大多都很有趣 这一章介绍了 怎么样去视线一个带有 ...

  5. 【Java】Collections

    文章目录 Collections reverse(List) shuffle(List) sort(List) sort(List,Comparator) swap(List,int, int) Ob ...

  6. 【Java】GUI编程

    GUI编程 前言 某koukou老师的任务罢了,好在狂神老师居然有GUI的课,只能说是有救星了. [狂神说Java]GUI编程入门到游戏实战 最好笑的是,老师要求掌握的居然是14年的知识,就连狂神在上 ...

  7. http状态码 200 304 404 503等

    浏览器采用http请求时,会封装http get等信息见下图请求头,然后服务器响应后回发一些信息,包括状态码,响应头,响应信息等等,如下图. 右上图可见两种状态码,一种是200 一种是304.其中20 ...

  8. pytest文档2-用例执行

    用例设计原则 1.文件名以test_******.py文件和*******_test.py 2.以test_****开头的函数 3.以Test***开头的类 4.以test_*****开头的方法 5. ...

  9. 什么是iptables?

    目录 一:iptables 1.iptables简介 2.什么是防火墙? 3.防火墙种类 二:iptables基本介绍 1.解析内容 三:iptables流程(讲解) 1.流入本机 2.解析(流入本机 ...

  10. docker镜像中文件丢失

    背景介绍 笔者创建了一个镜像,然后在不同的主机上启动,发现有的能启动,有的却不行,报错信息为找不到文件. 犹记得当初有人介绍,只要docker镜像做好了,拿到任何地方都可以用,此处好像不成呢,好诡异的 ...