Title: Programming By Voice
1Programming By Voice
- Andrew Begel
- Advisor Prof. Susan L. Graham
- University of California, Berkeley
- VL/HCC 2004
2Programming by Voice
for int i equals zero i less than ten i plus plus
1
3Programming by Voice
for int i equals zero i less than ten i plus plus
1
4Ambiguities
Spelling of ID?
KW or ID?
KW or ?
4 int eye equals 0 aye less then ten i plus plus
2
5Sometimes its hard!
for times ate equals file two load equals one
3
6Many Valid Interpretations!
for times ate equals file two load equals one
for (times ate file to().load 1)
3
7Many Valid Interpretations!
for times ate equals file two load equals one
for (times ate file to().load 1)
3
8Many Valid Interpretations!
for times ate equals file two load equals one
for (times ate file to().load 1)
fore.times(8).equalsFile(2, load 1)
3
9Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
4
10Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
- filetoload()
- filetoload
4
11Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
- filetoload()
- filetoload
- No immediately adjacent identifiers
4
12Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
- filetoload()
- filetoload
- No immediately adjacent identifiers
- No variables named file
4
13Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
- filetoload()
- filetoload
- No immediately adjacent identifiers
- No variables named file
- No methods named file
4
14Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
- filetoload()
- filetoload
- No immediately adjacent identifiers
- No variables named file
- No methods named file
- No method named filetoload
4
15Disambiguating filetoload
file to load
file 2 load
file toload
filetoload
- No immediately adjacent identifiers
- No variables named file
- No methods named file
- No method named filetoload
4
16The Vision
- Naturally Verbalized Programs
- Spoken Java Language
- Navigation and Editing Command Language
- Analyses that Resolve Ambiguities
- Prototype SPED SPeech EDitor
5
17Implementation
- Speech Recognition IBM ViaVoice
- Eclipse IDE
- Harmonia program analysis toolkit
- Generalized LR parsing with input stream
ambiguities - Persistent, incremental semantics
6
18Evaluation
- Hypothesis
- Programmers can learn to use SPED efficiently for
many programming tasks - User Study
- Train users on Spoken Java and command language
- Edit an existing program
- Create some new code
- Metrics
- Speed, vocabulary mistakes, grammatical mistakes,
system understanding errors, subjective
impressions
7
19Contributions
- Enabling programming by voice
- New methods for handling input ambiguities
- Exploiting syntax and semantics of programming
domain - Analyses for mixed command and programming
languages - Interface to commercial speech recognition tools
Andrew Begel abegel_at_cs.berkeley.edu
8