1- # ARIA- AT Automation Driver
1+ # macOS AT Driver Server
22
3- A [ WebSocket] ( https://developer.mozilla.org/en-US/docs/Web/API/WebSocket )
4- server which allows clients to observe the text enunciated by a screen reader
5- and to simulate user input
3+ An implementation of the [ AT Driver] ( https://w3c.github.io/at-driver/ ) remote
4+ end designed to work with screen readers on macOS.
65
76** [ aria-at-automation] ( https://github.com/w3c/aria-at-automation ) ** · ; [ aria-at-automation-harness] ( https://github.com/w3c/aria-at-automation-harness ) · ; aria-at-automation-driver · ; [ aria-at-automation-results-viewer] ( https://github.com/w3c/aria-at-automation-results-viewer )
87
98## Requirements
109
11- - Microsoft Windows
12- - [ Node.js] ( https://nodejs.org ) , including "Tools for Native Modules" as
13- offered by the Node.js installer
14- - [ the Microsoft Visual C++
15- runtime] ( https://aka.ms/vs/16/release/vc_redist.x86.exe )
16-
17- <details >
18- <summary >note for project maintainers</summary >
19-
20- "Tools for Native Modules" is required to install the "robotjs" npm module,
21- which is a dependency of this project.
22-
23- [ The Visual C++ runtime includes
24- ` VCRUNTIME140.dll ` ] ( https://answers.microsoft.com/en-us/windows/forum/all/vcruntime140dll/fc4c0470-4db0-4e7b-9537-58ea62f8ac05 ) ,
25- which is required by the automation voice.
26-
27- </details >
28-
29- ## Terminology
30-
31- - ** message** - a [ JSON] ( https://www.json.org ) -formatted string that describes
32- some occurrence of interest, emitted at the moment it occurred; the message
33- should be a JSON object value with two string properties: ` type ` and ` data `
34- - ** message type** - one of ` "lifecycle" ` , ` "speech" ` , or ` "error" `
35- - ` "lifecycle" ` - signifies that the message data is an expected lifecycle of
36- the automation voice (e.g. initialization and destruction)
37- - ` "speech" ` - signifies that the message data is text which a screen reader
38- has requested the operating system annunciate
39- - ` "error" ` - signifies that an exceptional circumstances has occurred
40- - ** message data** - information which refines the meaning of the message type
41-
42- ## Protocol
43-
44- This project implements [ AT Driver] ( https://w3c.github.io/at-driver/ ) , a
45- protocol published in 2024 as [ a W3C Draft Community Group
46- Report] ( https://www.w3.org/standards/types/#CG-DRAFT ) . That document
47- exhaustively describes the JSON-encoded WebSocket protocol. Please [ file a bug
48- report against this
49- project] ( https://github.com/w3c/aria-at-automation-driver/issues/new ) if you
50- observe any discrepencies with AT Driver.
51-
52- ## Architecture
53-
54- This tool is comprised of two main components: a text-to-speech voice and a
55- WebSocket server.
56-
57- ### Text-to-speech voice
58-
59- The text-to-speech voice is written in C++ and integrates with the [ Microsoft
60- Speech API
61- (SAPI)] ( https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ee125663(v=vs.85) ) .
62- Because it interfaces with the Windows operating system (that is: "below" the
63- screen reader in the metaphorical software stack), it can observe speech from
64- many screen readers without coupling to any particular screen reader.
65-
66- The voice has two responsibilities. First, it emits the observed speech data
67- and related events to a [ Windows named
68- pipe] ( https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipes ) . This
69- allows the second component to present a robust public interface for
70- programmatic consumption of the data. (The named pipe is an implementation
71- detail. Neither its content nor its presence is guaranteed, making it
72- inappropriate for external use.)
73-
74- Second, the voice annunciates speech data. It does this by forwarding speech
75- data to the system's default text-to-speech voice. This ensures that a system
76- configured to use the voice remains accessible to screen reader users.
10+ - macOS version 13 ("Ventura") or later
11+ - Node.js version 18 or later
12+
13+ ## Usage
14+
15+ 1 . Run the ` install ` sub-command in a terminal:
16+
17+ at-driver install
18+
19+ If prompted for system administration permission, grant permission.
20+
21+ 2 . Start the server by executing the ` serve ` sub-command in a terminal:
22+
23+ at-driver serve
24+
25+ The process will write a message to the standard error stream when the
26+ WebSocket server is listening for connections. The ` --help ` flag will cause
27+ the command to output advanced usage instructions (e.g. ` at-driver --help ` ).
28+
29+ 3 . Configure any screen reader to use the text-to-speech voice named "Bocoup
30+ Automation Voice."
31+
32+ 4 . Use any WebSocket client to connect to the server. The protocol is described
33+ below. (The server will print protocol messages to its standard error stream
34+ for diagnostic purposes only. Neither the format nor the availability of
35+ this output is guaranteed, making it inappropriate for external use.)
7736
7837### WebSocket server
7938
@@ -92,10 +51,6 @@ For details on contributing to this project, please refer to the file named
9251Licensed under the terms of the MIT Expat License; the complete text is
9352available in the LICENSE file.
9453
95- Copyright for portions of AT Driver are held by Microsoft as part of the
96- "Sample Text-to-Speech Engine and MakeVoice" project. All other copyright for
97- AT Driver are held by Bocoup.
98-
9954---
10055
10156### [ aria-at-automation] ( https://github.com/w3c/aria-at-automation )
0 commit comments