summaryrefslogtreecommitdiffstats
path: root/2023/talks/voice.md
blob: 6329fcfdb8feda46cfccf49aebbc90a8e03668af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[[!meta title="Improving access to AI-assisted literate programming with voice control"]]
[[!meta copyright="Copyright © 2023 Blaine Mooers"]]
[[!inline pages="internal(2023/info/voice-nav)" raw="yes"]]

<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->


# Improving access to AI-assisted literate programming with voice control
Blaine Mooers (he/him/his) - Pronunciation: pronounced like "moors", blaine-mooers(at)ouhsc.edu, https://basicsciences.ouhsc.edu/bmb/Faculty/bio_details/mooers-blaine-hm-phd, https://twitter.com/BlaineMooers, https://github.com/MooersLab, https://codeberg.org/MooersLab, mastodon(at)bhmooers

[[!inline pages="internal(2023/info/voice-before)" raw="yes"]]

The audience will learn how to use voice control to create literate
programming documents in Emacs. After reviewing the benefits of
literate programming, I will review the prior work done with the voice
control in Emacs. I will present the reasons why you'd want to use
voice control; they go beyond the obvious benefit of avoiding or
working around repetitive stress injuries and include the benefits of
using voice control while standing to break up long periods of
sitting, which are detrimental to one's health. There are many options
for voice control in and out of the Emacs. I will review a list of
several and then drill in on two: one that is easy but of limited
extensibility (Voice In Plus (<https://dictanote.co/voicein/plus/>) and
one that is harder to learn but more extensible (Talon Voice
(<https://talon.wiki/>)). The latter has a welcoming community of users
and developers in the Talon Slack channel.

The Voice In Plus is a plugin for the Google Chrome browser that
allows you to dictate in the text areas on web pages. The dictated
text can be sent as soon as it appears in the browser to Emacs via
GhostText and the Atomic-Chrome package. You can insert custom code
snippets by voice control in the text area using Voice In Plus's
support for custom snippets. Or, you can insert yasnippet snippets by
voice control in the corresponding buffer in Emacs. I will demonstrate
how to set up this workflow and how to use it to create an org mode
file. This workflow is very effective for the creation of lots of
prose, but not code.

The second approach uses the open-source software called Talon
(<http://talon.wiki>), which is good for both prose and code. This
package enables precise voice control in a wide variety of
applications including Emacs. This package is also highly configurable
using Python script and an accompanying Talonscript file, which has a
simple YAML file format. The general users of Talon who know nothing
about Python can easily configure their setup using Talonscript files.
Advanced users can use Python to add modules to the Talon package to
extend its functionality. I will demonstrate how to write an org mode
file with executable code blocks with Talon running in Emacs. I will
edit and run the code blocks by voice control with and without the
help of generative AI in the form of Copilot.

I also demonstrate an interactive quiz in Python and Elisp that I
developed to the support the mastery of the voice control commands. By
running the quiz with voice control, you can accelerate mastery of the
commands. I learned the Talon alphabet in one day by taking the quiz
at spaced intervals. The quiz only took 60 seconds to complete when I
was proficient.

I will conclude with a discussion of lessons learned and opportunities
for using voice control in Emacs for AI-assisted literate programming.



[[!inline pages="internal(2023/info/voice-after)" raw="yes"]]

[[!inline pages="internal(2023/info/voice-nav)" raw="yes"]]