<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Oformaterad text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.E-postmall17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.OformateradtextChar
        {mso-style-name:"Oformaterad text Char";
        mso-style-priority:99;
        mso-style-link:"Oformaterad text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=SV link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoPlainText><span lang=EN-US>>Isn't it the job of the speech renderer - not the screen renderer - to <o:p></o:p></span></p><p class=MsoNormal>>render speech correctly?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>You are probably right, it would be better if the speech synthesizer supported the speech dictionary.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>But there are so many synthesizers out there, and there is no standardized way to handle speech dictionaries. So, evry user have to learn how their speech synthesizer works and how to edit its pronunciation. And if you have multiple synthesizers to choose from, then it will be very annoying to learn how to handle every synthesizer.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>>I also have had next to no exposure to what other screen readers do or don't do regarding speech dictionaries. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>All screen readers I have tried uses speech dictionaries, including: jaws, nvda and orca.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>But, it is a bad idea to implement speech dictionaries just to be able to correct the pronunciation of a speech synthesizer. Because it will effect all synthesizers, even they whos pronunciation is correct. One such example is, when I were younger, I used a synthesizer that were unable to pronounce my name correct. Therefore, I edited the speech dictionary in jaws to fix the annoying problem. But when I had to use another synthesizer, then it pronounced my name bad too, even though it whould not have done that.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>But there are still one case where speech dictionaries witch affects every synthesizer is useful: if you want your speech synthesizer to pronounce contractions correctly. For example: km kilometers, libgcc libGCC, .bashrc .bashRC, openssl openSSL…<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>It is not the responsibility of the speech synthesizer. In fact, it is very bad when a speech synthesizer has implemented such contractions in their dictionary. One example is vocalizers synthesizers. I used their synthesizer called “Samantha” for some years ago. Vocalizer had implemented a lot of annoying contractions in the vocabulary. Samantha pronounced “cad” Canadian dollars, but for me, “cad” means computer aided design. So every time I read about cad, then Samantha spoke Canadian dollars.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>As a conclution, I think that it would be a good idea to implement a speech dictionary in brltty. But we must be clear about why, and what purpose it has.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Best regards!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Tage<o:p></o:p></span></p></div></body></html>