97 lines
4.2 KiB
Markdown
97 lines
4.2 KiB
Markdown
---
|
||
layout: main
|
||
---
|
||
|
||
# TTS Replacements
|
||
|
||
> Text-to-Speech Replacements are used to change the way the engine pronounces certain words, to skip certain characters while reading, or set correct stress marks.
|
||
|
||
* Enable TTS Replacements
|
||
* Show the passage with replacement results
|
||
* The **Replacements** dialog for setting replacement rules
|
||
|
||
|1|2|3|
|
||
|-|-|-|
|
||
||||
|
||
|
||
Classic replacements are supported (straightforward change of one string for another), or you can use regular expressions (RegExp).
|
||
|
||
## Expressions
|
||
|
||
* "text" - Simple text
|
||
* "*text" - * RexExp rule
|
||
* "#text" - disabled rule
|
||
* "text256" - disabled rule
|
||
|
||
## Examples
|
||
|
||
* "Lib." -> "Librera" - replace Lib. with Librera
|
||
* "Librera" -> "Libréra" - add a correct stress mark
|
||
* "#Lib." -> "Librera" - use "#" to disable a rule
|
||
* "*(L|l)ib." -> "$1ibrera" - replace Lib. with Librera and lib. with librera
|
||
* "*[()"«»*”“/[]]" -> "" - skip chars
|
||
* "*[?!:;–|—|―]" -> "," - replace chars with a pause (,)
|
||
|
||
## TTS Commands
|
||
|
||
* "text" -> ttsPAUSE - Add pause after "text"
|
||
* "text" -> ttsSTOP - Stop TTS if find "text" in the sentence
|
||
* "text" -> ttsNEXT - Go to next page if find "text" in the sentence
|
||
* "text" -> ttsSKIP - Skip reading sentence if find "text" in the sentence
|
||
|
||
## Add a Rule-File
|
||
|
||
**Librera** supports RegExp rule-files from **@Voice Reader**
|
||
Check out this sample **demo-replaces.txt** below:
|
||
|
||
```
|
||
" живого " "живо́ва"
|
||
" как глаза " " как глаза́ "
|
||
" мне глаза" " мне глаза́"
|
||
" наклоняющая головы" "наклоня́ющая го́ловы"
|
||
" никакого стрелка" "никако́во стрелка́"
|
||
" ПОЖАРОБЕЗОПАСНУЮ СРЕДУ" "пожарабезопа́сную среду́."
|
||
" Стрелки!" "Стрелки́!"
|
||
" стрелки?" "стрелки́?"
|
||
", все так," ", всё так,"
|
||
"Зачем, стрелок?" "Зачем, стрело́к?"
|
||
"стрелок?" "стрело́к?"
|
||
*"(?i)\b\Q душа в душу\E\b" "душа́ в ду́шу"
|
||
*"(?i)\b\Q подогнулись\E\b" "падагну́лись"
|
||
*"(?i)\b\Q стрелки почувствовали\E\b" "стрелки́ почувствовали"
|
||
*"(?i)\b\Q стрелки продолжили\E\b" "стрелки́ продолжили"
|
||
*"(?i)\b\Q стрелку из\E\b" "стрелку́ из"
|
||
*"(?i)\b\Q стрелок\E\b" "стрело́к"
|
||
*"(?i)\b\Q стрелы\E\b" "стре́лы"
|
||
*"(?i)\b\Q*\E\b" "сно́ска"
|
||
*"(?i)\b\Q1 курса\E\b" "1-го курса"
|
||
*"(?i)\b\Q171 группы\E\b" "171-ой группы"
|
||
*"(?i)\b\Q1977\E\b" "1977-ой"
|
||
*"(?i)\b\QAcapela\E\b" "Акапэ́'ла"
|
||
*"(?i)\b\QBIOS\E\b" "БИ́“О́С"
|
||
|
||
*"(^| )(Д|д)-р" " доктор"
|
||
"(^| )(Г|г)-н" " господин"
|
||
*"(\d+)\s?-\s?я\b(?# ""я"" на границе слова)" "$1-я "
|
||
```
|
||
## Skip Cropped Areas in PDF Documents
|
||
> Very often pages in PDF files (books, journal articles, textbooks, etc.) have headers and footers that run throughout the entire document. You can crop the running heads out by two-finger pinch, which will carry on to the next (and previous) pages. But your TTS engine does not have a clue about your manipulations. So, you need to tell it what to do (Skip the annoying thing!) while reading the document out loud to you.
|
||
|
||
In **Librera** we have introduced special replacements (commands) that will allow you to ignore cropped areas and ensure continuous, uninterrupted reading.
|
||
* In the **Replacements** window, enter a word or word sequence in the left column and _ttsSKIP_ as its replacement. This replacement will tell the engine to skip the sentence with this word/word sequence
|
||
* Enter a word or word sequence in the left column and _ttsNEXT_ as its replacement. The replacement will tell the engine to skip the sentence with this word/word sequence and immediately go to next page
|
||
* Don't forget to hit _APPLY_ to let the replacements hold
|
||
|
||
|4|5|
|
||
|-|-|
|
||
|||
|
||
|
||
> **Please test your changes a few times to make sure everything is working as it should!**
|
||
|
||
## Read abbreviation as it is
|
||
|
||
Sometimes the abbreviation TTS is read incorrectly, we can help it read as it is.
|
||
```
|
||
"*(\w). (\p{javaLowerCase})" "$1 $2"
|
||
```
|