Sometimes NVDA parses a newline, but the AI model crashes with newlines. I forgot to commit some binary-files for the required python-modules. It works very vell and reliablte now.
You an get the new release here.
Making a complete synthesizer to autoswitch language in NVDA seemed a bit too much. I understand NVDA much better now and ported to language prediction and switching to a new plugin, that works with any speech-synthesizer. It’s a bit of a hack. It replaces the built in speak function from NVDA and modifies the speech-sequence before it’s given to the speech-synthesizer. Works great though. I tested it with IBM-TTS and onecore Windows. It does not work with Codefactory’s Vocalizer or Eloquence voices.
Here is the link to the initial release 0.0.1.
A long time ago I made a command-line based mass renaming tool called nmrename (Noneus’ Mass Renming Tool). Noneus was my old nickname. I use this program all the time and think it might be helpful to others. I made the 1.0 release on GiHub.
Here is the help-text:
Help for nmrename 1.0 USAGE: C:\Apps\nmrename\nmrename.exe: [FILES ...] [COMMAND ...] ... Positions are indexes for the filename. Start an index with "-", if you want to start index counting from the end of the filename. COMMANDS: -h --help : Print this help output. -d : Rename folderstructure too. Be careful with "/"'s! -f : Don't ask. Just rename. -l #1 : Load rename target paths from file #1 line by line. -cc : Convert filename to camel case. -cl : Convert filename to lower case. -cu : Convert filename to upper case. -exif #1 : Rename from EXIF-Data with a pattern. (e.g. %Y.%M.%D_%h:%m:%s_%O%e) Pattern Elements: %Y: year (e.g. 2012) %M: month (e.g. 06) %D: day (e.g. 09) %h: hour (e.g. 14) %m: minute (e.g. 40) %s: second (e.g. 09) %o: complete original filename %e: extension (e.g. .jpg) %O: filename without extension -fi #1 #2 : Insert filecount line from #2 at position #1. -fieldc #1 #2 #3 : Change field #2 with field #3 delimited by #1. -fieldd #1 #2 : Remove field #2 delimited by #1. -fn #1 : Insert filecount line from #1. -pd #1 #2 : Delete from position #1 to position #2. -ps #1 #2 : Set character at position #1 to character #2. -pyr #1 #2 : Replace the pattern "#1" with "#2" with python regex-interpreter. ( https://docs.python.org/library/re.html#re.sub ) -sd #1 : Remove string #1 from all filenames. -si #1 #2 : Insert string #2 at position #1. -sr #1 #2 : Replace string #1 with string #2. -tag #1 : Rename from audio tags with a pattern. (e.g. "%a - %A - %t - %y%e") Pattern Elements: %a: artist %A: album %AA: albumartist %t: title %y: year %tn: track-number %Tn: total-tracks %e: file extension
The C++ interfaced for the OneCore-API was changed in NVDA 2022.1.1:
I used the the version and reimplemented automatic language switching. On the way I cleaned up the code and make it work in more cases, when more than one text block is processed at once.
You can find the new version compatible with NVDA 2022.1.1+ here 0.2.0.
I’m using screenreaders for well over a year now. I constantly switch between English and German in emails, text, chats, etc. Many many times a day the screenreader would read German or English in the wrong voice, because it is not properly tagged. I October I bought a Macbook Air M1. VoiceOver on the M1 processor detectsds the language with artificial intelligence. Its very accurate and I wanted the same for my work and my gaming PC.
So I developed a NVDA plugin called: NVDAOneCoreAutoLang
It adds a new speech synthesizer, which is a modified version of the “Windows OneCore voices” synthesizer. After installation of my plugin a new synthesizer called “Windows OneCore voices (AutoLang)” is available. Before any text is spoken the plugin uses the fasttext language indentification model to guess the language. If a voice for this language is installed in Windows, the plugin uses that voice to speak the text. It defaults to the selected voice.
It’s the year 2021. This time I’m really making a homepage 🙂 I’m a legally blind engineer. Most content will be around my blindness. I might write about my two sports running and alpine skiing too. 🙂 Cheers!