什么是读屏软件?

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

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

国外有完全免费开源的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. Flowable实战(五)表单和流程变量

    一.流程变量   流程实例按步骤执行时,需要保存并使用一些数据,在Flowable中,这些数据称为变量(variable).   流程实例可以持有变量,称作流程变量(process variables ...

  2. Keil MDK STM32系列(四) 基于抽象外设库HAL的STM32F401开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  3. 【Java】泛型

    文章目录 泛型 为什么要有泛型 在集合中使用泛型 如何自定义泛型结构 自定义泛型类.接口 泛型方法 泛型在继承方面的体现 通配符的使用 有限制条件的通配符的使用 泛型 为什么要有泛型 集合容器类在设计 ...

  4. 【刷题-LeetCode】204. Count Primes

    Count Primes Count the number of prime numbers less than a non-negative number, *n*. Example: Input: ...

  5. 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器

    这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 富文本编辑器 万里长征 ...

  6. 阿里巴巴如何进行测试提效 | 阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  7. IDEA中导入Maven工程(module)

    导入其它Maven工程时可能会出现依赖代码变红等等可以重新导入 右键pom.xml文件 --->Maven---->Reimport  ,idea强制刷新内容,一般能解决依赖没有识别的问题 ...

  8. postgresql安装(windows)

    官网: https://www.postgresql.org/ 下载页面:https://www.enterprisedb.com/downloads/postgres-postgresql-down ...

  9. MySql下载与安装(部署)

    一:MySQL介绍 1.MySQL简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB ...

  10. MySQL开发篇,存储引擎的选择真的很重要吗?

    前言 谁说MySQL查询千万级别的数据很拉跨?我今天就要好好的和你拉拉家常,畅谈到深夜,一起过除夕!这篇文章也是年前的最后一篇,希望能带给大家些许收获,不知不觉查找文档和参考实体书籍就写了这么多,自己 ...