├── .gitattributes ├── .github └── workflows │ └── build_addon.yml ├── .gitignore ├── .vscode └── typings │ └── __builtins__.pyi ├── IBMTTS.pot ├── LICENSE ├── addon ├── doc │ ├── ca │ │ └── readme.md │ ├── de │ │ └── README.md │ ├── es │ │ └── README.md │ ├── fr │ │ └── readme.md │ ├── it │ │ └── readme.md │ ├── pt_br │ │ └── README.md │ ├── pt_pt │ │ └── README.md │ ├── tr │ │ └── readme.md │ └── zh_CN │ │ └── README.md ├── globalPlugins │ ├── _ibmttsUtils.py │ └── ibmtts.py ├── installTasks.py ├── locale │ ├── ca │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── de │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── es │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── it │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── pt_PT │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── tr │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ ├── zh_CN │ │ └── LC_MESSAGES │ │ │ └── nvda.po │ └── zh_TW │ │ └── LC_MESSAGES │ │ └── nvda.po └── synthDrivers │ ├── _configHelper.py │ ├── _ibmeci.py │ ├── _settingsDB.py │ └── ibmeci.py ├── apiReference ├── tts.pdf └── tts.txt ├── buildVars.py ├── changelog.md ├── docChangelog-for-translators.md ├── manifest-translated.ini.tpl ├── manifest.ini.tpl ├── pyproject.toml ├── readme.md ├── requirements.txt ├── sconstruct ├── site_scons └── site_tools │ └── gettexttool │ └── __init__.py ├── style.css └── updateVersion.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behaviour, in case users don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Try to ensure that po files in the repo does not include 5 | # source code line numbers. 6 | # Every person expected to commit po files should change their personal config file as described here: 7 | # https://mail.gnome.org/archives/kupfer-list/2010-June/msg00002.html 8 | *.po filter=cleanpo 9 | -------------------------------------------------------------------------------- /.github/workflows/build_addon.yml: -------------------------------------------------------------------------------- 1 | permissions: 2 | contents: write 3 | name: Upload on new tags 4 | on: 5 | push: 6 | tags: 7 | ['*'] 8 | pull_request: 9 | branches: [ main, master ] 10 | workflow_dispatch: 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Checkout code 17 | uses: actions/checkout@v4 18 | - name: Set up Python 19 | uses: actions/setup-python@v5 20 | with: 21 | python-version: 3.11 22 | cache: 'pip' 23 | - name: Install dependencies 24 | run: | 25 | pip install scons markdown 26 | sudo apt update 27 | sudo apt install gettext 28 | 29 | - name: Set add-on version from tag 30 | run: | 31 | import re 32 | with open("buildVars.py", 'r+', encoding='utf-8') as f: 33 | text = f.read() 34 | version = "${{ github.ref }}".split("/")[-1] 35 | text = re.sub('"addon_version" *:.*,', '"addon_version" : "%s",' % version, text) 36 | f.seek(0) 37 | f.write(text) 38 | f.truncate() 39 | shell: python 40 | 41 | - name: Build add-on 42 | run: scons 43 | - name: load latest changes from changelog 44 | run: awk '/^# / && !flag {flag=1; next} /^# / && flag {exit} flag && NF' changelog.md > newChanges.md 45 | - name: Calculate sha256 46 | run: sha256sum *.nvda-addon >> newChanges.md 47 | - uses: actions/upload-artifact@v4 48 | with: 49 | name: packaged_addon 50 | path: | 51 | ./*.nvda-addon 52 | ./newChanges.md 53 | 54 | upload_release: 55 | runs-on: ubuntu-latest 56 | if: ${{ startsWith(github.ref, 'refs/tags/') }} 57 | needs: ["build"] 58 | steps: 59 | - name: download releases files 60 | uses: actions/download-artifact@v4 61 | - name: Display structure of downloaded files 62 | run: ls -R 63 | 64 | - name: Release 65 | uses: softprops/action-gh-release@v2 66 | with: 67 | body_path: packaged_addon/newChanges.md 68 | files: packaged_addon/*.nvda-addon 69 | fail_on_unmatched_files: true 70 | prerelease: ${{ contains(github.ref, '-') }} 71 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | addon/doc/*.css 2 | addon/doc/en/ 3 | *_docHandler.py 4 | *.html 5 | *.ini 6 | *.mo 7 | *.py[co] 8 | *.nvda-addon 9 | .sconsign.dblite 10 | *.code-workspace 11 | *.json -------------------------------------------------------------------------------- /.vscode/typings/__builtins__.pyi: -------------------------------------------------------------------------------- 1 | def _(msg: str) -> str: 2 | ... 3 | 4 | 5 | def pgettext(context: str, message: str) -> str: 6 | ... 7 | -------------------------------------------------------------------------------- /IBMTTS.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the 'IBMTTS' package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: 'IBMTTS' '23.5.2'\n" 10 | "Report-Msgid-Bugs-To: 'nvda-translations@groups.io'\n" 11 | "POT-Creation-Date: 2023-12-30 22:55-0600\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=CHARSET\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: addon\synthDrivers\_ibmeci.py:92 21 | msgid "Castilian Spanish" 22 | msgstr "" 23 | 24 | #: addon\synthDrivers\_ibmeci.py:93 25 | msgid "Latin American Spanish" 26 | msgstr "" 27 | 28 | #: addon\synthDrivers\_ibmeci.py:94 29 | msgid "Brazilian Portuguese" 30 | msgstr "" 31 | 32 | #: addon\synthDrivers\_ibmeci.py:95 33 | msgid "French" 34 | msgstr "" 35 | 36 | #: addon\synthDrivers\_ibmeci.py:96 37 | msgid "French Canadian" 38 | msgstr "" 39 | 40 | #: addon\synthDrivers\_ibmeci.py:97 41 | msgid "Finnish" 42 | msgstr "" 43 | 44 | #: addon\synthDrivers\_ibmeci.py:98 45 | msgid "Chinese" 46 | msgstr "" 47 | 48 | #: addon\synthDrivers\_ibmeci.py:99 49 | msgid "Japanese" 50 | msgstr "" 51 | 52 | #: addon\synthDrivers\_ibmeci.py:100 53 | msgid "Korean" 54 | msgstr "" 55 | 56 | #: addon\synthDrivers\_ibmeci.py:101 57 | msgid "German" 58 | msgstr "" 59 | 60 | #: addon\synthDrivers\_ibmeci.py:102 61 | msgid "Italian" 62 | msgstr "" 63 | 64 | #: addon\synthDrivers\_ibmeci.py:103 65 | msgid "American English" 66 | msgstr "" 67 | 68 | #: addon\synthDrivers\_ibmeci.py:104 69 | msgid "British English" 70 | msgstr "" 71 | 72 | #: addon\synthDrivers\_ibmeci.py:105 73 | msgid "Swedish" 74 | msgstr "" 75 | 76 | #: addon\synthDrivers\_ibmeci.py:106 77 | msgid "Norwegian" 78 | msgstr "" 79 | 80 | #: addon\synthDrivers\_ibmeci.py:107 81 | msgid "Danish" 82 | msgstr "" 83 | 84 | #: addon\synthDrivers\_ibmeci.py:108 85 | msgid "Hong Kong Cantonese" 86 | msgstr "" 87 | 88 | #: addon\synthDrivers\ibmeci.py:204 89 | msgid "Rate boos&t" 90 | msgstr "" 91 | 92 | #: addon\synthDrivers\ibmeci.py:206 93 | msgid "Hea&d size" 94 | msgstr "" 95 | 96 | #: addon\synthDrivers\ibmeci.py:207 97 | msgid "Rou&ghness" 98 | msgstr "" 99 | 100 | #: addon\synthDrivers\ibmeci.py:208 101 | msgid "Breathi&ness" 102 | msgstr "" 103 | 104 | #: addon\synthDrivers\ibmeci.py:209 105 | msgid "Enable backquote voice &tags" 106 | msgstr "" 107 | 108 | #: addon\synthDrivers\ibmeci.py:210 109 | msgid "Enable &abbreviation expansion" 110 | msgstr "" 111 | 112 | #: addon\synthDrivers\ibmeci.py:211 113 | msgid "Enable phras&e prediction" 114 | msgstr "" 115 | 116 | #: addon\synthDrivers\ibmeci.py:212 117 | msgid "&Pauses" 118 | msgstr "" 119 | 120 | #: addon\synthDrivers\ibmeci.py:213 121 | msgid "Al&ways Send Current Speech Settings" 122 | msgstr "" 123 | 124 | #: addon\synthDrivers\ibmeci.py:214 125 | msgid "Sa&mple Rate" 126 | msgstr "" 127 | 128 | #: addon\synthDrivers\ibmeci.py:550 129 | msgid "Do not shorten" 130 | msgstr "" 131 | 132 | #: addon\synthDrivers\ibmeci.py:551 133 | msgid "Shorten at end of text only" 134 | msgstr "" 135 | 136 | #: addon\synthDrivers\ibmeci.py:552 137 | msgid "Shorten all pauses" 138 | msgstr "" 139 | 140 | #. Translators: a message dialog asking to retry or cancel when downloading a file. 141 | #: addon\globalPlugins\_ibmttsUtils.py:77 142 | msgid "" 143 | "Unable to download the file. Perhaps there is no internet access or the " 144 | "server is not responding. Do you want to try again?" 145 | msgstr "" 146 | 147 | #. Translators: the title of a retry cancel dialog when downloading a file. 148 | #: addon\globalPlugins\_ibmttsUtils.py:79 149 | msgid "Error downloading" 150 | msgstr "" 151 | 152 | #. Translators: a message dialog asking to retry or cancel when copying files. 153 | #: addon\globalPlugins\_ibmttsUtils.py:115 154 | msgid "" 155 | "Unable to copy a file. Perhaps it is currently being used by another process " 156 | "or you have run out of disc space on the drive you are copying to." 157 | msgstr "" 158 | 159 | #. Translators: the title of a retry cancel dialog when copying files. 160 | #: addon\globalPlugins\_ibmttsUtils.py:117 161 | msgid "Error Copying" 162 | msgstr "" 163 | 164 | #. Translators: The message displayed when an error occurs when opening an add-on package for adding. 165 | #: addon\globalPlugins\_ibmttsUtils.py:136 166 | #, python-format 167 | msgid "" 168 | "Failed to open add-on update file at %s - missing file or invalid file format" 169 | msgstr "" 170 | 171 | #. Translators: The title of a dialog presented when an error occurs. 172 | #. Translators: The title displayed if the folder to store the downloaded file can't be created. 173 | #. Translators: The title displayed when copying IBMTTS files to Add-on was successful. 174 | #: addon\globalPlugins\_ibmttsUtils.py:138 175 | #: addon\globalPlugins\_ibmttsUtils.py:165 176 | #: addon\globalPlugins\_ibmttsUtils.py:297 addon\globalPlugins\ibmtts.py:126 177 | #: addon\globalPlugins\ibmtts.py:154 178 | msgid "Error" 179 | msgstr "" 180 | 181 | #. Translators: The title of the dialog presented while an Addon is being installed. 182 | #: addon\globalPlugins\_ibmttsUtils.py:152 183 | #, python-format 184 | msgid "Installing %s" 185 | msgstr "" 186 | 187 | #. Translators: The message displayed while an addon is being installed. 188 | #: addon\globalPlugins\_ibmttsUtils.py:154 189 | msgid "Please wait while the add-on is being installed." 190 | msgstr "" 191 | 192 | #. Translators: The message displayed when an error occurs when installing an add-on package. 193 | #: addon\globalPlugins\_ibmttsUtils.py:163 194 | #, python-format 195 | msgid "Failed to install add-on from %s" 196 | msgstr "" 197 | 198 | #. Translators: The message displayed if the folder to store the downloaded file can't be created. 199 | #: addon\globalPlugins\_ibmttsUtils.py:295 200 | msgid "Unable to create the folder to save the update file." 201 | msgstr "" 202 | 203 | #: addon\globalPlugins\_ibmttsUtils.py:305 204 | #, python-format 205 | msgid "Downloading the new %s update" 206 | msgstr "" 207 | 208 | #: addon\globalPlugins\_ibmttsUtils.py:306 209 | msgid "downloading" 210 | msgstr "" 211 | 212 | #. Translators: The message displayed when no updates were found. 213 | #: addon\globalPlugins\_ibmttsUtils.py:340 214 | #, python-format 215 | msgid "There are no updates available for the %s addon." 216 | msgstr "" 217 | 218 | #. Translators: The title displayed when no updates were found. 219 | #: addon\globalPlugins\_ibmttsUtils.py:342 220 | msgid "No updates available" 221 | msgstr "" 222 | 223 | #. Translators: A message asking the user if they wish to update the add-on 224 | #: addon\globalPlugins\_ibmttsUtils.py:349 225 | #, python-format 226 | msgid "" 227 | "A new version of %s was found. The new version is %s. Would you like to " 228 | "update this add-on now?" 229 | msgstr "" 230 | 231 | #. Translators: Title for message asking if the user wishes to update the add-on. 232 | #: addon\globalPlugins\_ibmttsUtils.py:352 233 | msgid "Update add-on" 234 | msgstr "" 235 | 236 | #. Translators: The message displayed when installing an add-on package is prohibited, 237 | #. because it requires a later version of NVDA than is currently installed. 238 | #: addon\globalPlugins\_ibmttsUtils.py:391 239 | #, python-brace-format 240 | msgid "" 241 | "Installation of {summary} {version} has been blocked. The minimum NVDA " 242 | "version required for this add-on is {minimumNVDAVersion}, your current NVDA " 243 | "version is {NVDAVersion}" 244 | msgstr "" 245 | 246 | #. Translators: The title of a dialog presented when an error occurs. 247 | #. Translators: The title of the dialog presented when the add-on is too old. 248 | #: addon\globalPlugins\_ibmttsUtils.py:403 249 | #: addon\globalPlugins\_ibmttsUtils.py:422 250 | msgid "Add-on not compatible" 251 | msgstr "" 252 | 253 | #. Translators: A message informing the user that this addon can not be installed 254 | #. because it is not compatible. 255 | #: addon\globalPlugins\_ibmttsUtils.py:412 256 | #, python-brace-format 257 | msgid "" 258 | "Installation of {summary} {version} has been blocked. An updated version of " 259 | "this add-on is required, the minimum add-on API supported by this version of " 260 | "NVDA is {backCompatToAPIVersion}" 261 | msgstr "" 262 | 263 | #: addon\globalPlugins\_ibmttsUtils.py:436 264 | msgid "&Not now" 265 | msgstr "" 266 | 267 | #: addon\globalPlugins\_ibmttsUtils.py:447 268 | #, python-format 269 | msgid "Request for contributions to %s" 270 | msgstr "" 271 | 272 | #: addon\globalPlugins\_ibmttsUtils.py:448 273 | msgid "" 274 | "Creating add-ons demands substantial time and effort. With limited job " 275 | "prospects in my country, your donations could significantly aid in " 276 | "dedicating more time to developing free plugins for the community.\n" 277 | "Your contribution would support the development of this and other free " 278 | "projects.\n" 279 | "Would you like to contribute to this cause? Select from our available " 280 | "payment methods below. You will be redirected to the corresponding website " 281 | "to complete your donation.\n" 282 | "Thank you for your support and generosity." 283 | msgstr "" 284 | 285 | #: addon\globalPlugins\ibmtts.py:25 addon\installTasks.py:21 286 | msgid "Using Paypal" 287 | msgstr "" 288 | 289 | #: addon\globalPlugins\ibmtts.py:29 addon\installTasks.py:25 290 | msgid "using Co-fi" 291 | msgstr "" 292 | 293 | #: addon\globalPlugins\ibmtts.py:33 addon\installTasks.py:29 294 | msgid "See more methods on my github Page" 295 | msgstr "" 296 | 297 | #. Translators: This is the label for the IBMTTS settings category in NVDA Settings screen. 298 | #: addon\globalPlugins\ibmtts.py:41 299 | msgid "IBMTTS" 300 | msgstr "" 301 | 302 | #: addon\globalPlugins\ibmtts.py:48 303 | msgid "&Automatically check for updates for IBMTTS" 304 | msgstr "" 305 | 306 | #. Translators: This is the button to check for new updates of the add-on. 307 | #: addon\globalPlugins\ibmtts.py:51 308 | msgid "&Check for update" 309 | msgstr "" 310 | 311 | #. Translators: This is the label for the IBMTTS folder address. 312 | #: addon\globalPlugins\ibmtts.py:54 313 | msgid "IBMTTS folder address" 314 | msgstr "" 315 | 316 | #. Translators: This is the label for the IBMTTS library name. 317 | #: addon\globalPlugins\ibmtts.py:56 318 | msgid "IBMTTS library name (dll)" 319 | msgstr "" 320 | 321 | #. Translators: This is the button to explore and find for an IBMTTS library and files. 322 | #: addon\globalPlugins\ibmtts.py:58 323 | msgid "&Browse for IBMTTS library..." 324 | msgstr "" 325 | 326 | #. Translators: This is the button to copy external IBMTTS files into synth driver Add-on. 327 | #: addon\globalPlugins\ibmtts.py:61 328 | msgid "" 329 | "&Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions)" 330 | msgstr "" 331 | 332 | #: addon\globalPlugins\ibmtts.py:63 333 | msgid "&Support IBMTTS add-on" 334 | msgstr "" 335 | 336 | #: addon\globalPlugins\ibmtts.py:79 337 | msgid "Select the IBMTTS library (dll)" 338 | msgstr "" 339 | 340 | #. Translators: the label for the dynamic link library extension (dll) file type 341 | #: addon\globalPlugins\ibmtts.py:81 342 | #, python-brace-format 343 | msgid "dynamic link library (*.{ext})" 344 | msgstr "" 345 | 346 | #. Translators: The message displayed when the IBMTTS files folder and library name have been set. 347 | #: addon\globalPlugins\ibmtts.py:91 348 | msgid "" 349 | "The IBMTTS files location has been set. If you want to use it with a " 350 | "portable version of NVDA, please use the \"Copy IBMTTS files into driver add-" 351 | "on\" button" 352 | msgstr "" 353 | 354 | #. Translators: The title displayed when the IBMTTS files folder and library name have been set. 355 | #. Translators: The title displayed when copying IBMTTS files to Add-on was successful. 356 | #: addon\globalPlugins\ibmtts.py:93 addon\globalPlugins\ibmtts.py:148 357 | msgid "Success" 358 | msgstr "" 359 | 360 | #. Translators: The message displayed in the dialog that inform you the specified library is invalid. 361 | #: addon\globalPlugins\ibmtts.py:100 362 | msgid "" 363 | "The specified dll file seems to be an incorrect IBMTTS library. Would you " 364 | "like to select another library?" 365 | msgstr "" 366 | 367 | #: addon\globalPlugins\ibmtts.py:101 368 | msgid "Error loading library" 369 | msgstr "" 370 | 371 | #: addon\globalPlugins\ibmtts.py:109 372 | msgid "" 373 | "Are you sure to copy IBMTTS files to local NVDA installation and register a " 374 | "new add-on called \"eciLibraries\" to store the libraries? It may not work " 375 | "in some IBMTTS distributions.\n" 376 | "\t\tNote: after it, if you want to uninstall this add-on, you'll need to " 377 | "uninstall two add-ons in order to delete IBMTTS files completelly from " 378 | "NVDA. This one and \"eciLibraries\"" 379 | msgstr "" 380 | 381 | #. Translators: The title of the Asking dialog displayed when trying to copy IBMTTS files. 382 | #: addon\globalPlugins\ibmtts.py:112 383 | msgid "Copy IBMTTS files" 384 | msgstr "" 385 | 386 | #: addon\globalPlugins\ibmtts.py:124 387 | msgid "" 388 | "Unable to copy the files because the source and destination paths are the " 389 | "same." 390 | msgstr "" 391 | 392 | #. Translators: The title of the dialog presented while IBMTTS files are being copied. 393 | #: addon\globalPlugins\ibmtts.py:135 394 | msgid "Copying files" 395 | msgstr "" 396 | 397 | #. Translators: The message displayed while IBMTTS files are being copied. 398 | #: addon\globalPlugins\ibmtts.py:137 399 | msgid "Please wait while IBMTTS files are copied into add-on." 400 | msgstr "" 401 | 402 | #. Translators: The message displayed when copying IBMTTS files to Add-on was successful. 403 | #: addon\globalPlugins\ibmtts.py:146 404 | msgid "" 405 | "Successfully copied IBMTTS files. The local copy will be used after restart " 406 | "NVDA." 407 | msgstr "" 408 | 409 | #. Translators: The message displayed when errors were found while trying to copy IBMTTS files to Add-on. 410 | #: addon\globalPlugins\ibmtts.py:154 411 | msgid "Error copying IBMTTS files" 412 | msgstr "" 413 | 414 | #. Translators: the message shown if the driver can't find libraries during installation. 415 | #: addon\installTasks.py:71 416 | msgid "" 417 | "The synthesizer won't be available until you set IBMTTS files. NVDA won't " 418 | "show this synthesizer in teh synthesizers lists because you need to set the " 419 | "IBMTTS files location first.\n" 420 | "\tTo do it open the NVDA settings dialog, select IBMTTS category and use the " 421 | "\"Browse for IBMTTS library\" button to select the IBMTTS files folder.\n" 422 | msgstr "" 423 | 424 | #. Translators: title of message box when user is installing NVDA 425 | #: addon\installTasks.py:76 426 | msgid "IBMTTS driver for NVDA" 427 | msgstr "" 428 | 429 | #. Add-on summary, usually the user visible name of the addon. 430 | #. Translators: Summary for this add-on to be shown on installation and add-on information. 431 | #: buildVars.py:17 432 | msgid "IBMTTS driver" 433 | msgstr "" 434 | 435 | #. Add-on description 436 | #. Translators: Long description to be shown for this add-on on add-on information from add-ons manager 437 | #: buildVars.py:20 438 | msgid "This is the IBMTTS synthesizer driver for NVDA." 439 | msgstr "" 440 | -------------------------------------------------------------------------------- /addon/doc/ca/readme.md: -------------------------------------------------------------------------------- 1 | # Controlador IBMTTS, complement per a NVDA# 2 | 3 | Aquest complement implementa compatibilitat de NVDA amb el sintetitzador IBMTTS. 4 | No podem distribuir les biblioteques IBMTTS. Així que només és el conductor. 5 | Si voleu millorar aquest controlador, no dubteu a enviar les vostres sol·licituds de pull requests a través de GitHub! 6 | 7 | Tot i que aquest controlador és compatible amb les biblioteques d'Eloquence (ja que l'Eloquence té el mateix api que l'IBMTTS) no es recomana utilitzar l'Eloquence amb aquest controlador a causa de problemes de llicència. Abans d'utilitzar qualsevol biblioteca de síntesi amb aquest controlador, es recomana obtenir primer els drets d'ús de la llicència. 8 | 9 | Aquest controlador es va desenvolupar amb la documentació disponible per a IBMTTS, disponible públicament a la web. Vegeu la secció de referències per a més detalls. 10 | 11 | ## Descarrega 12 | 13 | L'última versió està disponible per a [descarregar en aquest enllaç](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 14 | 15 | ## Què és el sintetitzador IBMTTS? 16 | 17 | ViaVoice TTS és un motor de text a veu desenvolupat per IBM, que sintetitza la representació textual del llenguatge humà en la parla. 18 | 19 | ## Característiques i configuració. 20 | 21 | * Suport de veu, variant, entonació, to, flexió i ajust de volum. 22 | * Suport de paràmetres extra com Mida del cap, Rugositat, Respiració. Crea la teva pròpia veu! 23 | * Habilita o deshabilita les etiquetes de canvi de veu. Desactiva-les per a protegir-te de codis maliciosos de bromistes, activa-les per a fer moltes coses divertides amb el sintetitzador. Requereix un ajust addicional amb NVDA perquè funcioni correctament. 24 | * Turbo de veu. Si el sintetitzador no et parla suficientment ràpid, a continuació, habilitar i obtenir la màxima velocitat de veu! 25 | * commutació d'idioma automàtic. Deixa que el sintetitzador et llegeixi text en l'idioma correcte quan estigui marcat. 26 | * filtratge complet. Aquest controlador inclou un conjunt complet de filtres per corregir fallades i altres comportaments estranys del sintetitzador. 27 | * Suport per al diccionari. Aquest controlador admet la integració de paraules especials, arrels i diccionaris d'usuari d'abreviació per a cada idioma. Es poden obtenir conjunts de diccionaris preparats del [repositori de diccionari de la comunitat](https://github.com/thunderdrop/IBMTTSDictionaries) o del [repositori alternatiu de Mohamed00 (amb diccionaris de síntesi d'IBM)](https://github.com/mohamed00/AltIBMTTSDictionaries) 28 | 29 | ### Configuracions extra: 30 | 31 | * Habilita l'expansió de l'abreviatura: commuta l'expansió de les abreviatures. Tingueu en compte que desactivar aquesta opció també desactivarà l'expansió de les abreviatures especificades als diccionaris d'abreviatura proporcionats per l'usuari. 32 | * Habilita la predicció de frases: si aquesta opció està activada, el sintetitzador intentarà predir on es produiran les pauses en frases basades en la seva estructura, per exemple, utilitzant paraules com "i" o "el" com a límits de frases. Si aquesta opció està desactivada, només s'aturarà si es troben comes o altres signes de puntuació. 33 | * Pauses: Es tracta d'un quadre combinat amb tres opcions. 34 | * No escurça: les pauses no s'escurcen en absolut, i les pauses originals d'IBMTTS s'utilitzaran en tots els casos. 35 | * Escurça només al final del text: les pauses dels símbols de puntuació com ara els punts i les comes no s'escurcen, sinó que s'escurcen quan el text acaba, per exemple quan es prem NVDA+t dues vegades ràpidament per escriure la barra de títol d'una aplicació de caràcter per caràcter. 36 | * Escurça totes les pauses: s'escurçaran totes les pauses, incloses les pauses de puntuació i les pauses que es produeixen al final del text. 37 | * Envia sempre la configuració actual de la veu: hi ha un error al sintetitzador que ocasionalment farà que la configuració de la parla i la del to es reiniciï breument als seus valors predeterminats. La causa d'aquest problema és actualment desconeguda, però una solució és enviar contínuament la taxa de parla actual i la configuració del to. Aquesta opció s'ha d'habilitar generalment. No obstant això, s'hauria d'inhabilitar si es llegeix text que conté etiquetes de veu de cita prèvia. 38 | * Taxa de mostra: canvia la qualitat del so del sintetitzador. Més útil per a IBMTTS, on establir la freqüència de mostreig a 8 kHz permet l'accés a un nou conjunt de veus. 39 | 40 | ### Configuració de la categoria IBMTTS. 41 | 42 | Aquest complement té la seva pròpia categoria de configuració dins de les opcions NVDA, per gestionar algunes funcionalitats internes no relacionades amb la síntesi de veu. 43 | 44 | * Comprova automàticament si hi ha actualitzacions per a IBMTTS: Si aquesta opció està marcada, el complement comprovarà diàriament si hi ha noves versions disponibles. 45 | * Comproveu si hi ha actualitzacions: comproveu manualment si hi ha actualitzacions noves del complements . 46 | * Adreça de la carpeta IBMTTS: El camí per carregar la biblioteca IBMTTS. Pot ser absoluta o relativa. 47 | * Nom de la biblioteca IBMTTS (dll): El nom de la biblioteca (dll). No inclou camins, només el nom amb l'extensió, típicament ".dll". 48 | * Navega per la biblioteca IBMTTS... Obre un diàleg de navegació de fitxers per a cercar la biblioteca IBMTTS al sistema. Es guardarà com un camí absolut. 49 | * Copia els fitxers IBMTTS en un complement (pot ser que no funcioni per a algunes distribucions IBMTTS): Si s'ha establert el camí de la biblioteca per a IBMTTS, copiarà tots els fitxers de carpeta a un complement nou anomenat eciLibraries i actualitzarà el camí actual a un camí relatiu. És molt útil en versions portàtils NVDA. Només funciona per a biblioteques que utilitzen fitxers «eci.ini» per a la informació del llenguatge de veu. Si la biblioteca utilitza el registre de Windows, aquesta opció no funcionarà. 50 | 51 | Nota: La funcionalitat d'actualització automàtica o manual no eliminarà els fitxers interns del complement. Si utilitzeu les vostres biblioteques en aquest lloc, podeu utilitzar aquesta funció amb seguretat. Les vostres biblioteques estaran segures. 52 | 53 | ## Requisits. 54 | 55 | ### NVDA. 56 | 57 | Necessites NVDA 2019.3 o posterior. 58 | 59 | ### Biblioteques de sintetitzadors IBMTTS. 60 | 61 | Aquest és només el controlador, heu d'obtenir les biblioteques d'un altre lloc. 62 | Aquest controlador admet les biblioteques lleugerament més noves que afegeixen suport per a l'idioma de l'Àsia Oriental, i té correccions específiques per a la codificació correcta del text. Però les biblioteques més antigues sense això haurien de funcionar. 63 | A partir de la versió 21.03A1, aquest controlador també funciona amb les biblioteques encara més noves d'IBM, en lloc de només les de SpeechWorks. S'inclou un conjunt de correccions independents per a aquestes biblioteques, i es comptabilitzen les llengües addicionals i altres diferències. Les veus Concatenatives són compatibles, i es pot accedir establint la freqüència de mostreig a 8 kHz després d'instal·lar veus. Per obtenir els millors resultats, utilitzeu la construcció de juny de 2005 d'ibmeci.dll (versió 7.0.0.0) ja que les versions més antigues poden ser inestables quan es rep text ràpidament, per exemple, desplaçant ràpidament a través d'elements en una llista. També cal tenir en compte que si esteu utilitzant biblioteques IBMTTS cantoneses o xineses de Hong Kong, és possible que vulgueu desactivar la funcionalitat ortogràfica d'ús si s'admet l'opció, per evitar que alguns caràcters d'aquests idiomes s'escriuen utilitzant el pinyin al qual es converteixen internament. 64 | 65 | ## Instal·lació. 66 | 67 | Només cal instal·lar-lo com a complement NVDA. A continuació, obriu la configuració del diàleg NVDA i establiu els fitxers de carpeta IBMTTS a la categoria IBMTTS. 68 | També en aquesta categoria podeu copiar els fitxers IBMTTS externs en un complement per utilitzar-los localment. 69 | 70 | ## Contribuir a la traducció. 71 | 72 | Per tal de facilitar la vostra feina, he deixat una 73 | [plantilla de traducció a la branca mestra.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 74 | 75 | Per a la documentació, he creat un fitxer anomenat ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 76 | Podeu utilitzar aquest fitxer per veure què s'ha canviat a la documentació i actualitzar la documentació per al vostre idioma. 77 | 78 | Si voleu traduir aquest complement a un altre idioma i no voleu obrir un compte de github o instal·lar Python i altres eines necessàries per a la traducció, feu els passos següents: 79 | 80 | 1. Utilitza 81 | [aquesta plantilla](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot), 82 | com a base per a l'idioma de destinació. 83 | 2. Baixa 84 | ["poedit"](https://poedit.net/), 85 | Aquest programari us ajudarà a gestionar les cadenes de traducció. 86 | 3. Si també voleu traduir la documentació, podeu veure els nous canvis de la documentació 87 | [en aquest enllaç.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) Aquí podeu veure la [documentació en anglès completa.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 88 | 4. Un cop hagis acabat la traducció, pots enviar-me-la a: "dhf360".gmail.com". 89 | 90 | No necessitareu compilar els fitxers d'origen. Ho faré quan publiqui una nova versió del complement. Esmentaré el teu nom en el commit respectiu. Si no vols que t'esmenti, fes-m'ho saber al correu electrònic. 91 | 92 | Nota: assegureu-vos que heu utilitzat la darrera plantilla de cadenes de traducció. 93 | 94 | Aquest és un mètode alternatiu. Si vols, sempre pots anar pel camí habitual. fes un fork d'aquest repo, actualitza la traducció per al vostre idioma i envia'm un PR. Però d'aquesta manera només s'afegirà més complexitat per a tu. 95 | 96 | ## Empaquetar el complement per a la seva distribució. 97 | 98 | 1. Instal·leu el Python, actualment s'utilitza el Python 3.7, però podeu utilitzar una versió més nova. 99 | 2. Instal·leu gettext, podeu baixar una distribució per a Windows en [aquest enllaç.](https://mlocati.github.io/articles/gettext-iconv-windows.html) Si utilitzeu Windows 64 bits, recomano [aquesta versió.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 100 | 3. (opcional però recomanable pas) crear un entorn virtual Python per a ser utilitzat per gestionar complements NVDA. A la consola, utilitzeu «python -m venv PAT".TO".FOLDER». On PATTOTO.FOLDER és el camí del teu camí desitjat per a l'entorn virtual. 101 | 4. Si heu fet el pas 2, aneu a PAT".TO".FOLDER i dins de la carpeta scripts, executeu «activa». El nom de l'entorn s'ha de mostrar a l'indicador de la consola. 102 | 5. Clona aquest repositori en la ruta desitjada: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 103 | 6. En la mateixa instància de consola, aneu a la carpeta d'aquest repositori. 104 | 7. Instal·la els requisits: «pip install -r requirements.txt». 105 | 8. Executa l'ordre de les icones. El complement creat, si no hi ha errors, es col·loca al directori arrel d'aquest repositori. 106 | 107 | Un cop tanqueu la consola, l'entorn virtual es desactiva. 108 | 109 | ### Empaquetar les biblioteques com un complement independent. 110 | 111 | No es recomana incloure les biblioteques amb aquest controlador. És perquè si l'usuari actualitza el controlador des del 112 | [repositori oficial](https://github.com/davidacm/NVDA-IBMTTS-Driver), 113 | utilitzant l'instal·lador de complements NVDA, s'eliminarà la versió antiga, incloses les biblioteques. Una solució per a això és instal·lar les biblioteques en un complement separat. 114 | [Seguiu aquest enllaç](https://github.com/davidacm/ECILibrariesTemplate) 115 | saber empaquetar les biblioteques en un complement separat. 116 | 117 | ### Notes: 118 | 119 | * Si utilitzeu la funció d'actualització interna (manual o automàtica) les biblioteques no s'eliminaran encara que estiguin dins del complement. 120 | * si el sintetitzador està dins del complement o a 121 | ["eciLibraries"](https://github.com/davidacm/ECILibrariesPlantilla) 122 | complement, el controlador actualitzarà automàticament els camins de la biblioteca de l'ini. Per tant, podeu utilitzar-lo en versions portàtils NVDA. 123 | * quan utilitzeu el botó «Copia fitxers IBMTTS en un complement», es crearà un complement nou. Per tant, si voleu desinstal·lar IBMTTS, haureu de desinstal·lar dos complements: «conductor d'IBMTTS» i «biblioteques Eci». 124 | * les icones i les eines gettext d'aquest projecte són compatibles només amb Python 3. No funciona amb Python 2.7. 125 | * Podeu posar els fitxers IBMTTS addicionals requerits al complement (només per a ús personal). Només cal copiar-los a la carpeta "addon\synthDrivers\ibmtts". Ajusta el nom de la biblioteca per defecte a «settingsDB.py» si cal. 126 | * si el camí de la biblioteca configurada no és relatiu, aquest complement no actualitzarà els camins al fitxer «eci.ini». El controlador assumeix que quan s'utilitzen camins absoluts, els camins són correctes a "eci.ini" i evitaran fer cap actualització. Tingues això en compte en establir el camí de les biblioteques. Si no eren correctes, això podria causar errors que faran que NVDA no parli quan utilitzeu aquest sintetitzador. 127 | 128 | ## Informació de problemes: 129 | 130 | Si trobeu un problema de seguretat amb algunes de les biblioteques que són compatibles amb aquest controlador, si us plau, no obriu un problema de github ni comenteu-lo als fòrums abans de resoldre el problema. Informeu del problema en [aquest formulari.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0)KIF9WU/edit) 131 | 132 | Si el problema no falla al controlador o al lector de pantalla, obriu aquí un [problema de Github.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 133 | 134 | ## Referències. 135 | 136 | Aquest controlador es basa en l'IBM tts sdk, la documentació està disponible a: 137 | [aquest enllaç](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 138 | 139 | també a la universitat de Columbia 140 | [aquest enllaç](http://www1.cs.columbia.edu/)hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 141 | 142 | O podeu obtenir una còpia de seguretat a [aquest dipòsit](https://github.com/david-acm/NVDA-IBMTTS-Driver) 143 | 144 | [pyibmtts: embolcall de Python per a IBM TTS desenvolupat per Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 145 | 146 | Vegeu els fitxers de còpia de seguretat aquí: 147 | 148 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 149 | 150 | o [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 151 | -------------------------------------------------------------------------------- /addon/doc/de/README.md: -------------------------------------------------------------------------------- 1 | # IBMTTS-Treiber, Erweiterung fürNVDA # 2 | 3 | Diese Erweiterung ermöglicht das Einbinden der IBMTTS-Sprachausgabe in NVDA. 4 | Die eigentlichen IBMTTS-Bibliotheken dürfen wir nicht anbieten, daher handelt es sich hierbei nur um den Treiber. 5 | Wenn Sie bei der Verbesserung des Treibers mithelfen möchten, zögern Sie nicht uns einen Pull-Request zu senden! 6 | 7 | Auch wenn dieser Treiber mit Eloquence-Bibliotheken kompatibel ist, da Eloquence die gleiche API wie IBMTTS verwendet, wird die Verwendung von Eloquence mit diesem Treiber aufgrund von Lizenzierungsproblemen nicht empfohlen. Vor der Verwendung von Synthesebibliotheken mit diesem Treiber wird empfohlen, zuerst die Nutzungsrechte zu erwerben. 8 | 9 | Dieser Treiber wurde mit der für IBMTTS verfügbaren Dokumentation entwickelt, die im Internet öffentlich zugänglich ist. Weitere Einzelheiten finden Sie im Abschnitt Referenzen. 10 | 11 | ## Herunterladen. 12 | Die neueste Version kann unter [diesem Link heruntergeladen werden](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 13 | 14 | ## Was ist der IBMTTS-Synthesizer? 15 | 16 | ViaVoice TTS ist eine von IBM entwickelte Sprachausgabe, welche die textuelle Darstellung menschlicher Sprache in gesprochenen Text umwandelt. 17 | 18 | ## Funktionen: 19 | 20 | * Anpassung von Stimme, Variante, Geschwindigkeit, Tonhöhe, Betonung und Lautstärke. 21 | * Zusätzliche Parameter für Kopfgröße, Rauigkeit und Atmung. Erstellen Sie Ihre eigene Stimme! 22 | * Verwendung von Backquote-Sprachtags erlauben. Lassen Sie diese Funktion zum Schutz vor Schadcode und Scherzkeksen ausgeschaltet oder schalten Sie sie ein, um jede Menge Spaß mit der Sprachausgabe zu haben. Es müssen allerdings auch einige Anpassungen in NVDA vorgenommen werden, damit dies korrekt funktioniert. 23 | * Geschwindigkeit zusätzlich erhöhen. Falls Ihnen die Sprachausgabe zu langsam ist, schalten Sie diese Option ein und holen das Maximum an Geschwindigkeit heraus! 24 | * Automatischer Sprachenwechsel. Liest den Text automatisch in der richtigen Sprache vor. 25 | * Umfangreicher Filter. Dieser Treiber enthält einen umfangreichen Satz aus Filtern, mit denen Abstürze oder seltsames Verhalten der Sprachausgabe vermieden werden. 26 | * Wörterbuch-Unterstützung. Dieser Treiber erlaubt das Einbinden spezieller Wörter, Stammwörterbücher sowie Abkürzungswörterbücher für jede Sprache. Fertige Wörterbücher sind im [Community-Dictionary-Repository](https://github.com/thunderdrop/IBMTTSDictionaries) oder im [alternativen Repository von mohamed00 (inklusive IBM-Sprachausgabenwörterbücher)](https://github.com/mohamed00/AltIBMTTSDictionaries) verfügbar 27 | 28 | ### Zusätzliche Einstellungen: 29 | 30 | * Abkürzungswörterbuch verwenden: Schaltet das Aussprechen von Abkürzungen um. Bitte beachten Sie, dass durch Ausschalten dieser Funktion auch die im Benutzerwörterbuch hinterlegten Abkürzungen nicht mehr ausgesprochen werden. 31 | * Satzvorhersage einschalten: Ist diese Funktion eingeschaltet, versucht die Sprachausgabe die Satzstruktur zum Einfügen von Sprechpausen zu analysieren, beispielsweise durch die Verwendung der Worte "und" oder "oder" zur Begrenzung von Nebensätzen. Bei ausgeschalteter Funktion werden Pausen ausschließlich bei einem vorhandenem Komma oder anderen Satzzeichen eingefügt. 32 | * Pausen: Dies ist ein Kombinationsfeld mit drei Optionen. 33 | * Pausen nicht kürzen: Pausen werden überhaupt nicht gekürzt, es werden immer die originalen IBMTTS-Pausen verwendet. 34 | * Nur am Textende kürzen: Pausen mit Satzzeichen wie Punkt und Komma werden nicht gekürzt, aber sie werden gekürzt, wenn der Text endet, z.B. wenn Sie zweimal schnell NVDA+t drücken, um die Titelleiste einer Anwendung Zeichen für Zeichen zu buchstabieren. 35 | * Alle Pausen kürzen: Alle Pausen, einschließlich Interpunktionspausen und Pausen am Ende des Textes, werden gekürzt. 36 | * Aktuelle Sprachausgabeneinstellungen immer senden: Ein Fehler in der Sprachausgabe bewirkt, dass hin und wieder die Einstellungen für Sprache und Geschwindigkeit kurzzeitig auf ihre Standardwerte zurückgesetzt werden. Die Ursache ist nicht bekannt, jedoch wird dieses Verhalten durch kontinuierliches Senden der Sprachausgabeneinstellungen vermieden. Generell sollte diese Funktion eingeschaltet sein, muss jedoch bei der Verwendung von Backquote-Sprachtags ausgeschaltet werden. 37 | * Sample-Rate: Ändert die Klangqualität der Sprachausgabe. Diese Einstellung kann am sinnvollsten mit IBM TTS verwendet werden, bei welcher eine Sample-Rate von 8 kHz den Zugriff auf einen neuen Satz von Stimmen erlaubt. 38 | 39 | ### IBMTTS-Kategorieeinstellungen. 40 | 41 | Diese Erweiterung hat eine eigene Einstellungskategorie innerhalb der NVDA-Optionen, um einige nicht direkt mit der Sprachsynthese verbundenen Einstellungen zu verwalten. 42 | 43 | * Automatisch nach Updates für IBMTTS suchen: Bei eingeschalteter Option sucht die Erweiterung einmal täglich nach neuen Versionen. 44 | * Nach Update suchen: Eine Schaltfläche zum manuellen Prüfen auf Aktualisierungen. 45 | * IBMTTS-Verzeichnispfad: Der absolute oder relative Pfad zum Laden der IBMTTS-Bibliotheken. 46 | * IBMTTS-Bibliotheksname (DLL): Name der Bibliothek (DLL). Verwenden Sie hier keinen Pfad, sondern nur den Dateinamen der Bibliothek inklusive Erweiterung, typischerweise ".dll". 47 | * Nach IBMTTS-Bibliothek suchen... Öffnet einen Dialog zum Durchsuchen des Systems nach der IBMTTS-Bibliothek. Die Bibliothek wird als absoluter Pfad gespeichert. 48 | * IBMTTS-Dateien in eine Erweiterung kopieren (funktioniert möglicherweise nicht mit einigen IBMTTS-Distributionen): Wenn der Bibliothekspfad für IBMTTS festgelegt wurde, kopiert es alle Ordnerdateien in eine neue Erweiterung namens eciLibraries und wandelt den momentanen Pfad in einen relativen Pfad um. Dies ist sehr nützlich in portablen NVDA-Versionen. Es funktioniert nur für Bibliotheken, die "eci.ini"-Dateien für Stimmen- und Sprachinformationen verwenden. Wenn die Bibliothek die Windows-Registrierung verwendet, wird diese Option nicht funktionieren. 49 | 50 | Hinweis: Die automatische oder manuelle Aktualisierungsfunktion wird die internen Dateien der Erweiterung nicht entfernen. Wenn Sie Ihre Bibliotheken an dieser Stelle verwenden, können Sie diese Funktion gefahrlos nutzen. Ihre Bibliotheken sind sicher. 51 | 52 | ## Voraussetzungen. 53 | ### NVDA. 54 | NVDA 2019.3 oder neuer ist erforderlich. 55 | 56 | ### IBMTTS-Sprachausgabenbibliotheken. 57 | Dies ist nur der Treiber, Sie müssen sich die Bibliotheken selbst besorgen. 58 | Dieser Treiber unterstützt die etwas neueren Bibliotheken, in denen ostasiatische Sprachen sowie spezifische Fehlerkorrekturen für bessere Textkodierung enthalten sind. Ältere Bibliotheken sollten jedoch auch funktionieren. 59 | Seit Version 21.03A1 wird neben den SpeechWorks-Binärdateien auch die Integration der noch etwas neueren IBM-Binärdateien unterstützt. Ein Satz unabhängiger korrekturen ist enthalten, und die zusätzlichen Sprachen und anderen Unterschiede werden berücksichtigt. Concatenative Stimmen werden unterstützt und sind zugänglich, indem die Sample-Rate auf 8 kHz eingestellt wird. Die besten Ergebnisse erzielen Sie, wenn Sie die Version 7.0.0.0 der ibmeci.dll vom Juni 2005 verwenden, da ältere Versionen instabil sein können, wenn Text schnell empfangen wird, z. B. durch schnelles Scrollen durch Elemente in einer Liste. Wenn Sie die IBMTTS-Bibliotheken für Hongkong-Kantonesisch oder Chinesisch verwenden, sollten Sie die Option "Buchstabierfunktion verwenden, falls verfügbar" deaktivieren, um zu verhindern, dass einige Zeichen in diesen Sprachen mit dem Pinyin geschrieben werden, in das sie intern konvertiert werden. 60 | 61 | ## Installation. 62 | Sie können die Erweiterung wie jede normale NVDA-Erweiterung installieren. Öffnen Sie danach die NVDA-Einstellungen und wählen die IBMTTS-Dateien in der Kategorie IBMTTS. 63 | Hier besteht auch die Möglichkeit, die IBMTTS-Dateien in eine Erweiterung zu kopieren, um sie lokal zu verwenden. 64 | 65 | ## Zur Übersetzung beitragen. 66 | 67 | Um Ihnen die Arbeit zu erleichtern, habe ich eine 68 | [Übersetzungsvorlage im Master-Zweig hinterlegt.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 69 | 70 | Für die Dokumentation habe ich eine Datei namens ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) erstellt. 71 | Sie können diese Datei verwenden, um zu sehen, was in der Dokumentation geändert wurde, und die Dokumentation für Ihre Sprache aktualisieren. 72 | 73 | Falls Sie eine neue Übersetzung erstellen möchten, jedoch auf die Verwendung von GitHub und die notwendigen Python-Werkzeuge verzichten wollen, führen Sie bitte die folgenden Schritte aus: 74 | 75 | 1. Verwenden Sie 76 | [diese Vorlage](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 77 | Als Grundlage für die Zielsprache. 78 | 2. Laden Sie sich 79 | ["Poedit"](https://poedit.net/). 80 | herunter. Diese Software hilft Ihnen bei der Verwaltung der Übersetzung. 81 | 3. Falls Sie auch die Dokumentation übersetzen möchten, können Sie die letzten Änderungen an der Dokumentation 82 | [unter diesem Link einsehen.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) You can see the [full english documentation here.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 83 | 4. Wenn die Übersetzung fertig ist, senden Sie mir diese unter der E-Mail-Adresse "dhf360@gmail.com". 84 | 85 | Sie müssen die Quelldateien nicht selbst kompilieren, dies geschieht bei der Veröffentlichung einer neuen Version der Erweiterung. Ihr Name wird im entsprechenden Commit erwähnt. Wünschen Sie keine Erwähnung, lassen Sie es mich bitte in Ihrer E-Mail wissen. 86 | 87 | Hinweis: Bitte verwenden Sie immer die neueste Übersetzungsvorlage. 88 | 89 | Dies ist nur eine alternative Methode, natürlich können Sie auch den üblichen Weg gehen. Erstellen Sie einen Fork dieses Repositories, nehmen die Übersetzung für Ihre Sprache vor und senden mir danach einen Pull-Request. Der alternative Weg macht den Vorgang nur etwas komplizierter. 90 | 91 | ## Für die Weiterverbreitung paketieren. 92 | 93 | 1. Installieren Sie Python. Momentan wird Python 3.7 verwendet, Sie können jedoch eine neuere Version nutzen. 94 | 2. Installieren Sie Gettext, eine Distribution für Windows ist unter [diesem Link verfügbar.](https://mlocati.github.io/articles/gettext-iconv-windows.html) Wenn sie Windows 64 Bit verwenden ist [diese Version empfehlenswert.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 95 | 3. (optional, jedoch ein empfohlener Schritt) erstellen Sie eine virtuelle Umgebung in Python zur Verwaltung von NVDA-Erweiterungen. Geben sie in der Konsole "python -m venv PFAD_ZUM_ORDNER". ein, wobei PFAD_ZUM_ORDNER der gewünschte Pfad der virtuellen Umgebung ist. 96 | 4. Wenn Sie Schritt zwei ausgeführt haben, gehen Sie in den Ordnerpfad und geben dort "activate" ein. Der Umgebungsname sollte nun im Konsolenprompt angezeigt werden. 97 | 5. Clonen sie das Repository im gewünschten Pfad: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 98 | 6. Gehen Sie zum Pfad des Repositories in derselben Instanz. 99 | 7. Installieren Sie die Abhängigkeiten: "pip install -r requirements.txt". 100 | 8. Lassen Sie das Kommando scons laufen. Die erstellte Erweiterung wird, sofern keine Fehler aufgetreten sind, im Hauptverzeichnis des Repositories generiert. 101 | 102 | Sobald Sie die Konsole schließen, wird die virtuelle Umgebung deaktiviert. 103 | 104 | ### Bibliotheken als unabhängige Erweiterung paketieren. 105 | 106 | Es ist nicht empfehlenswert die Sprachausgaben-Bibliotheken direkt mit dem Treiber zu bündeln, da sie entfernt werden, wenn man die Erweiterung aus dem [offiziellen Repo](https://github.com/davidacm/NVDA-IBMTTS-Driver) 107 | bei Verwendung der Erweiterungsinstallation von NVDA aktualisiert. 108 | Zur Lösung dieses Problems können die Bibliotheken als separate Erweiterung installiert werden. 109 | [Folgen Sie diesem Link](https://github.com/davidacm/ECILibrariesTemplate), 110 | um mehr über die Installation als separate Erweiterung zu erfahren. 111 | 112 | ### Hinweise: 113 | 114 | * Wenn Sie die interne Aktualisierung verwenden (manuell oder automatisch), werden die Bibliotheken nicht gelöscht, sogar wenn sie sich in der Erweiterung befinden. 115 | * Wenn sich die Sprachausgabe in der Erweiterung oder der 116 | ["eciLibraries"-Erweiterung](https://github.com/davidacm/ECILibrariesTemplate) 117 | befindet, aktualisiert der Treiber automatisch die Pfade in den Ini-Dateien, sodass Sie sie in einer portablen NVDA-Kopie verwenden können. 118 | * Beim Verwenden der Schaltfläche zum Kopieren der IBMTTS-Dateien wird eine neue Erweiterung erstellt. Wenn Sie IBMTTS wieder deinstallieren möchten, müssen zwei Erweiterungen deinstalliert werden, nämlich "IBMTTS-Treiber" und "Eci libraries". 119 | * Die Scons und Gettext-Werkzeuge in diesem Projekt sind nur mit Python 3 kompatibel. Python 2.7 funktioniert nicht. 120 | * Sie können die benötigten IBMTTS-Dateien auch direkt in der Erweiterung ablegen (nur für persönliche Nutzung). Kopieren Sie sie einfach in das Verzeichnis "addon\synthDrivers\ibmtts". Der Standard-Bibliotheksname kann falls notwendig in der Datei "settingsDB.py" angepasst werden. 121 | * Wenn der konfigurierte Bibliothekspfad nicht relativ ist, wird dieses Add-on die Pfade in der Datei "eci.ini" nicht aktualisieren. Der Treiber geht davon aus, dass bei der Verwendung von absoluten Pfaden die Pfade in der Datei "eci.ini" korrekt sind und vermeidet jegliche Aktualisierung. Beachten Sie dies, wenn Sie den Pfad Ihrer Bibliotheken festlegen. Wenn sie nicht korrekt sind, kann dies zu Fehlern führen, die NVDA bei der Verwendung des Synthesizers sprachlos machen. 122 | 123 | ## Probleme melden: 124 | 125 | Wenn Sie ein Sicherheitsproblem mit einigen der Bibliotheken finden, die mit diesem Treiber kompatibel sind, öffnen Sie bitte kein Github-Issue und kommentieren Sie es nicht in Foren, bevor das Problem gelöst ist. Bitte melden Sie das Problem über [dieses Formular.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 126 | 127 | Wenn das Problem den Treiber oder den Bildschirmleser nicht zum Absturz bringt, öffne hier ein [Github-Issue.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 128 | 129 | ## Referenzen. 130 | Dieser Treiber basiert auf dem IBM-TTS-SDK, dessen Dokumentation unter 131 | [diesem Link](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) verfügbar ist. 132 | 133 | Auch zu bekommen bei der Universität von Columbia 134 | [unter diesem Link](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 135 | 136 | Eine Kopie ist auch in [diesem Repository](https://github.com/david-acm/NVDA-IBMTTS-Driver) erhältlich. 137 | 138 | [Pyibmtts: Python-Wrapper für IBM TTS, entwickelt von Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 139 | 140 | Siehe die Backup-Dateien 141 | 142 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 143 | oder [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 144 | -------------------------------------------------------------------------------- /addon/doc/es/README.md: -------------------------------------------------------------------------------- 1 | # Controlador de IBMTTS, complemento para NVDA # 2 | 3 | Este complemento implementa la compatibilidad de NVDA con el sintetizador IBMTTS. 4 | No podemos distribuir las librerías de IBMTTS. Esto es únicamente el controlador. 5 | Si deseas contribuir a mejorar este controlador ¡siéntete libre de enviarnos tus pull requests a través de GitHub! 6 | 7 | Aunque este driver es compatible con librerías de Eloquence debido a que Eloquence posee la misma api que IBMTTS, no se recomienda usar Eloquence con este controlador debido a problemas de licencias. Antes de usar cualquier librería de síntesis con este controlador, se recomienda obtener los derechos de uso primero. 8 | 9 | Este controlador fue desarrollado con la documentación disponible para IBMTTS, disponible públicamente en la web. Ver la sección referencias para más detalles. 10 | 11 | ## Descarga. 12 | 13 | La última versión está disponible para [descargar en este enlace](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 14 | 15 | ## ¿Qué es el sintetizador IBMTTS? 16 | 17 | ViaVoice TTS es un motor de texto a voz desarrollado por IBM, que sintetiza la representación textual del lenguaje humano en voz. 18 | 19 | ## Características y configuraciones. 20 | 21 | * Soporte para las configuraciones de voz,variante, velocidad, tono, entonación y volumen. 22 | * Soporte de parámetros extra como tamaño de la cabeza, carraspeo, respiración. ¡Crea tu propia voz! 23 | * Habilita o deshabilita las etiquetas de cambio de voz. Desactívalas para protegerte de códigos maliciosos de bromistas, actívalas para hacer muchas cosas divertidas con el sintetizador. Requiere un ajuste adicional con NVDA para que funcione correctamente. 24 | * Turbo de voz. Si el sintetizador no te habla lo suficientemente rápido ¡entonces activa el turbo de voz y obtén la velocidad máxima! 25 | * cambios automáticos de idioma. Permítele al sintetizador que lea el texto en el idioma correcto cuando se marca. 26 | * Filtrado ampliable. El controlador incluye un amplio conjunto de filtros para solucionar errores de patrones de texto y otros comportamientos extraños del sintetizador. 27 | * Soporte de diccionario. El controlador soporta la integración de palabras especiales, diccionarios raíces y diccionarios de abreviatura de los usuarios para cada idioma. Se pueden obtener conjuntos de diccionarios preparados [desde el repositorio de diccionario de la comunidad](https://github.com/thunderdrop/IBMTTSDictionaries) o [desde el repositorio alternativo de mohamed00 (con diccionarios del sintetizador IBM)](https://github.com/mohamed00/AltIBMTTSDictionaries) 28 | 29 | ### Configuraciones extra: 30 | 31 | * Habilitar expansión de abreviaturas: activa la expansión de las abreviaturas. Ten en cuenta que al desactivar esta opción también se desactivará la expansión de cualquier abreviatura especificada en los diccionarios de abreviaturas proporcionados por el usuario. 32 | * Activar predicción de frases: si esta opción está activada, el sintetizador intentará predecir dónde se producirán las pausas en las frases basándose en su estructura, por ejemplo, utilizando palabras como "y" o "el" como límites de la frase. Si esta opción está desactivada, sólo hará una pausa si se encuentran comas u otros signos de puntuación. 33 | * Acortar las pausas: activa esta opción para obtener pausas de puntuación más cortas, como las que se ven en otros lectores de pantalla. 34 | * Enviar siempre la configuración de voz actual: actualmente, hay un error en el sintetizador que ocasionalmente hace que la configuración de voz y del tono se restablezca brevemente a sus valores predeterminados. La causa de este problema es actualmente desconocida, sin embargo, una solución es enviar continuamente la configuración actual de la velocidad y el tono. Por lo general, esta opción debería estar activada. Sin embargo, debería estar desactivada si estás utilizando binarios de IBM, ya que esta configuración provocará que se inserten pausas muy largas que las harán casi inutilizables, o si estás leyendo un texto que contiene etiquetas de voz con comillas. 35 | * Frecuencia de muestreo: cambia la calidad del sonido del sintetizador. Útil para IBMTTS, donde establecer la frecuencia de muestreo en 8 kHz permite acceder a un nuevo conjunto de voces. 36 | 37 | ### Categoría de configuraciones IBMTTS. 38 | 39 | Este complemento tiene su propia categoría de configuraciones dentro de las opciones de NVDA, para gestionar algunas funcionalidades internas no relacionadas con la síntesis de voz. 40 | 41 | * Buscar automáticamente actualizaciones para IBMTTS: si esta opción está marcada, el complemento verificará diariamente si hay nuevas versiones disponibles. 42 | * Buscar actualización: Verifica manualmente si hay nuevas actualizaciones de este complemento. 43 | * Dirección de carpeta de IBMTTS: la ruta para cargar la librería IBMTTS. Puede ser absoluta o relativa. 44 | * Nombre de la librería de IBMTTS: el nombre de la librería (dll). No incluyas rutas, solo el nombre con la extensión, normalmente ".dll". 45 | * Buscar una librería de IBMTTS... Abre un diálogo de exploración de archivos para buscar la librería IBMTTS en el sistema. Se guardará como una ruta absoluta. 46 | * Copiar los archivos de IBMTTS en un complemento. (puede no funcionar para algunas distribuciones de IBMTTS): si se ha establecido la ruta de la librería para IBMTTS, copiará todos los archivos de la carpeta en un nuevo complemento llamado "eciLibraries" y actualizará la ruta actual a una relativa. Es útil en las versiones portables de NVDA. Solo funciona para librerías que usan archivos "eci.ini" para la información de los idiomas de voz. Si la librería usa el registro de Windows, esta opción no funcionará. 47 | 48 | Nota: La funcionalidad de actualización automática o manual no borrará los archivos internos del complemento. Si mantienes tus librerías en ese lugar, puedes usar esta función con seguridad. Tus librerías estarán a salvo. 49 | 50 | ## requisitos. 51 | 52 | ### NVDA. 53 | 54 | Necesitas NVDA 2019.3 o posterior. 55 | 56 | ### Las librerías del sintetizador IBMTTS. 57 | Esto es solo el controlador, debes buscar las librerías en otro lugar. 58 | El controlador soporta las librerías ligeramente más recientes que añaden el soporte del idioma este-asiático, y tiene correcciones específicas para la codificación adecuada del texto. Sin embargo, las librerías más antiguas sin esto deberían funcionar. 59 | A partir de la versión 21.03A1, el controlador también funciona con las librerías aún más nuevas de IBM, en lugar de solo las de SpeechWorks. Se incluye un conjunto de correcciones independientes para esas librerías, y se tienen en cuenta los idiomas adicionales y otras diferencias. Las voces concatenadas son compatibles y se puede acceder a ellas configurando la frecuencia de muestreo en 8 kHz después de instalar las voces. Para obtener mejores resultados, utiliza la compilación de junio de 2005 de ibmeci.dll (versión 7.0.0.0) ya que las versiones anteriores pueden ser inestables al recibir texto rápidamente, por ejemplo, al desplazarse rápidamente por los elementos de una lista. También ten en cuenta que si estás utilizando librerías IBMTTS en chino o cantonés de Hong Kong, es posible que desees deshabilitar la opción "Utilizar funcionalidad de deletreo si está soportada", para evitar que algunos caracteres en estos idiomas se deletreen utilizando el pinyin al que se convierten internamente. 60 | 61 | ## Instalación. 62 | 63 | Simplemente instálalo como cualquier otro complemento de NVDA. Después abre el diálogo de configuraciones de NVDA, y en la categoría IBMTTS establece la ruta de los archivos de IBMTTS. 64 | En esta categoría también puedes copiar los archivos externos de IBMTTS dentro del complemento para ser usado localmente, útil para versiones portables de NVDA. 65 | 66 | ## Contribuyendo a la traducción. 67 | 68 | Para facilitar tu trabajo, he dejado una 69 | [plantilla de traducción en la rama principal.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 70 | 71 | Para la documentación, creé un archivo llamado ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 72 | puedes usar ese archivo para ver qué se ha cambiado en la documentación y actualizar la documentación de tu idioma. 73 | 74 | Si quieres traducir este complemento a otro idioma y no quieres abrir una cuenta en github o instalar python y otras herramientas necesarias para la traducción, haz los siguientes pasos: 75 | 76 | 1. Utiliza 77 | [esta plantilla,](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 78 | como base para el idioma de destino. 79 | 2. Descarga 80 | ["poedit,"](https://poedit.net/) 81 | este software te ayudará a gestionar las cadenas de traducción. 82 | 3. Si quieres traducir la documentación también, puedes ver los nuevos cambios de la documentación 83 | [en este enlace.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) Puedes ver la [documentación completa en inglés aquí.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 84 | 4. Una vez que hayas terminado la traducción, puedes enviármela a "dhf360@gmail.com". 85 | 86 | No necesitarás compilar los archivos fuente. Lo haré cuando lance una nueva versión del complemento. Mencionaré tu nombre en el respectivo commit. Si no deseas ser mencionado, házmelo saber en el correo electrónico. 87 | 88 | Nota: asegúrate de que has utilizado la última plantilla de cadenas de traducción. 89 | 90 | Este es un método alternativo. Si quieres, siempre puedes usar la forma habitual. Haz un fork de este repo, actualiza la traducción para el idioma destino, y envía un PR. Pero esta forma sólo añadirá más complejidad para ti. 91 | 92 | ## Empaquetar el complemento para su distribución. 93 | 94 | 1. Instala python, actualmente se usa python 3.7, pero puedes usar una versión más reciente si lo deseas. 95 | 2. Instala Gettext, puedes descargar una distribución para windows en [este enlace.](https://mlocati.github.io/articles/gettext-iconv-windows.html) Si estás usando Windows 64 bits, te recomiendo [esta versión.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 96 | 3. (paso opcional pero recomendado) crea un entorno virtual de python para administrar los complementos de NVDA. En la consola, usa "python -m venv PAT_TO_FOLDER". Donde PAT_TO_FOLDER es la ruta deseada para el entorno virtual. 97 | 4. Si realizaste el paso 2, Ve a PAT_TO_FOLDER y dentro de la carpeta de scripts, ejecuta "activate". El nombre del entorno debe mostrarse en el indicador de la consola. 98 | 5. Clona este repositorio en la ruta deseada: git clone "https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 99 | 6. En la misma instancia de la consola, ve a la carpeta de este repositorio. 100 | 7. Instala los requisitos: "pip install -r requirements.txt". 101 | 8. Ejecuta el comando scons. El complemento creado, si no hubo errores, se coloca en el directorio raíz de este repositorio. 102 | 103 | Una vez que cierras la consola, el entorno virtual se desactiva. 104 | 105 | ### Empaquetar las librerías como un complemento independiente. 106 | 107 | No se recomienda incluir las librerías con este controlador. Es porque si el usuario actualiza el driver desde el 108 | [repo oficial](https://github.com/davidacm/NVDA-IBMTTS-Driver), 109 | usando el instalador de complementos de NVDA, la versión antigua será eliminada incluyendo las librerías. Una solución para esto, es instalar las librerías en un complemento separado. 110 | [Sigue este enlace](https://github.com/davidacm/ECILibrariesTemplate) 111 | para saber cómo empaquetar las bibliotecas en un complemento separado. 112 | 113 | ### Notas: 114 | 115 | * Si usas la función de actualización interna (manual o automática), las librerías no se eliminarán incluso si están dentro del complemento. 116 | * si el sintetizador está dentro de este complemento o en el complemento "eciLibraries", el controlador actualizará las rutas del archivo ini automáticamente. Así que puedes usarlo en versiones portables de NVDA. 117 | * cuando utilices el botón "Copiar archivos IBMTTS en un add-on", creará un nuevo add-on en NVDA. Por lo tanto, si deseas desinstalar IBMTTS, necesitarás desinstalar dos complementos: "Controlador de IBMTTS" y "Eci libraries". 118 | * Las herramientas scons y gettext de este proyecto son compatibles con python 3 únicamente. No funcionan en python 2.7. 119 | * Puedes agregar los archivos extra requeridos de IBMTTS dentro del complemento (para uso personal solamente). Simplemente cópialos dentro de "addon\synthDrivers\ibmtts". Ajusta el nombre de la librería por defecto en "settingsDB.py" si es necesario. 120 | * Si la ruta configurada para la librería no es relativa, Este controlador no actualizará las rutas del archivo "eci.ini". El controlador supone que al usar rutas absolutas, las rutas son correctas en "eci.ini" y evitará realizar actualizaciones. Ten esto en cuenta al establecer la ruta de tus librerías. Si no fueran correctas en dicho archivo, podría causar errores que dejarían a NVDA sin habla cuando utilices este sintetizador. 121 | 122 | ## Reporte de problemas. 123 | 124 | Si encuentras un problema de seguridad con algunas de las bibliotecas compatibles con este controlador, no abras un problema de github ni lo comentes en los foros antes de que se resuelva el problema. Informa el problema en [este formulario.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 125 | 126 | Si el problema no perjudica el controlador o el lector de pantallas, abre un [problema de github aquí.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 127 | 128 | ## Referencias. 129 | 130 | Este controlador está basado en el SDK de Viavoice de IBM (IBMTTS) la documentación está disponible en [este enlace](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 131 | 132 | también en la universidad Columbia en [este enlace](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 133 | 134 | o puedes encontrar una copia en [este repositorio](https://github.com/david-acm/NVDA-IBMTTS-Driver) 135 | 136 | [pyibmtts: envoltorio de Python para IBM TTS desarrollado por Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 137 | 138 | Consulta los archivos de respaldo aquí: 139 | 140 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 141 | 142 | o [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 143 | -------------------------------------------------------------------------------- /addon/doc/fr/readme.md: -------------------------------------------------------------------------------- 1 | # Pilote IBMTTS, extension pour NVDA # 2 | 3 | Cette extension implémente la compatibilité NVDA avec le synthétiseur IBMTTS. 4 | Nous ne pouvons pas distribuer les bibliothèques IBMTTS. Donc, c'est juste le pilote. 5 | Si vous souhaitez améliorer ce pilote, n'hésitez pas à envoyer librement vos pull requests via GitHub ! 6 | 7 | Bien que ce pilote soit compatible avec les bibliothèques d'Eloquence puisque Eloquence a la même API que IBMTTS), il n'est pas recommandé d'utiliser Eloquence avec ce pilote en raison de problèmes de licence. Avant d'utiliser des bibliothèques de synthèse avec ce pilote, il est recommandé d'obtenir d'abord les droits d'utilisation des licences. 8 | 9 | Ce pilote a été développé avec la documentation disponible pour IBMTTS, accessible au public sur le Web. Voir la section Références pour plus de détails. 10 | 11 | ## Télécharger. 12 | La dernière version est disponible [en téléchargement sur ce lien](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 13 | 14 | ## Qu'est-ce que le synthétiseur IBMTTS ? 15 | 16 | ViaVoice TTS est un moteur de texte à parole développé par IBM, qui synthétise la représentation textuelle du langage humain en voix. 17 | 18 | ## Caractéristiques et paramètres. 19 | 20 | * Prise en charge des paramètres de voix, variante, débit, hauteur, inflexion et volume. 21 | * Prise en charge des paramètres supplémentaire taille de la tête, enrouement , respiration. Créez votre propre voix ! 22 | * Activer ou désactiver les balises de changement de voix. Désactivez-les pour vous protéger contre les codes malveillants des farceurs, activez-les pour permettre de faire beaucoup de choses amusantes avec le synthétiseur. Nécessite une modification supplémentaire avec NVDA cependant pour le faire fonctionner correctement. 23 | * Voix turbo. Si le synthétiseur ne vous parle pas assez vite, activez la voix turbo et obtenez la vitesse maximale ! 24 | * Changement automatique de langue. Laissez le synthétiseur vous lire du texte dans la bonne langue lorsqu'il est coché. 25 | * Filtrage extensible. Ce pilote comprend un large ensemble de filtres pour résoudre les chocs et autres comportements étranges du synthétiseur. 26 | * Prise en charge du dictionnaire. Ce pilote prend en charge l'intégration de mots spéciaux, dictionnaires racines et dictionnaires d'abréviation des utilisateurs pour chaque langue. Les ensembles de dictionnaires prêts à l'emploi peuvent être obtenus à partir du [dépôt du dictionnaire de la communauté](https://github.com/thunderdrop/IBMTTSDictionaries) ou à partir du [dépôt alternatif de mohamed00 (avec des dictionnaires du synthétiseur IBM)](https://github.com/mohamed00/AltIBMTTSDictionaries) 27 | 28 | ### Paramètres supplémentaires: 29 | 30 | * Activer l'expansion des abréviations: Bascule l'expansion des abréviations. Notez que la désactivation de cette option désactivera également l'expansion de toute abréviation spécifiée dans les dictionnaires des abréviations fournis par l'utilisateur. 31 | * Activer la prédiction de phrase: Si cette option est activée, le synthétiseur essaiera de prédire où des pauses se produiraient en phrases en fonction de leur structure, par exemple, en utilisant des mots comme "et" ou "le" comme limites de phrase. Si cette option est désactivée, elle ne fera que faire une pause que si des virgules ou d'autres ponctuations sont rencontrées. 32 | * Réduire les pauses: Activez cette option pour des pauses de ponctuation plus courtes, comme celles vues dans d'autres lecteurs d'écran. 33 | * Toujours envoyer les paramètres vocaux: Il y a actuellement un bug dans le synthétiseur qui entraînera parfois les paramètres vocaux et hauteur à être brièvement réinitialisé à leurs valeurs par défaut. La cause de ce problème est actuellement inconnue, mais une solution de contournement consiste à envoyer en permanence les paramètres vocaux de débit actuelle et de hauteur. Cette option doit généralement être activée. Cependant, il doit être désactivé si la lecture du texte contient des balises de changement de voix. 34 | * Taux d'échantillonnage: Modifie la qualité sonore du synthétiseur. Utile pour IBMTTS, où il est possible de définir le taux d'échantillonnage à 8 kHz permettant d'accéder à un nouvel ensemble de voix. 35 | 36 | ### Paramètres de la catégorie IBMTTS. 37 | 38 | Cette extension a sa propre catégorie de paramètres dans les options de NVDA, pour gérer certaines fonctionnalités internes non liées à la synthèse vocale. 39 | 40 | * Rechercher automatiquement les mises à jour pour IBMTTS: Si cette option est cochée, l'extension recherchera quotidiennement les nouvelles versions disponibles. 41 | * Le bouton Rechercher une mise à jour: Recherche manuellement les nouvelles mises à jour de l'extension. 42 | * Adresse du dossier IBMTTS: Le chemin pour charger la bibliothèque IBMTTS. Il peut être absolu ou relatif. 43 | * Nom de la bibliothèque IBMTTS (dll): Le nom de la bibliothèque (dll). N'inclue pas les chemins, seulement le nom avec l'extension, généralement ".dll". 44 | * Rechercher une bibliothèque IBMTTS... Ouvre une boîte de dialogue Explorateur de fichiers pour rechercher la bibliothèque IBMTTS sur le système. Il sera enregistré comme un chemin absolu. 45 | * Copier les fichiers IBMTTS dans une extension. (Cela ne fonctionne peut-être pas pour certaines distributions IBMTTS): Si le chemin de la bibliothèque pour IBMTTS a été défini, il copiera tous les fichiers du dossier dans une nouvel extension appelée eciLibraries et mettra à jour le chemin actuel vers un chemin relatif. Il est très utile dans les versions portables de NVDA. Il ne fonctionne que pour les bibliothèques qui utilisent des fichiers "eci.ini" pour les informations sur la langue de la voix. Si la bibliothèque utilise le registre de Windows, cette option ne fonctionnera pas. 46 | 47 | Remarque: La fonctionnalité de mise à jour automatique ou manuelle ne supprime pas les fichiers internes de l'extension. Si vous utilisez vos bibliothèques à cet endroit, vous pouvez utiliser cette fonction en toute sécurité. Vos bibliothèques seront en sécurité. 48 | 49 | ## Exigences. 50 | ### NVDA. 51 | Vous avez besoin de NVDA 2019.3 ou une version ultérieure. 52 | 53 | ### Bibliothèques du synthétiseur IBMTTS. 54 | Ce n'est que le pilote, vous devez vous procurer les bibliothèques ailleurs. 55 | Ce pilote prend en charge les bibliothèques légèrement plus récentes qui ajoutent un support de langue est-asiatique et disposent de corrections spécifiques pour le codage approprié du texte. Cependant, les bibliothèques les plus anciennes sans cela devraient fonctionner. 56 | À partir de la version 21.03A1, le pilote travaille également avec les bibliothèques encore plus récentes d'IBM, au lieu de seulement les SpeechWorks. Un ensemble de correctifs indépendants pour ces bibliothèques est inclus, et les langues supplémentaires et d'autres différences sont prises en compte. Seules les voix concaténatives sont prises en charge et sont accessibles en définissant le taux d'échantillonnage sur 8 kHz après l'installation de la voix. Pour des meilleurs résultats, utilisez la build de Juin 2005 de ibmeci.dll version 7.0.0.0, car les versions plus anciennes peuvent être instables lors de la réception du texte rapidement, par exemple, en faisant rapidement défiler les éléments dans une liste. Notez également que si vous utilisez des bibliothèques IBMTTS cantonaises ou chinoises de Hong Kong, vous voudrez peut-être désactiver la fonction d'épellation si elle est supportée, pour éviter que certains caractères de ces langues ne soient épelés en utilisant le pinyin quand ils sont convertis en interne. 57 | 58 | ## Installation. 59 | Installez-le simplement comme n'importe quel extension NVDA. Ouvrez ensuite les paramètres du dialogue NVDA et dans la catégorie IBMTTS définissez le chemin des fichiers IBMTTS. 60 | Également dans cette catégorie, vous pouvez copier les fichiers externes IBMTTS dans l'extension pour l'utiliser localement, utile pour les versions portables de NVDA. 61 | 62 | ## Contribuant à la traduction. 63 | 64 | Afin de faciliter votre travail, j'ai laissé un 65 | [modèle de traduction dans la branche master.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 66 | 67 | Pour la documentation, j'ai créé un fichier appelé ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 68 | Vous pouvez utiliser ce fichier pour voir ce qui a été modifié dans la documentation et mettre à jour la documentation de votre langue. 69 | 70 | Si vous souhaitez traduire cette extension dans une autre langue et que vous ne souhaitez pas ouvrir un compte GitHub ou installer Python et d'autres outils nécessaires pour la traduction, effectuez les étapes suivantes: 71 | 72 | 1. Utilisez 73 | [ce modèle](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot), 74 | comme base pour la langue cible. 75 | 2. Téléchargez 76 | ["poedit"](https://poedit.net/), 77 | ce logiciel vous aidera à gérer les chaînes de traduction. 78 | 3. Si vous souhaitez également traduire la documentation, vous pouvez voir les nouveaux changements de la documentation 79 | [sur ce lien.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) Vous pouvez voir la [documentation en anglais complète ici.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 80 | 4. Une fois que vous avez terminé la traduction, vous pouvez m'envoyer à: "dhf360@gmail.com". 81 | 82 | Vous n'aurez pas besoin de compiler les fichiers source. Je le ferai lors du lancement d'une nouvelle version de l'extension. Je mentionnerai votre nom dans le commit respectif. Si vous ne voulez pas être mentionné, faites-le moi savoir par e-mail. 83 | 84 | Remarque: assurez-vous que vous avez utilisé le dernier modèle de chaînes de traduction. 85 | 86 | Il s'agit d'une méthode alternative. Si vous le souhaitez, vous pouvez toujours passer de la manière habituelle. Faire une duplication (Fork) de ce dépôt, mettez à jour la traduction de votre langue, et envoyez-moi un PR. Mais de cette façon, cela ajoutera plus de complexité pour vous. 87 | 88 | ## Empaquetage de l'extension pour sa distribution. 89 | 90 | 1. Installez Python, actuellement Python 3.7 est utilisé, mais vous pouvez utiliser une version plus récente. 91 | 2. Installez GetText, vous pouvez télécharger une distribution pour Windows sur [ce lien.](https://mlocati.github.io/articles/gettext-iconv-windows.html) Si vous utilisez Windows 64 bits, je recommande [cette version.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 92 | 3. (étape facultative mais recommandée) Créez un environnement virtuel Python à utiliser pour gérer les extensions NVDA. Dans la console, utilisez "python -m venv PAT_TO_FOLDER". Où PAT_TO_FOLDER est le chemin de votre chemin souhaité pour l'environnement virtuel. 93 | 4. Si vous avez fait l'étape 2, accédez à PAT_TO_FOLDER et à l'intérieur du dossier des scripts, exécutez "activate". Le nom de l'environnement doit être montré dans l'invite de la console. 94 | 5. Clonez ce dépôt dans votre chemin souhaité: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 95 | 6. Dans la même instance de la console, accédez au dossier de ce dépôt. 96 | 7. Installez les exigences: "pip install -r requirements.txt". 97 | 8. Exécutez la commande scons. L'extension créée, s'il n'y a pas d'erreur, sera placée dans le répertoire racine de ce dépôt. 98 | 99 | Une fois que vous fermez la console, l'environnement virtuel est désactivé. 100 | 101 | ### Empaquetage des bibliothèques comme extension indépendante. 102 | 103 | N'est pas recommandé d'inclure les bibliothèques avec ce pilote. C'est parce que si l'utilisateur met à jour le pilote à partir du 104 | [dépôt officiel](https://github.com/davidacm/NVDA-IBMTTS-Driver), 105 | à l'aide de l'installateur de l'extension de NVDA, l'ancienne version sera supprimée, y compris les bibliothèques. Une solution pour cela consiste à installer les bibliothèques dans une extension séparée. 106 | [Suivez ce lien](https://github.com/davidacm/ECILibrariesTemplate) 107 | pour savoir comment empaqueter les bibliothèques dans une extension séparée. 108 | 109 | ### Notes: 110 | 111 | * Si vous utilisez la fonctionnalité de mise à jour interne (manuel ou automatique), les bibliothèques ne seront pas supprimées même si elles se trouvent à l'intérieur de l'extension. 112 | * Si le synthétiseur est dans cette extension ou dans l'extension 113 | ["eciLibraries"](https://github.com/davidacm/ECILibrariesTemplate), 114 | le pilote mettra à jour automatiquement les chemins de la bibliothèque ini. Vous pouvez donc l'utiliser sur les versions portables de NVDA. 115 | * Lorsque vous utilisez le bouton "Copier les fichiers IBMTTS dans une extension", il créera une nouvelle extension dans NVDA. Par conséquent, si vous souhaitez désinstaller IBMTTS, vous devez désinstaller deux extensions: "Pilote IBMTTS" et "Eci libraries". 116 | * Les outils scons et gettext sur ce projet sont uniquement compatibles avec Python 3. Ils ne fonctionnent pas avec Python 2.7. 117 | * Vous pouvez ajouter les fichiers supplémentaires requis de IBMTTS dans l'extension (pour un usage personnel uniquement). Copiez-les simplement dans le dossier "addon\synthDrivers\ibmtts". Définissez le nom de la bibliothèque par défaut dans "settingsDB.py" si nécessaire. 118 | * Si le chemin de la bibliothèque configuré n'est pas relatif, cette extension ne metra pas à jour les chemins dans le fichier "eci.ini". Le pilote suppose que lors de l'utilisation de chemins absolus, les chemins sont corrects dans "eci.ini" et éviteront de faire des mises à jour. Gardez cela à l'esprit lorsque vous définissez le chemin de vos bibliothèques. S'ils n'étaient pas corrects, cela pourrait entraîner des erreurs qui rendront NVDA sans parole lorsque vous utilisez ce synthétiseur. 119 | 120 | ## Signalant des problèmes: 121 | 122 | Si vous trouvez un problème de sécurité avec certaines des bibliothèques compatibles avec ce pilote, veuillez ne pas ouvrir une incidence (issue) en GitHub ni le commenter sur les forums avant que le problème ne soit résolu. Veuillez signaler le problème sur [ce formulaire.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 123 | 124 | Si le problème ne plante pas le pilote ou le lecteur d'écran, ouvrez une [incidence (issue) en GitHub par ici.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 125 | 126 | ## Références. 127 | Ce pilote est basé sur le SDK de Viavoice de IBM (IBMTTS), la documentation est disponible sur 128 | [ce lien](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 129 | 130 | également à l'Université de Columbia sur 131 | [ce lien](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 132 | 133 | Ou vous pouvez obtenir une copie sur [ce déppôt](https://github.com/david-acm/NVDA-IBMTTS-Driver) 134 | 135 | [pyibmtts: Python wrapper pour IBM TTS développé par Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 136 | 137 | Voir les fichiers de sauvegarde ici: 138 | 139 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 140 | 141 | ou [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 142 | -------------------------------------------------------------------------------- /addon/doc/it/readme.md: -------------------------------------------------------------------------------- 1 | # Driver IBMTTS, componente aggiuntivo per NVDA 2 | Questo componente aggiuntivo implementa la compatibilità di NVDA con il sintetizzatore IBMTTS. 3 | Non possiamo distribuire le librerie di IBMTTS. Questo è solo il driver. 4 | Se vuoi migliorare questo driver, sentiti libero di inviare le tue pull requests! 5 | Sebbene questo driver sia compatibile con le librerie Eloquence (dal momento che Eloquence ha la stessa API di IBMTTS) non è consigliabile utilizzare Eloquence con questo driver a causa di problemi di licenza. Prima di utilizzare qualsiasi libreria di sintesi con questo driver, si consiglia innanzitutto di ottenere i diritti di utilizzo della licenza. 6 | Questo driver è stato sviluppato con la documentazione disponibile per IBMTTS, pubblicamente disponibile sul web. Vedere la sezione riferimenti per maggiori dettagli. 7 | ## Download. 8 | L'ultima versione è disponibile per il download a [questo link](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 9 | ## Che cos'è il sintetizzatore IBMTTS? 10 | ViaVoice TTS è un motore di sintesi vocale sviluppato da IBM, che sintetizza la rappresentazione testuale del linguaggio umano in parlato. 11 | ## Caratteristiche e impostazioni: 12 | * Supporto per l'impostazione di voce, variante, velocità, tono, inflessione e volume. 13 | * Supporto per le impostazioni dei parametri aggiuntivi per dimensioni della testa, raucedine e respirazione. Crea la tua voce! 14 | * Abilita o disabilita i tag vocali backquote. Disabilitali per proteggerti dai codici dannosi dei jolly, abilitali per fare molte cose divertenti con il sintetizzatore. Richiede alcune modifiche aggiuntive con NVDA per farli funzionare correttamente. 15 | * Aumento velocità. Se il sintetizzatore non parla abbastanza velocemente, abilitalo e ottieni la massima velocità vocale! 16 | * Cambiamento automatico della lingua. Lascia che il sintetizzatore ti legga il testo nella lingua corretta quando contrassegnato. 17 | * Filtraggio completo. Questo driver include un set completo di filtri per correggere arresti anomali e altri comportamenti strani del sintetizzatore. 18 | * Supporto per i dizionari. Questo driver supporta l'integrazione di parole speciali, radici e dizionari utente di abbreviazioni per ciascuna lingua. I set di dizionari già pronti possono essere ottenuti dal [repository dei dizionari della comunità](https://github.com/thunderdrop/IBMTTSDictionaries) o dal [repository alternativo di mohamed00 (con dizionari del sintetizzatore IBM)](https://github.com/mohamed00/AltIBMTTSDictionaries) 19 | ## Impostazioni aggiuntive: 20 | * Abilita espansione abbreviazioni: attiva/disattiva l'espansione delle abbreviazioni. Si noti che la disattivazione di questa opzione disabiliterà anche l'espansione di qualsiasi abbreviazione specificata nei dizionari delle abbreviazioni forniti dall'utente. 21 | * Abilita previsione della frase: se questa opzione è abilitata, il sintetizzatore proverà a prevedere dove si verificherebbero le pause nelle frasi in base alla loro struttura, ad esempio utilizzando parole come "e" o "il" come limiti della frase. Se questa opzione è disattivata, verranno aggiunte delle pause solo se si incontrano virgole o altra punteggiatura simile. 22 | * Accorcia le pause: abilita questa opzione per pause di punteggiatura più brevi, come quelle viste in altri screen reader. 23 | * Invia sempre le impostazioni vocali correnti: c'è un bug nel sintetizzatore che occasionalmente causa un breve ripristino delle impostazioni vocali e del tono ai valori predefiniti. La causa di questo problema è attualmente sconosciuta, tuttavia una soluzione alternativa consiste nell'inviare continuamente le impostazioni correnti della velocità e del tono della voce. Questa opzione dovrebbe generalmente essere abilitata, ma deve essere disabilitata se si legge testo che contiene tag vocali backquote. 24 | * Frequenza di campionamento: cambia la qualità del suono del sintetizzatore. Molto utile per IBMTTS, dove l'impostazione della frequenza di campionamento su 8 kHz consente l'accesso a un nuovo set di voci. 25 | ### Impostazioni della categoria IBMTTS 26 | Questo componente aggiuntivo ha una propria categoria nelle impostazioni di NVDA, per gestire alcune funzionalità interne non legate alla sintesi vocale. 27 | * Verifica automaticamente la presenza di aggiornamenti per IBMTTS: se questa opzione è selezionata, il componente aggiuntivo verificherà quotidianamente la disponibilità di nuove versioni. 28 | * Pulsante Controlla aggiornamenti: verifica manualmente la presenza di nuovi aggiornamenti del componente aggiuntivo. 29 | * Percorso della cartella di IBMTTS: il percorso in cui caricare la libreria IBMTTS. Può essere assoluto o relativo. 30 | * Nome della libreria di IBMTTS (dll): il nome della libreria (dll). Non includere percorsi, solo il nome con l'estensione, solitamente ".dll". 31 | * Cerca unalibreria IBMTTS... Apre una finestra di dialogo Sfoglia file per cercare la libreria IBMTTS nel sistema. Verrà salvato come percorso assoluto. 32 | * Copia i file di IBMTTS in un componente aggiuntivo (potrebbe non funzionare in alcune distribuzioni di IBMTTS): se è stato impostato il percorso della libreria per IBMTTS, copierà tutti i file della cartella in un nuovo componente aggiuntivo chiamato eciLibraries e aggiornerà il percorso corrente a un percorso relativo. È molto utile nelle versioni portatili di NVDA. Funziona solo per le biblioteche che utilizzano i file "eci.ini" per le informazioni sulla lingua della voce. Se la libreria utilizza il registro di Windows, questa opzione non funzionerà. 33 | 34 | Nota: la funzionalità di aggiornamento automatico o manuale non rimuoverà i file interni del componente aggiuntivo. Se usi lì le tue librerie, puoi tranquillamente usare questa funzione. Queste saranno al sicuro. 35 | ## Requisiti. 36 | ### NVDA. 37 | Hai bisogno di NVDA 2019.3 o versioni successive. 38 | ### Librerie del sintetizzatore IBMTTS. 39 | Questo è solo il driver, devi ottenere le librerie altrove. 40 | Questo driver supporta le librerie leggermente più recenti che aggiungono il supporto per le lingue dell'Asia orientale e dispone di correzioni specifiche per la corretta codifica del testo. Tuttavia, le librerie più vecchie senza questo dovrebbero funzionare. 41 | A partire dalla versione 21.03A1, questo driver funziona anche con le librerie ancora più recenti di IBM, anziché solo con quelle di SpeechWorks. È inclusa una serie di correzioni indipendenti per tali librerie e vengono prese in considerazione le lingue aggiuntive e altre differenze. Le voci concatenative sono supportate e sono accessibili impostando la frequenza di campionamento su 8 kHz dopo aver installato le voci. Per risultati ottimali, utilizzare la build di giugno 2005 di ibmeci.dll versione 7.0.0.0, poiché le versioni precedenti possono essere instabili durante la ricezione rapida del testo, ad esempio scorrendo rapidamente gli elementi in un elenco. 42 | ## Installazione. 43 | Basta installarlo come un qualsiasi componente aggiuntivo per NVDA. Dopo l'installazione apri la finestra di dialogo delle impostazioni di NVDA e imposta i file della cartella IBMTTS nella categoria IBMTTS. In questa categoria è anche possibile copiare i file di IBMTTS esterni in un componente aggiuntivo per utilizzarli localmente. 44 | ## Contribuire alla traduzione. 45 | Per facilitarti il lavoro, ho lasciato un [modello di traduzione](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) nel ramo master. Se vuoi tradurre questo componente aggiuntivo in un'altra lingua e non vuoi aprire un account github o installare python e altri strumenti necessari per latraduzione, procedi come segue: 46 | 1. Usa [questo modello](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) come base per la lingua di destinazione. 47 | 2. Scarica ["poedit"](https://poedit.net/), questo software ti aiuterà a gestire le stringhe di traduzione. 48 | 3. Se vuoi tradurre anche la documentazione, puoi farlo da quella in inglese a [questo link](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/README.md). 49 | 4. Una volta terminata la traduzione, puoi inviarmela a: "dhf360@gmail.com". 50 | 51 | Non dovrai compilare i file sorgente. Lo farò io quando rilascerò una nuova versione del componente aggiuntivo. Menzionerò il tuo nome nel rispettivo commit. Se non desideri essere menzionato, fammelo sapere nell'e-mail. 52 | Nota: assicurati di aver utilizzato l'ultimo modello di stringhe di traduzione. 53 | Questo è un metodo alternativo. Se vuoi, puoi sempre procedere con il metodo classico. Effettua il fork di questo repository, aggiorna la traduzione per la tua lingua e inviami una PR, ma in questo modo sarà solo più complesso per te. 54 | ## Creare un pacchetto per la distribuzione. 55 | 1. Installa Python, attualmente viene utilizzato Python 3.7, ma puoi utilizzare una versione più recente. 56 | 2. Installa gettext, puoi scaricare una distribuzione per Windows da [questo link](https://mlocati.github.io/articles/gettext-iconv-windows.html). Se stai usando Windows a 64 bit, ti consiglio [questa versione](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe). 57 | 3. (passaggio facoltativo ma consigliato) creare un ambiente virtuale python da utilizzare per gestire i componenti aggiuntivi di NVDA. Nella console, usa "python -m venv PERCORSO DELLA CARTELLA", Dove "PERCORSO DELLA CARTELLA" è il percorso della cartella desiderata per l'ambiente virtuale. 58 | 4. Se hai eseguito il passaggio 2, vai a "PERCORSO DELLA CARTELLA" e all'interno della cartella degli script, esegui "activate". Il nome dell'ambiente dovrebbe essere mostrato nel pront della console. 59 | 5. Clona questo repository nel percorso desiderato: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 60 | 6. Nella stessa istanza della console, vai alla cartella di questo repository. 61 | 7. Installa i requisiti: "pip install -r requirements.txt". 62 | 8. Esegui il comando scons. Il componente aggiuntivo creato, se non ci sono stati errori, viene posizionato nella directory principale di questo repository. 63 | 64 | Una volta chiusa la console, l'ambiente virtuale viene disattivato. 65 | ### Impacchettare le librerie in un componente aggiuntivo separato 66 | Non è consigliabile includere le librerie con questo driver, perché se l'utente aggiorna il driver dal [[repository ufficiale](https://github.com/davidacm/NVDA-IBMTTS-Driver), la vecchia versione verrà eliminata comprese le librerie. Una soluzione a questo problema è installare le librerie in un componente aggiuntivo separato. Segui [questo link](https://github.com/davidacm/ECILibrariesTemplate) per sapere come impacchettare le librerie in un componente aggiuntivo separato. 67 | ### Note: 68 | * Se utilizzi la funzionalità di aggiornamento interno (manuale o automatico) le librerie non verranno eliminate anche se si trovano all'interno del componente aggiuntivo. 69 | * Se il sintetizzatore si trova all'interno del componente aggiuntivo o nel componente aggiuntivo ["eciLibraries"](https://github.com/davidacm/ECILibrariesTemplate), il driver aggiornerà automaticamente i percorsi della libreria ini in modo da poterlo usare su versioni portable di NVDA. 70 | * Quando si utilizza il pulsante "Copia i file IBMTTS in un componente aggiuntivo", verrà creato un nuovo componente aggiuntivo, quindi se vuoi disinstallare IBMTTS, dovrai disinstallare due componenti aggiuntivi: "Driver IBMTTS" e "eciLibraries". 71 | * Gli strumenti scons e gettext su questo progetto sono compatibili solo con Python 3. Non funzionano con Python 2.7. 72 | * È possibile inserire i file IBMTTS aggiuntivi richiesti nel componente aggiuntivo (solo per uso personale). Basta copiarli nella cartella "addon\synthDrivers\ibmtts". Imposta il nome della libreria predefinita in "settingsDB.py" se necessario. 73 | ## Segnalazione di problemi 74 | Se riscontri un problema di sicurezza con alcune delle librerie compatibili con questo driver, non aprire un issue su github né commentarlo sui forum prima che il problema sia risolto. Si prega di segnalare il problema tramite [questo modulo](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit). 75 | Se il problema non provoca l'arresto anomalo del driver o dello screen reader, apri un issue con github da [qui](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues). 76 | ## Riferimenti. 77 | Questo driver è basato su IBM tts sdk, la documentazione è disponibile su: [questo link](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 78 | Anche all'università di Columbia a [questo link](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 79 | O puoi ottenere una copia di backup da [questo repository](https://github.com/david-acm/NVDA-IBMTTS-Driver) 80 | [pyibmtts: wrapper Python per IBM TTS sviluppato da Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 81 | Guarda i file di backup qui: 82 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) o [tts.txt](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) -------------------------------------------------------------------------------- /addon/doc/pt_br/README.md: -------------------------------------------------------------------------------- 1 | # Driver IBMTTS, add-on para NVDA # 2 | 3 | Este add-on implementa o suporte do NVDA para o sintetizador IBMTTS. 4 | Não podemos distribuir as bibliotecas IBMTTS. Este é apenas o controlador. 5 | Se você quiser contribuir para melhorar este driver, sinta-se à vontade para nos enviar seus pull requests via GitHub! 6 | 7 | Embora este driver seja compatível com as bibliotecas do Eloquence (já que o Eloquence tem a mesma api que o IBMTTS), não é recomendável usar o Eloquence com este driver devido a problemas de licenciamento. Antes de usar qualquer biblioteca de síntese com este driver, recomenda-se obter os direitos de uso da licença primeiro. 8 | 9 | Este driver foi desenvolvido com a documentação disponível para o IBMTTS, disponível publicamente na web. Consulte a seção de referências para obter mais detalhes. 10 | 11 | ## Download. 12 | A última versão está disponível para [download neste link](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 13 | 14 | ## O que é o sintetizador IBMTTS? 15 | 16 | O ViaVoice TTS é um mecanismo de conversão de texto em fala desenvolvido pela IBM, que sintetiza a representação textual da linguagem humana em fala. 17 | 18 | ## Recursos e configurações. 19 | 20 | * Suporte para configurações de voz, variante, velocidade, tom, inflexão e volume. 21 | * Suporta parâmetros extras, como tamanho da cabeça, rouquidão, respiração. Crie sua própria voz! 22 | * Ative ou desative as tags de mudanças de voz. Desative para se proteger contra códigos maliciosos de brincalhões, ative para permitir fazer muitas coisas divertidas com o sintetizador. Requer um ajuste adicional no NVDA para que funcione corretamente. 23 | * Aumento especial de velocidade. Se o sintetizador não estiver falando rápido o suficiente, ative o aumento de velocidade e obtenha a velocidade máxima! 24 | * Mudança automática de idioma. Permite que o sintetizador leia o texto no idioma correto quando marcado. 25 | * Filtragem estendida. O driver inclui um extenso conjunto de filtros para lidar com falhas e outros comportamentos estranhos do sintetizador. 26 | * Suporte de dicionário. O driver suporta a integração de palavras especiais, dicionários de raiz e dicionários de abreviaturas do usuário para cada idioma. Conjuntos de dicionários prontos podem ser obtidos [no repositório de dicionários da comunidade](https://github.com/thunderdrop/IBMTTSDictionaries) ou [no repositório alternativo de mohamed00 (com dicionários do sintetizador IBM)](https:/ /github.com /mohamed00/AltIBMTTSDictionaries) 27 | 28 | ### Configurações adicionais: 29 | 30 | * Expandir Abreviaturas: Ativa a expansão de abreviaturas. Observe que desabilitar esta opção também desabilitará a expansão de quaisquer abreviações especificadas nos dicionários de abreviaturas fornecidos pelo usuário. 31 | * Habilitar previsão de frases: Se esta opção estiver habilitada, o sintetizador tentará prever onde as pausas nas frases ocorrerão com base em sua própria estrutura, por exemplo, usando palavras como "e" e "o" como limites de frase. Se estiver desligada, ele só fará uma pausa quando encontrar uma vírgula ou outros sinais de pontuação. 32 | * Pausas: Esta é uma caixa de combinação com três opções. 33 | * Não encurtar: as pausas não serão encurtadas e as pausas originais do IBMTTS serão usadas em todos os casos. 34 | * Encurtar somente no final do texto: pausas de símbolos de pontuação, como pontos e vírgulas, não serão encurtadas, mas serão encurtadas quando o texto terminar, por exemplo, ao pressionar NVDA+t duas vezes rapidamente para soletrar a barra de título de um aplicativo caractere por caractere. 35 | * Encurtar todas as pausas: todas as pausas, incluindo pausas de pontuação e pausas que ocorrem no final do texto, serão encurtadas. 36 | * Sempre enviar as configurações de voz atuais: há um bug no sintetizador que ocasionalmente fará com que as configurações de velocidade e tom de voz sejam brevemente redefinidas para seus valores padrão. A causa desse problema é atualmente desconhecida, no entanto, uma solução alternativa é enviar continuamente as configurações atuais de velocidade e tom. Esta opção geralmente deve ser habilitada. No entanto, deve desabilitá-la se estiver lendo texto que contenha tags de mudança de voz. 37 | * Taxa de amostragem: altera a qualidade sonora do sintetizador. Mais útil para o IBM ViaVoice, em que a definição da taxa de amostragem para 8 kHz permite o acesso a um novo conjunto de vozes. 38 | 39 | ### Categoria de configurações do IBMTTS. 40 | 41 | Este complemento possui sua própria categoria de configurações nas opções do NVDA, para gerenciar algumas funcionalidades internas não relacionadas à síntese de fala. 42 | 43 | * Procurar atualizações do IBMTTS automaticamente: Se esta opção estiver marcada, o complemento verificará diariamente se há novas versões disponíveis. 44 | * Botão Procurar atualização: verifique manualmente se há novas atualizações do complemento. 45 | * Endereço da pasta do IBMTTS: O caminho para carregar as bibliotecas do IBMTTS. Pode ser absoluto ou relativo. 46 | * Nome da biblioteca do IBMTTS (dll): O nome da biblioteca (dll). Não inclua caminhos, apenas o nome com a extensão, geralmente ".dll". 47 | * Procurar a biblioteca do IBMTTS... Abre uma caixa de diálogo de navegação de arquivo para procurar a biblioteca do IBMTTS no sistema. Será salvo como um caminho absoluto. 48 | * Copiar os arquivos do IBMTTS para um add-on. (pode não funcionar para algumas distribuições do IBMTTS): Se o caminho da biblioteca do IBMTTS tiver sido definido, ele copiará todos os arquivos da pasta para um novo complemento chamado eciLibraries e atualizará o caminho atual para um caminho relativo. É muito útil nas versões portáteis do NVDA. Funciona apenas para as bibliotecas que usam o arquivo "eci.ini" para as informações dos idiomas de voz. Se a biblioteca usar o registro do Windows, essa opção não funcionará. 49 | 50 | Observação: a funcionalidade de atualização automática ou manual não removerá os arquivos internos do complemento. Se você usar suas bibliotecas nesse local, poderá usar essa função com segurança. Suas bibliotecas estarão seguras. 51 | 52 | ## requisitos. 53 | ###NVDA. 54 | Requer o NVDA 2019.3 ou posterior. 55 | 56 | ### As bibliotecas do sintetizador IBMTTS. 57 | Este é apenas o driver, você deve procurar as bibliotecas em outro lugar. 58 | O driver oferece suporte às bibliotecas um pouco mais recentes que adicionam suporte aos idiomas do leste asiático e possui correções específicas para codificação de texto adequada. No entanto, bibliotecas mais antigas sem isso devem funcionar normalmente. 59 | A partir da versão 21.03A1, o driver também funciona com as bibliotecas ainda mais recentes do IBM ViaVoice, em vez de apenas com as do SpeechWorks. Um conjunto separado de correções está incluído para essas bibliotecas, levando em consideração idiomas adicionais e outras diferenças. As vozes concatenativas são agora suportadas e podem ser acessadas definindo a taxa de amostragem para 8 kHz após a instalação das vozes. Para obter melhores resultados, use a compilação de Junho de 2005 da ibmeci.dll (versão 7.0.0.0), pois as versões mais antigas podem ser instáveis ao receber texto rapidamente, por exemplo, ao navegar rapidamente pelos itens em uma lista. observe também que, se você estiver usando as bibliotecas do IBM ViaVoice em cantonês de Hong Kong ou chinês, convém desativar a opção "Usar soletragem melhorada quando suportado", para evitar que alguns caracteres nesses idiomas sejam soletrados usando o pinyin para o qual são convertidos internamente. 60 | 61 | ## Instalação. 62 | Você só precisa instalá-lo como qualquer outro complemento do NVDA. Em seguida, abra a caixa de diálogo de configurações do NVDA e, na categoria IBMTTS, defina o caminho dos arquivos do IBMTTS. 63 | Nesta categoria você também pode copiar os arquivos externos do IBMTTS dentro do add-on. 64 | 65 | ## Contribuindo com a tradução. 66 | 67 | Para facilitar para os tradutores, deixei um [modelo de tradução no branch principal.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 68 | Para a documentação, criei um arquivo chamado ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 69 | Você pode usar esse arquivo para ver o que foi alterado na documentação e atualizar a documentação para o seu idioma. 70 | Se você deseja traduzir o complemento para outro idioma e não deseja criar uma conta GitHub e instalar o Python e outras ferramentas necessárias para a tradução, execute as seguintes etapas: 71 | 72 | 1. Use [este modelo](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot), como base para o idioma de destino. 73 | 2. Faça o download do ["poedit"](https://poedit.net/), este software irá ajudá-lo a gerenciar as strings de tradução. 74 | 3. Se você quiser traduzir a documentação também, pode ver as novas alterações da documentação 75 | [neste link.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) Veja a [documentação completa em inglês aqui.](https:/ /raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 76 | 4. Quando terminar a tradução, pode enviá-la para "dhf360@gmail.com". 77 | 78 | Você não precisa compilar os arquivos de origem. Farei isso quando publicar uma nova versão do complemento. Mencionarei seu nome no respectivo Commit. Se você não quiser ser mencionado, avise-me ao enviar o e-mail. 79 | 80 | Nota: certifique-se de ter usado o modelo mais recente das strings de tradução. 81 | 82 | Este é um método alternativo. Se desejar, você sempre pode usar o modo usual. Fork este repositório, atualize a tradução do idioma de destino e envie um PR. No entanto, este modo só trará mais complexidade para você. 83 | 84 | ## Empacotando o add-on para distribuição. 85 | 86 | Nota de tradução: Estas instruções destinam-se a criadores de complementos e não têm significado para a maioria dos usuários. 87 | 88 | 1. Instale o python (atualmente o python 3.7 é usado, mas você pode usar uma versão mais recente). 89 | 2. Instale o gettext (você pode baixar uma distribuição para windows [neste link.)](https://mlocati.github.io/articles/gettext-iconv-windows.html) Se estiver usando windows de 64 bits, recomendo [esta versão.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 90 | 3. Etapa opcional (mas recomendada) crie um ambiente virtual python para ser usado para gerenciar complementos do NVDA. No console, use "python -m venv PAT_TO_FOLDER". Onde PAT_TO_FOLDER é o caminho desejado para o seu ambiente virtual. 91 | 4. Caso você tenha feito a etapa 3, vá até PAT_TO_FOLDER e, dentro da pasta de scripts, execute "activate". O nome do ambiente deve ser mostrado no prompt do console. 92 | 5. Clone este repositório no caminho desejado: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 93 | 6. Na mesma instância do console, vá para a pasta deste repositório. 94 | 7. Instale os requisitos: "pip install -r requirements.txt". 95 | 8. Execute o comando scons. O complemento criado, se não houver erros, é colocado no diretório raiz deste repositório. 96 | 97 | Depois de fechar o console, o ambiente virtual é desativado. 98 | 99 | ### Empacotando as bibliotecas como um complemento independente. 100 | Não é recomendado incluir as bibliotecas com este driver. Isso ocorre porque se o usuário atualizar o driver a partir do[repositório oficial](https://github.com/davidacm/NVDA-IBMTTS-Driver), usando o instalador de complementos do NVDA, a versão antiga será excluída incluindo as bibliotecas. 101 | Uma solução para isso é instalar as bibliotecas separadamente. [Siga este link](https://github.com/davidacm/ECILibrariesTemplate) para saber como empacotar as bibliotecas em um complemento separado. 102 | 103 | ### Notas: 104 | 105 | * Se você usar o recurso interno de atualizações manuais ou automáticas, as bibliotecas não serão excluídas, mesmo que estejam dentro do complemento. 106 | * se o sintetizador estiver dentro deste add-on ou do add-on ["eciLibraries"](https://github.com/davidacm/ECILibrariesTemplate), o driver atualizará os caminhos do arquivo ini automaticamente. Assim, você pode usá-lo em versões portáteis do NVDA. 107 | * Usar o botão "Copiar os arquivos do IBMTTS para um add-on" criará um novo complemento no NVDA. Portanto, se você desejar desinstalar o IBMTTS, será necessário desinstalar dois complementos: "Driver IBMTTS" e "eciLibraries". 108 | * As ferramentas scons e gettext neste projeto são compatíveis apenas com python 3. Não funcionam com python 2.7. 109 | * Você pode incluir os arquivos extras do IBMTTS necessários no add-on (somente para uso pessoal). Basta copiá-los para "addon\synthDrivers\ibmtts". Ajuste o nome da biblioteca padrão em "settingsDB.py" se necessário. 110 | * Se o caminho configurado para a biblioteca não for relativo, este driver não atualizará os caminhos do arquivo "eci.ini". O driver assume que, ao usar caminhos absolutos, os caminhos estão corretos no "eci.ini" e evitará fazer atualizações. Tenha isso em mente ao definir o caminho de suas bibliotecas. Se não estiverem corretos no arquivo "eci.ini", isto poderá causar erros que deixarão o NVDA mudo quando você usar este sintetizador. 111 | 112 | ## Reportar problemas: 113 | 114 | Se você encontrar um problema de segurança com algumas das bibliotecas compatíveis com este driver, não abra um problema do github nem o comente em fóruns antes que o problema seja resolvido. Por favor, comunique a questão [neste formulário.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 115 | 116 | Se o problema não travar o driver ou o leitor de tela, abra um [problema do github aqui.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 117 | 118 | ##Referências. 119 | Este driver é baseado no IBM ViaVoice SDK (IBMTTS). a documentação está disponível [neste link](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 120 | 121 | Também disponível no [site da Universidade de Columbia](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 122 | 123 | há uma cópia [neste repositório](https://github.com/david-acm/NVDA-IBMTTS-Driver) 124 | 125 | [pyibmtts: projeto do IBM ViaVoice SDK em Python, desenvolvido por Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 126 | 127 | Veja uma cópia dos arquivos aqui: 128 | 129 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 130 | ou [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) -------------------------------------------------------------------------------- /addon/doc/pt_pt/README.md: -------------------------------------------------------------------------------- 1 | # Controlador do IBMTTS, extra para o NVDA # 2 | 3 | Este extra implementa a compatibilidade do NVDA com o sintetizador IBMTTS. 4 | Não podemos distribuir as bibliotecas do IBMTTS. Este é apenas o controlador. 5 | Se pretender contribuir para melhorar este controlador, sinta-se livre para enviar-nos as suas pull requests através do GitHub! 6 | 7 | Embora este controlador seja compatível com as bibliotecas do ETI Eloquence (uma vez que este tem a mesma API que o IBMTTS), não se recomenda a utilização do Eloquence com este controlador devido a questões de licenciamento. Antes de utilizar quaisquer bibliotecas de síntese com este controlador, recomenda-se que obtenha primeiro os direitos de utilização da licença. 8 | 9 | Este controlador foi desenvolvido com a documentação disponível para o IBMTTS, disponível publicamente na web. Ver a secção de referências para mais detalhes. 10 | 11 | ## Descarregar. 12 | A última versão está disponível para [transferência neste link](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 13 | 14 | ## O que é o sintetizador IBMTTS? 15 | 16 | O ViaVoice TTS é um motor de conversão de texto em fala desenvolvido pela IBM, que sintetiza a representação textual da linguagem humana em fala. 17 | 18 | ## Características e configurações: 19 | 20 | * Suporte para as configurações de voz, variante, velocidade, entoação, inflecção e volume. 21 | * Suporte de parâmetros extras, tais como tamanho da cabeça, rouquidão, respiração. Crie a sua própria voz! 22 | * Activar ou desactivar as etiquetas de alterações de voz. Desactivar para protecção contra códigos maliciosos, activar para fazer muitas coisas divertidas com o sintetizador. Requer um ajuste adicional com o NVDA para que funcione correctamente. 23 | * Aumento de Velocidade. Caso o sintetizador não fale suficientemente rápido, active o aumento de velocidade para obter a velocidade máxima! 24 | * Alteração automática do idioma. Permite que o sintetizador leia o texto no idioma correcto quando marcado. 25 | * Filtragem ampliada. O controlador inclui um extenso conjunto de filtros para lidar com crashes e outros comportamentos estranhos do sintetizador. 26 | * Suporte a dicionários. O controlador suporta a integração de palavras especiais, dicionários raízes e dicionários de abreviação do utilizador para cada idioma. Conjuntos de dicionários prontos podem ser obtidos [a partir do repositório de dicionários da comunidade](https://github.com/thunderdrop/IBMTTSDictionaries) ou [desde o repositório alternativo do mohamed00 (com dicionários do sintetizador IBM)](https://github.com/mohamed00/AltIBMTTSDictionaries) 27 | 28 | ### Configurações adicionais: 29 | 30 | * Habilitar Expansão de Abreviaturas: Activa a expansão das abreviaturas. Note que desactivar esta opção também desactivará a expansão de quaisquer abreviaturas especificadas nos dicionários de abreviaturas fornecidos pelo utilizador. 31 | * Activar a previsão de frases: Se esta opção estiver activada, o sintetizador tentará prever onde se produzirão as pausas nas frases tendo como base a sua própria estrutura, por exemplo, utilizando palavras como "e" e "o" como limites da frase. Se estiver desactivada, só fará uma pausa quando encontrar uma vírgula ou outros sinais de pontuação. 32 | * Pausas: Esta é uma caixa combinada com três opções. 33 | * Não encurtar: as pausas não serão de todo encurtadas, e as pausas originais do IBMTTS serão utilizadas em todos os casos. 34 | * Encurtar apenas no fim do texto: as pausas dos símbolos de pontuação, como pontos e vírgulas, não serão encurtadas, mas serão encurtadas quando o texto terminar, por exemplo, quando premir NVDA+t duas vezes rapidamente para soletrar a barra de título de uma aplicação carácter a carácter. 35 | * Encurtar todas as pausas: todas as pausas, incluindo as pausas de pontuação e as pausas que ocorrem no final do texto, serão encurtadas. 36 | * Sempre enviar as definições de voz actuais: há um erro no sintetizador que ocasionalmente fará com que as definições de velocidade e entoação sejam brevemente repostas aos seus valores por defeito. A causa desta questão é actualmente desconhecida, no entanto, uma solução alternativa consiste em enviar continuamente as definições actuais de velocidade e entoação. É suposto que esta opção fique geralmente activada. No entanto, deve ser desactivada durante a leitura de textos contendo etiquetas de alteração de voz. 37 | * Frequência de amostragem: Alterar a qualidade sonora do sintetizador. Isto é mais útil para o IBM ViaVoice, no qual pode-se ajustar a frequência de amostragem para 8 kHz para obter acesso a um novo conjunto de vozes. 38 | 39 | ### Categoria de configurações do IBMTTS. 40 | 41 | Este extra possui a sua própria categoria de opções dentro das configurações do NVDA, para gerir algumas funcionalidades internas não relacionadas com a síntese de voz. 42 | 43 | * Verificar automaticamente se há actualizações para o IBMTTS: se esta opção estiver marcada, o extra irá verificar diariamente a existência de novas versões. 44 | * Verificar actualização: Verifica manualmente se há novas actualizações deste extra. 45 | * Localização da Pasta do IBMTTS: o caminho para as bibliotecas do IBMTTS, que tanto pode ser absoluto como relativo. 46 | * Nome da biblioteca do IBMTTS: o nome da biblioteca (dll). Não deve incluir caminhos, apenas o nome com a extensão, normalmente ".dll". 47 | * Localizar a Biblioteca do IBMTTS... Abre um diálogo de navegação de ficheiros para procurar a biblioteca do IBMTTS no sistema. Será guardado como um caminho absoluto. 48 | * Copiar os ficheiros do IBMTTS para um extra (poderá não funcionar para algumas distribuições do IBMTTS): se definiu o caminho da biblioteca do IBMTTS, esta opção irá copiar todos os ficheiros da pasta para um novo extra chamado "eciLibraries" e actualizar o caminho actual para um caminho relativo. É útil em versões portáteis do NVDA. Isto funciona apenas para as bibliotecas que utilizem o ficheiro "eci.ini" para as informações dos idiomas e vozes. Se a biblioteca utilizar o registo do Windows, esta opção não funcionará. 49 | 50 | Nota: A funcionalidade de actualização automática ou manual não apagará os ficheiros internos do extra. Se mantiver as suas bibliotecas aí, pode utilizar isto com segurança. As suas bibliotecas estarão seguras. 51 | 52 | ## requisitos. 53 | ### NVDA. 54 | Necessita do NVDA 2019.3 ou posterior. 55 | 56 | ### As bibliotecas do sintetizador IBMTTS. 57 | Este é apenas o controlador, terá de procurar as bibliotecas noutro lugar. 58 | Este controlador suporta as bibliotecas ligeiramente mais recentes que adicionam suporte a idiomas do Leste Asiático e tem correcções específicas para a codificação correcta do texto. No entanto, é suposto que as bibliotecas mais antigas que não têm esta característica também funcionem. 59 | A partir da versão 21.03A1, este controlador também funciona com as bibliotecas ainda mais recentes da IBM, em vez de apenas com as do SpeechWorks. É incluído um conjunto de correcções independentes para essas bibliotecas e são tidos em conta os idiomas adicionais e outras diferenças. As vozes concatenativas são suportadas e podem ser acedidas definindo a frequência de amostragem para 8 kHz depois de instalar as vozes. Para obter melhores resultados, utilize a versão de junho de 2005 do ibmeci.dll (versão 7.0.0.0), uma vez que as versões mais antigas podem ser instáveis quando se recebe texto rapidamente, por exemplo, ao percorrer rapidamente os itens de uma lista. Tenha também em atenção que, se estiver a utilizar as bibliotecas do IBM ViaVoice em cantonês de Hong Kong ou chinês, poderá querer desactivar a opção "Utilizar funcionalidade de soletrar se suportada", para evitar que alguns caracteres nestes idiomas sejam soletrados utilizando o pinyin para o qual são internamente convertidos. 60 | 61 | ## Instalação. 62 | Apenas terá de instalá-lo tal como o faz com quaisquer outros extras do NVDA. Em seguida deverá ir ao diálogo de configurações do NVDA, e, na categoria "IBMTTS", apontar a localização dos ficheiros do IBMTTS. 63 | Nesta categoria, poderá também copiar os ficheiros externos do IBMTTS para dentro do extra. 64 | 65 | ## Contribuir com a tradução. 66 | 67 | Para facilitar o trabalho aos tradutores, deixei um [modelo de tradução no ramo principal.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 68 | Para a documentação, criei um ficheiro chamado ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 69 | Pode utilizar esse ficheiro para ver o que foi alterado na documentação e actualizar a documentação para o seu idioma. 70 | Se pretender traduzir o extra para outro idioma e não quiser criar uma conta no GitHub e instalar o Python e outras ferramentas necessárias para a tradução, execute os seguintes paços: 71 | 72 | 1. Utilize [este modelo](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot), como base para o idioma de destino. 73 | 2. Transfira o ["poedit"](https://poedit.net/), este software o ajudará a gerir as cadeias de tradução. 74 | 3. Se também quiser traduzir a documentação, pode ver as novas alterações da documentação 75 | [neste link.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) Pode ver a [documentação completa em inglês aqui.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 76 | 4. Quando tiver terminado a tradução, pode enviar-ma para: "dhf360@gmail.com". 77 | 78 | Não necessita compilar os ficheiros de origem. Fá-lo-ei quando publicar uma nova versão do extra. Mencionarei o seu nome no Commit respectivo. Se não quiser ser mencionado, avise-me a quando do envio do correio electrónico. 79 | 80 | Nota: certifique-se de que utilizou o modelo mais recente das cadeias de tradução. 81 | 82 | Este é um método alternativo. Se quiser, pode sempre seguir o caminho habitual. Faça um fork deste repositório, actualize a tradução para o seu idioma e envie-me um PR. Mas esta forma apenas lhe trará mais complexidade. 83 | 84 | ## Empacotamento do extra para distribuição. 85 | 86 | Nota de tradução: Estas instruções destinam-se aos criadores de extras e não têm qualquer significado para a maioria dos utilizadores. 87 | 88 | 1. Instale o python (actualmente é utilizado o python 3.7, mas pode utilizar uma versão mais recente). 89 | 2. Instale o Gettext (pode descarregar uma distribuição para o Windows [neste link)](https://mlocati.github.io/articles/gettext-iconv-windows.html) Se estiver a utilizar o Windows de 64 bits, recomendo [esta versão](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 90 | 3. Passo opcional (mas recomendado) crie um ambiente virtual python para ser utilizado para gerir os extras do NVDA. Na consola, utilize "python -m venv PAT_TO_FOLDER". Em que PAT_TO_FOLDER é o caminho pretendido para o ambiente virtual. 91 | 4. Se tiver efectuado o passo 3, vá para PAT_TO_FOLDER e, dentro da pasta dos scripts, execute "activate". O nome do ambiente deve ser mostrado no prompt da consola. 92 | 5. Clone este repositório no caminho desejado: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 93 | 6. Na mesma instância da consola, vá para a pasta deste repositório. 94 | 7. Instale os requisitos: "pip install -r requirements.txt". 95 | 8. Execute o comando scons. O extra criado, se não houver erros, será posto na pasta raíz deste repositório. 96 | 97 | Uma vez fechada a consola, o ambiente virtual é desactivado. 98 | 99 | ### Empacotamento das bibliotecas como um extra independente. 100 | Não é recomendado incluir as bibliotecas com este controlador. Isto porque se o utilizador actualizar o controlador a partir do [repositório oficial](https://github.com/davidacm/NVDA-IBMTTS-Driver), utilizando o instalador de extras do NVDA, a versão antiga será eliminada, incluindo as bibliotecas. 101 | Uma solução para isso é instalar as bibliotecas separadamente. [Siga este link](https://github.com/davidacm/ECILibrariesTemplate) para saber como empacotar as bibliotecas num extra separado. 102 | 103 | ### Notas: 104 | 105 | * Se utilizar a funcionalidade de actualização interna (manual ou automática), as bibliotecas não serão eliminadas, mesmo que estejam dentro do extra. 106 | * Se o sintetizador estiver dentro deste extra ou do ["eciLibraries"](https://github.com/davidacm/ECILibrariesTemplate), o controlador actualizará automaticamente os caminhos do ficheiro "eci.ini". Assim, pode utilizá-lo em versões portáteis do NVDA. 107 | * Ao utilizar o botão "Copiar os ficheiros do IBMTTS para um extra", criará um novo extra no NVDA. Portanto, se pretender desinstalar o IBMTTS, deverá desinstalar dois extras: "Controlador do IBMTTS" e "eciLibraries". 108 | * As ferramentas scons e gettext deste projecto são compatíveis apenas com o python 3. Não funcionam com o python 2.7. 109 | * Pode colocar os ficheiros adicionais do IBMTTS necessários dentro do extra (apenas para uso pessoal). Basta copiá-los para a pasta "addon\synthDrivers\ibmtts". Ajuste o nome da biblioteca predefinida em "settingsDB.py" se necessário. 110 | * se o caminho configurado para a biblioteca não for relativo, este controlador não actualizará os caminhos no ficheiro "eci.ini". O controlador assume que, quando utiliza caminhos absolutos, os caminhos estão correctos em "eci.ini" e evitará fazer quaisquer actualizações. Tenha isto em mente quando definir o caminho das suas bibliotecas. Se não estiverem correctos, poderão ocorrer erros que deixarão o NVDA sem fala quando utilizar este sintetizador. 111 | 112 | ## Reportar problemas: 113 | 114 | Se encontrar um problema de segurança com algumas das bibliotecas compatíveis com este controlador, não abra um problema no github nem o comente nos fóruns antes de o problema estar resolvido. Por favor, comunique o problema através [deste formulário.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 115 | 116 | Se o problema não bloquear o controlador ou o leitor de ecrã, poderá então abrir um [problema do Github aqui.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 117 | 118 | ## Referências. 119 | Este controlador é baseado no SDK do IBM ViaVoice (IBMTTS). A documentação está disponível [neste link](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 120 | 121 | Também disponível no [website da Universidade de Columbia](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 122 | 123 | ou pode encontrar uma cópia [neste repositório](https://github.com/david-acm/NVDA-IBMTTS-Driver) 124 | 125 | [pyibmtts: Projecto do IBM ViaVoice SDK em Python, desenvolvido por Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 126 | 127 | Veja aqui uma cópia dos ficheiros: 128 | 129 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 130 | 131 | ou [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 132 | -------------------------------------------------------------------------------- /addon/doc/tr/readme.md: -------------------------------------------------------------------------------- 1 | # IBMTTS sürücüsü, NVDA için Eklenti # 2 | 3 | Bu eklenti, IBMTTS sentezleyici ile NVDA uyumluluğunu sağlar. 4 | IBMTTS kitaplıklarını dağıtamıyoruz. Yani bu sadece sürücü. 5 | Bu sürücüyü geliştirmek istiyorsanız, çekme isteklerinizi göndermekten çekinmeyin! 6 | 7 | Bu sürücü Eloquence kitaplıklarıyla uyumlu olsa da (Eloquence, IBMTTS ile aynı api'ye sahip olduğundan) lisans sorunları nedeniyle Eloquence'ın bu sürücüyle kullanılması önerilmez. Bu sürücü ile herhangi bir sentezleyici kitaplığını kullanmadan önce lisans kullanım haklarını almanız önerilir. 8 | 9 | Bu sürücü, IBMTTS için web'de halka açık olan belgelerle geliştirilmiştir. Daha fazla ayrıntı için referanslar bölümüne bakın. 10 | 11 | ## İndirme. 12 | En son sürüm [bu bağlantıdan indirilebilir](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 13 | 14 | ## IBMTTS sentezleyici nedir? 15 | 16 | ViaVoice TTS, IBM tarafından geliştirilen ve insan dilinin metinsel temsilini konuşmaya dönüştüren bir metinden konuşmaya motorudur. 17 | 18 | ## Özellikler ve ayarlar. 19 | 20 | * Ses, varyant, hız, perde, çekim ve ses ayarı desteği. 21 | * Ekstra kafa boyutu, Pürüzlülük, Nefes alma parametreleri ayarları desteği. Kendi sesini yarat! 22 | * Ters alıntı ses etiketlerini etkinleştirin veya devre dışı bırakın. Kendinizi şakacılardan gelen kötü amaçlı kodlardan korumak için devre dışı bırakın, sentezleyici ile birçok eğlenceli şey yapmasını etkinleştirin. Düzgün çalışması için NVDA ile biraz daha ince ayar yapılması gerekiyor. 23 | * Hız artışı. Sentezleyici sizinle çok hızlı konuşmuyorsa etkinleştirin ve maksimum ses hızını elde edin! 24 | * otomatik dil değiştirme. İşaretlendiğinde sentezleyicinin metni size doğru dilde okumasına izin verir. 25 | * kapsamlı filtreleme Bu sürücü, sentezleyicinin çökmelerini ve diğer garip davranışlarını düzeltmek için kapsamlı bir filtre seti içerir. 26 | * sözlük desteği. Bu sürücü, her dil için özel kelimelerin, köklerin ve kısaltma kullanıcı sözlüklerinin entegrasyonunu destekler. Hazır sözlük setleri, [topluluk sözlük deposundan](https://github.com/thunderdrop/IBMTTSDictionaries) veya [mohamed00'in alternatif deposundan (IBM synth sözlükleriyle)](https://github.com/mohamed00) elde edilebilir. 27 | 28 | ### Ek ayarlar: 29 | 30 | * Kısaltma genişletmeyi etkinleştir: kısaltmaların genişletilmesini değiştirir. Bu seçeneği devre dışı bırakmanın, kullanıcı tarafından sağlanan kısaltma sözlüklerinde belirtilen kısaltmaların genişletilmesini de devre dışı bırakacağını unutmayın. 31 | * Tümce tahminini etkinleştir: Bu seçenek etkinleştirilirse, sentezleyici, örneğin "ve" veya "the" gibi sözcükleri tümce sınırları olarak kullanarak yapılarına göre cümlelerde duraklamaların nerede olacağını tahmin etmeye çalışır. Bu seçenek kapalıysa, yalnızca virgül veya benzeri noktalama işaretleriyle karşılaşıldığında duraklar. 32 | * Duraklamaları kısaltın: diğer ekran okuyucularda görülenler gibi daha kısa noktalama duraklamaları için bu seçeneği etkinleştirin. 33 | * Her zaman geçerli konuşma ayarlarını gönder: Sentezleyicide, konuşma ve perde ayarlarının zaman zaman kısa süreliğine varsayılan değerlerine sıfırlanmasına neden olan bir hata vardır. Bu sorunun nedeni şu anda bilinmiyor, ancak geçici bir çözüm, geçerli konuşma hızını ve perde ayarlarını sürekli olarak göndermektir. Bu seçenek genellikle etkinleştirilmelidir. Ancak, ters alıntı ses etiketleri içeren metin okunurken devre dışı bırakılmalıdır. 34 | * Örnekleme hızı: sentezleyicinin ses kalitesini değiştirir. Örnek hızının 8 kHz olarak ayarlanmasının yeni bir ses grubuna erişim sağladığı IBMTTS için en kullanışlıdır. 35 | 36 | ### IBMTTS kategori ayarları. 37 | 38 | Bu eklentinin, konuşma senteziyle ilgili olmayan bazı dahili işlevleri yönetmek için NVDA Terciler iletişim kutusu içinde kendi ayar kategorisi vardır. 39 | 40 | * IBMTTS için güncellemeleri otomatik olarak denetle: Bu seçenek işaretlenirse, eklenti mevcut yeni sürümleri günlük olarak kontrol eder. 41 | * Güncellemeleri Denetle düğmesi: Güncellemeleri el ile denetleme imkanı verir. 42 | * IBMTTS klasör adresi: IBMTTS kitaplığını yükleme yolu. Mutlak veya göreceli olabilir. 43 | * IBMTTS kitaplık adı (dll): Kitaplığın adı (dll). Yolları dahil etmeyin, yalnızca uzantılı ad, genellikle ".dll". 44 | * BirIBMTTS kitaplığı Bul... Sistemde IBMTTS kitaplığını aramak için bir dosya gözat iletişim kutusu açar. Mutlak bir yol olarak kaydedilecektir. 45 | * IBMTTS dosyalarını bir eklentide kopyalayın (bazı IBMTTS dağıtımları için çalışmayabilir): IBMTTS için kitaplık yolu ayarlanmışsa, tüm klasör dosyalarını eciLibraries adlı yeni bir eklentiye kopyalar ve mevcut yolu bir göreceli yol. NVDA'nın taşınabilir sürümlerinde çok kullanışlıdır. Yalnızca sesli dil bilgileri için "eci.ini" dosyalarını kullanan kitaplıklar için çalışır. Kitaplık Windows kayıt defterini kullanıyorsa bu seçenek çalışmaz. 46 | 47 | Not: Otomatik veya manuel güncelleme işlevi, eklentinin dahili dosyalarını kaldırmaz. O yerdeki kitaplıklarınızı kullanırsanız, bu işlevi güvenle kullanabilirsiniz. Kitaplıklarınız güvende olacak. 48 | 49 | ## Gereksinimler. 50 | ### NVDA. 51 | NVDA 2019.3 veya sonrasına ihtiyacınız var. 52 | 53 | ### IBMTTS sentezleyici kitaplıkları. 54 | Bu sadece sürücü, kütüphaneleri başka bir yerden almalısınız. 55 | Bu sürücü, Doğu Asya dili desteği ekleyen biraz daha yeni kitaplıkları destekler ve metnin uygun şekilde kodlanması için özel düzeltmelere sahiptir. Yine de, bunun olmadığı eski kütüphaneler çalışmalıdır. 56 | 21.03A1 sürümünden itibaren bu sürücü, yalnızca SpeechWorks kitaplıkları yerine IBM'in daha yeni kitaplıklarıyla da çalışır. Bu kitaplıklar için bir dizi bağımsız düzeltme dahil edilmiştir ve ek diller ve diğer farklılıklar hesaba katılmıştır. Art arda gelen sesler desteklenir ve sesler yüklendikten sonra örnekleme hızı 8 kHz olarak ayarlanarak erişilebilir. En iyi sonuçları elde etmek için, ibmeci.dll'nin 7.0.0.0 sürümünün Haziran 2005 derlemesini kullanın, çünkü eski sürümler hızlı bir şekilde metin alırken, örneğin bir listedeki öğeler arasında hızla gezinirken, kararsız olabilir. 57 | 58 | ## Kurulum. 59 | Sadece bir NVDA eklentisi olarak kurun. Daha sonra NVDA Konuşma ayarlarını açın ve IBMTTS klasöründeki dosyaları IBMTTS kategorisinde ayarlayın. 60 | Ayrıca bu kategoride, harici IBMTTS dosyalarını yerel olarak kullanmak için bir Eklentiye kopyalayabilirsiniz. 61 | 62 | ## Çeviriye katkıda bulunmak. 63 | 64 | İşinizi kolaylaştırmak için bir not bıraktım. 65 | [ana şubedeki çeviri şablonu.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 66 | Bu eklentiyi başka bir dile çevirmek istiyor ve github hesabı açmak ya da çeviri için gerekli python ve diğer araçları yüklemek istemiyorsanız aşağıdaki adımları uygulayın: 67 | 68 | 1. Aşağıdaki bağlantıdan 69 | [bu şablonu](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot), 70 | hedef dil için bir temel olarak kullanın. 71 | 2. Bağlantıdan 72 | ["poedit" programını indirin](https://poedit.net/), 73 | bu yazılım, çeviri dizilerini yönetmenize yardımcı olacaktır. 74 | 3. Belgeleri de çevirmek istiyorsanız, 75 | [İngilizce belgeler bu bağlantıda.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/README.md) 76 | 4. Çeviriyi bitirdikten sonra bana adresine gönderebilirsiniz. 77 | 78 | Kaynak dosyaları derlemeniz gerekmez. Yeni bir eklenti sürümü yayınlarken yapacağım. Adınızı ilgili taahhütte belirteceğim. Adınızın açıklanmasını istemiyorsanız, bana e-posta ile belirtebilirsiniz. 79 | 80 | Not: En son çeviri dizeleri şablonunu kullandığınızdan emin olun. 81 | 82 | Bu alternatif bir yöntemdir. Eğer isterseniz, her zamanki yoldan gidebilirsiniz. Bu depoyu çatallayın, çeviriyi kendi dilinize göre güncelleyin ve bana bir PR gönderin. Ancak bu yol, sizin için daha fazla karmaşıklık katacaktır. 83 | 84 | ## Dağıtım için paketleme. 85 | 86 | 1. Python'u yükleyin, şu anda python 3.7 kullanılıyor, ancak daha yeni bir sürüm kullanabilirsiniz. 87 | 2. Gettext'i yükleyin, [bu bağlantıdan Windows için bir dağıtım indirebilirsiniz.](https://mlocati.github.io/articles/gettext-iconv-windows.html) Windows 64 bit kullanıyorsanız, [bu sürümü tavsiye ederim.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 88 | 3. (isteğe bağlı ancak önerilen adım) NVDA eklentilerini yönetmek için kullanılacak bir python sanal ortamı oluşturun. Konsolda "python -m venv PAT_TO_FOLDER" kullanın. PAT_TO_FOLDER, sanal ortam için istediğiniz yolun yoludur. 89 | 4. 2. adımı yaptıysanız, PAT_TO_FOLDER'a gidin ve betikler klasörü içinde "etkinleştir" komutunu çalıştırın. Ortamın adı konsol prontunda gösterilmelidir. 90 | 5. Bu repoyu istediğiniz yola kopyalayın: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 91 | 6. Aynı konsol örneğinde, bu deponun klasörüne gidin. 92 | 7. Gereksinimleri yükleyin: "pip install -r requirements.txt". 93 | 8. scons komutunu çalıştırın. Oluşturulan eklenti, herhangi bir hata yoksa, bu deponun kök dizinine yerleştirilir. 94 | 95 | Konsolu kapattığınızda sanal ortam devre dışı kalır. 96 | 97 | ### Kitaplıkları bağımsız bir eklenti olarak paketleyin. 98 | 99 | Kitaplıkların bu sürücüye dahil edilmesi önerilmez. Bunun nedeni, kullanıcının sürücüyü sürücüden güncellemesidir. 100 | [resmi repo](https://github.com/davidacm/NVDA-IBMTTS-Driver), 101 | NVDA eklenti yükleyicisi kullanılarak, kitaplıklar da dahil olmak üzere eski sürüm silinir. Bunun için bir çözüm, kitaplıkları ayrı bir eklentiye yüklemektir. 102 | [Bu bağlantıdaki yönergeleri takip ederek](https://github.com/davidacm/ECILibrariesTemplate) 103 | kitaplıkları ayrı bir eklentide nasıl paketleyeceğinizi öğrenebilirsiniz. 104 | 105 | ### notlar: 106 | 107 | * Dahili güncelleme özelliğini (el ile veya otomatik) kullanırsanız, kitaplıklar eklenti içinde olsalar bile silinmez. 108 | * sentezleyici eklentinin içindeyse veya 109 | ["eciLibraries"](https://github.com/davidacm/ECILibrariesTemplate) 110 | eklenti, sürücü ini kitaplığı yollarını otomatik olarak güncelleyecektir. Böylece taşınabilir NVDA sürümlerinde kullanabilirsiniz. 111 | * "IBMTTS dosyalarını bir eklentiye kopyala" düğmesini kullandığınızda, yeni bir eklenti oluşturacaktır. Dolayısıyla, IBMTTS'yi kaldırmak istiyorsanız, iki eklentiyi kaldırmanız gerekir: "IBMTTS sürücüsü" ve "Eci kitaplıkları". 112 | * bu projedeki scons ve gettext araçları yalnızca python 3 ile uyumludur. piton 2.7 ile çalışmaz. 113 | * Ek IBMTTS gerekli dosyalarını eklentiye koyabilirsiniz (yalnızca kişisel kullanım için). Bunları "addon\synthDrivers\ibmtts" klasörüne kopyalamanız yeterlidir. Gerekirse "settingsDB.py" içindeki varsayılan kitaplık adını ayarlayın. 114 | 115 | ## Sorun raporlama: 116 | 117 | Bu sürücüyle uyumlu bazı kitaplıklarda bir güvenlik sorunu bulursanız, lütfen Bir github sorunu açın veya sorun çözülmeden önce forumlarda yorum yapın. Lütfen sorunu [bu formda bildirin.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 118 | 119 | Sorun, sürücüyü veya ekran okuyucuyu çökertmezse, buradan bir [github sorunu açın.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 120 | 121 | ## Referanslar. 122 | Bu sürücü, IBM tts sdk'yi temel alır, belgeler şu adreste bulunur: 123 | [İlgili bağlantı](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 124 | 125 | ayrıca columbia üniversitesinde 126 | [bu bağlantı](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 127 | 128 | Veya [bu repo üzerinden bir yedek kopya alabilirsiniz.](https://github.com/david-acm/NVDA-IBMTTS-Driver) 129 | 130 | [pyibmtts: Peter Parente tarafından geliştirilen IBM TTS için Python sarıcı](https://sourceforge.net/projects/ibmtts-sdk/) 131 | 132 | Buradaki yedekleme dosyalarına bakın: 133 | 134 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 135 | veya [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 136 | -------------------------------------------------------------------------------- /addon/doc/zh_CN/README.md: -------------------------------------------------------------------------------- 1 | # NVDA插件, IBMTTS 驱动程序 2 | 3 | 此插件实现了 NVDA 与 IBMTTS 合成器的兼容。 4 | 5 | 因为我们无法发布 IBMTTS 库,这只是一个驱动程序。 6 | 7 | 如果您想改进此驱动程序,请随时提交 Pull request 。 8 | 9 | 尽管此驱动兼容 Eloquence (因为 Eloquence 与 IBMTTS 具有相同的 API),但由于许可问题,不建议将 Eloquence 与此驱动一起使用。在使用此驱动的任何语音库之前,建议先获得许可使用权。 10 | 11 | 该驱动是使用互联网上公开的 IBMTTS 文档开发的,有关更多详细信息,请参阅参考资料部分。 12 | ## 下载 13 | 最新版本可在[此链接下载](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 14 | 15 | ## 什么是 IBMTTS 合成器? 16 | 17 | ViaVoice TTS 是 IBM 开发的文本转语音引擎,它可以将人类的语言文本合成为语音。 18 | 19 | ## 特性: 20 | 21 | * 支持语音,变声,速度,声调和音量设置。 22 | * 另外还支持头部尺寸,粗糙度,呼吸参数设置。你可以创建属于你自己的声音! 23 | * 能够启用或禁用反引号语音标签。禁用该选项可以保护自己免受那些恶意语音代码的干扰,启用该选项,可以使 NVDA 合成器做一些有趣的事情。 24 | * 语速加倍。如果您认为合成器的语速不够快,那么启用该选项可以大幅提高语音速度。 25 | * 过滤。该驱动程序包括一套完整的过滤器,用于修复合成器的崩溃和其他奇怪行为。 26 | * 自动语言切换。让合成器以正确的语言朗读相应语种的文本。 27 | * 词典支持。此驱动程序支持集成各种语言的特殊词、词根和缩写用户词典。现成的词典可以从[社区词典存储库](https://github.com/thunderdrop/IBMTTSDictionaries) 或 [mohamed00 的替代存储库(包含 IBM 合成器词典)](https://github.com/mohamed00/AltIBMTTSDictionaries)中获取。 28 | 29 | ### 额外设置: 30 | 31 | * 启用缩写扩展:开关缩写扩展。请注意,禁用此选项也会禁用用户提供的缩写词典中指定的任何缩写的扩展。 32 | * 缩短停顿时间:启用此选项可缩短标点符号之间的停顿时间,就像在其他屏幕阅读器中看到的那样。 33 | * 启用短语预测:如果启用此选项,合成器将尝试根据句子结构预测句子中的停顿位置,例如,使用“and”或“the”等词作为短语边界。如果关闭此选项,则只会在遇到逗号或其他同类标点符号时暂停。 34 | * 始终发送当前语音设置:该合成器中有一个错误,偶尔会导致语音和音调设置短暂地被重置为默认值。此问题的原因目前未知,但解决方法是持续发送当前语速和音调设置。通常应启用此选项。但是,如果阅读包含反引号语音标签的文本,则应禁用该选项。 35 | * 采样率:改变合成器的音质。对 IBMTTS 最有用,将采样率设置为 8 kHz 可以使用一组新语音。 36 | 37 | ## 要求 38 | 39 | ### NVDA 40 | 您需要NVDA 2019.3 或更高版本。 41 | 42 | ## IBMTTS 语音库 43 | 44 | 这只是驱动程序,您必须从其他地方获取语音库。 45 | 46 | 此驱动程序支持添加了东亚语言并针对文本编码进行了特定修复的较新的库。不过,旧的库应该也可以兼容。 47 | 48 | 从 21.03A1 版起,该驱动还支持新版的 IBM 二进制文件,而不仅仅是 SpeechWorks 二进制文件。另外还有针对该驱动程序的一组独立修复程序,考虑了其他语言和差异。支持额外的混合语音,安装语音后可以通过将采样率设置为 8 kHz 来使用。为获得最佳效果,请使用 ibmeci.dll 版本 7.0.0.0 的 2005 年 6 月版本,因为旧版本在快速接收文本时可能不稳定,例如,快速浏览列表项目。 49 | 50 | ## 安装 51 | 只需将其安装为NVDA插件即可。然后打开NVDA设置面板,并在IBMTTS类别中设置IBMTTS目录。 52 | 此外,您还可以将外部IBMTTS文件复制到插件中。 53 | 54 | ## 翻译贡献 55 | 56 | *略* 57 | 58 | ## 打包 59 | 1.安装python,目前使用的是python 3.7,但是你可以使用更新的版本。 60 | 2. 安装 gettext,你可以在[这个链接](https://mlocati.github.io/articles/gettext-iconv-windows.html) 下载一个 windows 发行版。如果你使用 windows 64 位,我推荐[此版本](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe)。 61 | 3. (可选但推荐的步骤)创建一个用于管理 NVDA 附加组件的 python 虚拟环境。在控制台中,使用“python -m venv PAT TO FOLDER”。 PAT TO FOLDER 是虚拟环境所需路径的路径。 62 | 4. 如果您执行了第 3 步,请转到 PAT TO FOLDER 和内部脚本文件夹,执行“activate”。环境名称应显示在控制台提示中。 63 | 5. 在您想要的路径中克隆此存储库:“git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git”。 64 | 6. 在同一个控制台实例中,转到此 repo 的文件夹。 65 | 7. 安装所需: “pip install -r requirements.txt”。 66 | 8. 运行 scons 命令。如果没有错误,编译的插件将放置在此 repo 的根目录中。 67 | 68 | 关闭控制台后,虚拟环境会被停用。 69 | 70 | ### 将语音库打包为独立的插件 71 | 72 | 我们不建议将语音库包含在此驱动中。这是因为如果用户从[官方存储库](https://github.com/davidacm/NVDA-IBMTTS-Driver)获取并安装新版,旧版本会被删除,包括语音库。一种解决方案是将语音库安装在单独的插件中。 73 | [点击此链接](https://github.com/davidacm/ECILibrariesTemplate)了解如何将语音库打包到单独的插件中。 74 | 75 | ## 注意 76 | 77 | * 如果本驱动使用了 [“eciLibraries”](https://github.com/davidacm/ECILibrariesTemplate)驱动会自动更新 ini 库路径。所以你可以在便携版 NVDA 中使用该驱动。 78 | * 当您使用“将所依赖的语音文件复制到驱动目录”按钮时,会创建一个新的插件。因此,如果您想卸载 IBMTTS,您就需要卸载两个插件:“IBMTTS 驱动程序”和“Eci 库”。 79 | * 此项目的scons和gettext工具只与python 3兼容。不适用于python 2.7。 80 | * 您可以将另外的 IBMTTS所需文件放在插件中(仅供个人使用)。只需将它们复制到“addon\synthDrivers\ibmtts”文件夹中即可。如有必要,还可调整“settingsDB.py”中的默认库名称。 81 | 82 | ## 报告问题: 83 | 84 | 如果您发现某些与此驱动兼容的库存在安全问题,请不要在问题解决之前打开 github Issue 或在论坛上发贴。请通过[此表单](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 提交。 85 | 86 | 如果问题不会导致驱动或屏幕阅读器崩溃,请在此处打开 [github Issue](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 87 | 88 | ## 参考 89 | 90 | 此驱动程序基于 IBM tts sdk,文档位于:[此处](http://www.wizzardsoftware.com/docs/tts.pdf) 91 | 92 | 或者从[哥伦比亚大学](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 获取另一个副本。 93 | 还可以从 [这个repo](https://github.com/david-acm/NVDA-IBMTTS-Driver) 上获取备用副本。 94 | 95 | [pyibmtts:由 Peter Parente 开发的用于 IBM TTS 的 Python 封装](https://sourceforge.net/projects/ibmtts-sdk/) 96 | 97 | 在此处查看备份文件: 98 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 99 | 或 [tts.txt](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 100 | -------------------------------------------------------------------------------- /addon/globalPlugins/ibmtts.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | #Copyright (C) 2009 - 2023 David CM, released under the GPL. 3 | # Author: David CM and others. 4 | #globalPlugins/ibmtts.py 5 | 6 | import wx, winUser 7 | from os import path, startfile 8 | from ctypes import windll 9 | 10 | import globalVars, gui, globalPluginHandler, addonHandler 11 | from logHandler import log 12 | from gui.settingsDialogs import SettingsPanel 13 | from synthDrivers._settingsDB import appConfig 14 | from ._ibmttsUtils import UpdateHandler, GithubService, guiCopiFiles, showDonationsDialog 15 | addonHandler.initTranslation() 16 | 17 | ADDON_NAME = "IBMTTS" 18 | # github repo 19 | USER = 'davidacm' 20 | REPO = 'NVDA-IBMTTS-Driver' 21 | updateHandler = UpdateHandler(ADDON_NAME, GithubService(USER, REPO)) 22 | 23 | DONATE_METHODS = ( 24 | { 25 | 'label': _('Using Paypal'), 26 | 'url': 'https://paypal.me/davicm' 27 | }, 28 | { 29 | 'label': _('using Co-fi'), 30 | 'url': 'https://ko-fi.com/davidacm' 31 | }, 32 | { 33 | 'label': _('See more methods on my github Page'), 34 | 'url': 'https://davidacm.github.io/donations/' 35 | } 36 | ) 37 | 38 | 39 | class IBMTTSSettingsPanel(SettingsPanel): 40 | # Translators: This is the label for the IBMTTS settings category in NVDA Settings screen. 41 | title = _("IBMTTS") 42 | 43 | def makeSettings(self, settingsSizer): 44 | sHelper = gui.guiHelper.BoxSizerHelper(self, sizer=settingsSizer) 45 | # Translators: label used to toggle the auto check update. 46 | self._autoCheck = sHelper.addItem(wx.CheckBox( 47 | self, 48 | label=_("&Automatically check for updates for IBMTTS") 49 | )) 50 | # Translators: This is the button to check for new updates of the add-on. 51 | self.updateButton = sHelper.addItem (wx.Button (self, label = _("&Check for update"))) 52 | self.updateButton.Bind(wx.EVT_BUTTON, self._onUpdateClick) 53 | # Translators: This is the label for the IBMTTS folder address. 54 | self._ttsPath = sHelper.addLabeledControl(_("IBMTTS folder address"), wx.TextCtrl) 55 | # Translators: This is the label for the IBMTTS library name. 56 | self._dllName = sHelper.addLabeledControl(_("IBMTTS library name (dll)"), wx.TextCtrl) 57 | # Translators: This is the button to explore and find for an IBMTTS library and files. 58 | self._browseButton = sHelper.addItem (wx.Button (self, label = _("&Browse for IBMTTS library..."))) 59 | self._browseButton.Bind(wx.EVT_BUTTON, self._onBrowseClick) 60 | # Translators: This is the button to copy external IBMTTS files into synth driver Add-on. 61 | self._setLocalButton = sHelper.addItem (wx.Button (self, label = _("&Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions)"))) 62 | self._setLocalButton.Bind(wx.EVT_BUTTON, self._onSetLocalClick) 63 | self.donateButton = sHelper.addItem(wx.Button(self, label=_("&Support IBMTTS add-on"))) 64 | self.donateButton.Bind(wx.EVT_BUTTON, lambda e: showDonationsDialog(self, ADDON_NAME, DONATE_METHODS)) 65 | self._setValues() 66 | 67 | def _setValues(self): 68 | self._autoCheck.SetValue(appConfig.autoUpdate) 69 | self._ttsPath.SetValue(appConfig.TTSPath) 70 | self._dllName.SetValue(appConfig.dllName) 71 | 72 | def _onUpdateClick(self, evt): 73 | updateHandler.checkUpdate(True) 74 | 75 | def _onBrowseClick(self, evt): 76 | # Translators: The message displayed in the dialog that allows you to look for the IBMTTS library. 77 | p= 'c:' 78 | while True: 79 | fd = wx.FileDialog(self, message=_("Select the IBMTTS library (dll)"), 80 | # Translators: the label for the dynamic link library extension (dll) file type 81 | wildcard=(_("dynamic link library (*.{ext})")+"|*.{ext}").format(ext="dll"), 82 | defaultDir=path.dirname(p), style=wx.FD_OPEN) 83 | if not fd.ShowModal() == wx.ID_OK: break 84 | p = fd.GetPath() 85 | try: 86 | windll.LoadLibrary(p).eciVersion 87 | self._ttsPath.SetValue(path.dirname(p)) 88 | self._dllName.SetValue(path.basename(p)) 89 | gui.messageBox( 90 | # Translators: The message displayed when the IBMTTS files folder and library name have been set. 91 | _('The IBMTTS files location has been set. If you want to use it with a portable version of NVDA, please use the "Copy IBMTTS files into driver add-on" button'), 92 | # Translators: The title displayed when the IBMTTS files folder and library name have been set. 93 | _("Success"),wx.OK|wx.ICON_INFORMATION,self 94 | ) 95 | break 96 | except: 97 | log.info("Error loading the IBMTTS library", exc_info=True) 98 | if gui.messageBox( 99 | # Translators: The message displayed in the dialog that inform you the specified library is invalid. 100 | _("The specified dll file seems to be an incorrect IBMTTS library. Would you like to select another library?"), 101 | _("Error loading library"), 102 | style=wx.YES | wx.NO | wx.CENTER | wx.ICON_ERROR 103 | ) == wx.NO: 104 | break 105 | 106 | def _onSetLocalClick(self, evt): 107 | # Translators: A message to ask the user to copy IBMTTS files to Add-on folder. 108 | if gui.messageBox( 109 | _('''Are you sure to copy IBMTTS files to local NVDA installation and register a new add-on called "eciLibraries" to store the libraries? It may not work in some IBMTTS distributions. 110 | Note: after it, if you want to uninstall this add-on, you'll need to uninstall two add-ons in order to delete IBMTTS files completelly from NVDA. This one and "eciLibraries"'''), 111 | # Translators: The title of the Asking dialog displayed when trying to copy IBMTTS files. 112 | _("Copy IBMTTS files"), 113 | wx.YES|wx.NO|wx.ICON_QUESTION, self 114 | ) == wx.YES: 115 | src = self._ttsPath.GetValue() 116 | if src == "ibmtts": 117 | src = r"..\synthDrivers\ibmtts" 118 | if not path.isabs(src): 119 | src = path.abspath(path.join(path.abspath(path.dirname(__file__)), src)) 120 | dest = path.abspath(path.join(path.abspath(path.dirname(__file__)), r"..\..\eciLibraries")) 121 | if src == dest: 122 | # Translators: The message displayed when copying IBMTTS files and the paths are the same. 123 | gui.messageBox( 124 | _("Unable to copy the files because the source and destination paths are the same."), 125 | # Translators: The title displayed when copying IBMTTS files to Add-on was successful. 126 | _("Error"), 127 | wx.OK | wx.ICON_ERROR, 128 | self 129 | ) 130 | return 131 | if guiCopiFiles( 132 | src, 133 | dest, 134 | # Translators: The title of the dialog presented while IBMTTS files are being copied. 135 | _("Copying files"), 136 | # Translators: The message displayed while IBMTTS files are being copied. 137 | _("Please wait while IBMTTS files are copied into add-on.") 138 | ): 139 | self.createLibrariesManifest(dest) 140 | # this parameter is saved even if the user doesn't click accept button. 141 | appConfig.TTSPath = r"..\..\eciLibraries" 142 | self._ttsPath.SetValue(appConfig.TTSPath) 143 | # Translators: The message displayed when copying IBMTTS files to Add-on was successful. 144 | gui.messageBox( 145 | # Translators: The message displayed when copying IBMTTS files to Add-on was successful. 146 | _("Successfully copied IBMTTS files. The local copy will be used after restart NVDA."), 147 | # Translators: The title displayed when copying IBMTTS files to Add-on was successful. 148 | _("Success"), 149 | wx.OK|wx.ICON_INFORMATION, 150 | self 151 | ) 152 | else: 153 | # Translators: The message displayed when errors were found while trying to copy IBMTTS files to Add-on. 154 | gui.messageBox(_("Error copying IBMTTS files"), _("Error"), wx.OK|wx.ICON_ERROR, self) 155 | 156 | def createLibrariesManifest(self, dest): 157 | with open(path.join(dest, "manifest.ini"), "w") as f: 158 | f.write('''name = eciLibraries 159 | summary = IBMTTS libraries 160 | description = """You can put the libraries for IBMTTS driver here.""" 161 | author = NVDA User 162 | version = 0.1 163 | url = None 164 | minimumNVDAVersion = 2012.1.1 165 | lastTestedNVDAVersion = 2030.1.1 166 | updateChannel = None''') 167 | 168 | def onSave(self): 169 | appConfig.autoUpdate = self._autoCheck.GetValue() 170 | updateHandler.isAutoUpdate = self._autoCheck.GetValue() 171 | appConfig.dllName = self._dllName.GetValue() 172 | appConfig.TTSPath = self._ttsPath.GetValue() 173 | updateHandler.updateTimer() 174 | 175 | 176 | class GlobalPlugin(globalPluginHandler.GlobalPlugin): 177 | def __init__(self): 178 | super(GlobalPlugin, self).__init__() 179 | if not globalVars.appArgs.secure: 180 | gui.settingsDialogs.NVDASettingsDialog.categoryClasses.append(IBMTTSSettingsPanel) 181 | updateHandler.isAutoUpdate = appConfig.autoUpdate 182 | updateHandler.updateTimer() 183 | 184 | def terminate(self): 185 | super(GlobalPlugin, self).terminate() 186 | if not globalVars.appArgs.secure: 187 | gui.settingsDialogs.NVDASettingsDialog.categoryClasses.remove(IBMTTSSettingsPanel) 188 | -------------------------------------------------------------------------------- /addon/installTasks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | #Copyright (C) 2009 - 2019 David CM, released under the GPL. 3 | # Author: David CM and others. 4 | 5 | # note: this file doesn't get settings from the base profile to avoid issues when updating from older versions. 6 | 7 | from logHandler import log 8 | 9 | import config, globalVars, gui, os, shutil, sys, wx, addonHandler 10 | 11 | addonDir = os.path.abspath(os.path.join(os.path.dirname(__file__), "globalPlugins")) 12 | sys.path.append(addonDir) 13 | from _ibmttsUtils import showDonationsDialog 14 | sys.path.remove(sys.path[-1]) 15 | 16 | addonHandler.initTranslation() 17 | 18 | 19 | DONATE_METHODS = ( 20 | { 21 | 'label': _('Using Paypal'), 22 | 'url': 'https://paypal.me/davicm' 23 | }, 24 | { 25 | 'label': _('using Co-fi'), 26 | 'url': 'https://ko-fi.com/davidacm' 27 | }, 28 | { 29 | 'label': _('See more methods on my github Page'), 30 | 'url': 'https://davidacm.github.io/donations/' 31 | } 32 | ) 33 | 34 | def buildAddonAbsPath(addonName): 35 | return os.path.abspath(os.path.join(globalVars.appArgs.configPath, "addons", addonName)) 36 | 37 | 38 | def preserveFiles(addonName, folder): 39 | """ 40 | addonName: the unique identifier of the add-on 41 | folder: a path for a folder inside the addonName directory where the files must be preserved. 42 | """ 43 | print(os.path.dirname(__file__)) 44 | absFolderPath = os.path.join(buildAddonAbsPath(addonName), folder) 45 | tempFolder = os.path.join(buildAddonAbsPath(addonName) + addonHandler.ADDON_PENDINGINSTALL_SUFFIX, folder) 46 | if os.path.isdir(absFolderPath): 47 | if os.path.isdir(tempFolder): 48 | shutil.rmtree(tempFolder) 49 | os.rename(absFolderPath, tempFolder) 50 | 51 | 52 | try: 53 | TTSPath = config.conf['ibmeci']['TTSPath'] 54 | dllName = config.conf['ibmeci']['dllName'] 55 | except: 56 | TTSPath = "ibmtts" 57 | dllName = "eci.dll" 58 | 59 | 60 | def onInstall(): 61 | gui.mainFrame.prePopup() 62 | wx.CallAfter(showDonationsDialog, gui.mainFrame, "IBMTTS", DONATE_METHODS) 63 | gui.mainFrame.postPopup() 64 | try: 65 | preserveFiles("ibmtts", r"synthDrivers\ibmtts") 66 | except: 67 | log.warning("error backing data", exc_info=True) 68 | 69 | if not os.path.exists(os.path.join(os.path.dirname(__file__), 'synthDrivers', TTSPath, dllName)): 70 | # Translators: the message shown if the driver can't find libraries during installation. 71 | msg = _("""The synthesizer won't be available until you set IBMTTS files. NVDA won't show this synthesizer in teh synthesizers lists because you need to set the IBMTTS files location first. 72 | To do it open the NVDA settings dialog, select IBMTTS category and use the "Browse for IBMTTS library" button to select the IBMTTS files folder.\n""") 73 | gui.messageBox( 74 | msg, 75 | # Translators: title of message box when user is installing NVDA 76 | _("IBMTTS driver for NVDA"), wx.OK 77 | ) 78 | -------------------------------------------------------------------------------- /addon/locale/it/LC_MESSAGES/nvda.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the 'IBMTTS' package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: 'IBMTTS' 'v22.08.2-alpha'\n" 9 | "Report-Msgid-Bugs-To: 'nvda-translations@freelists.org'\n" 10 | "POT-Creation-Date: 2023-01-08 22:55-0600\n" 11 | "PO-Revision-Date: 2023-01-11 18:41+0100\n" 12 | "Last-Translator: \n" 13 | "Language-Team: \n" 14 | "Language: it_IT\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "X-Generator: Poedit 3.2.2\n" 20 | 21 | #: addon\synthDrivers\_ibmeci.py:61 22 | msgid "Castilian Spanish" 23 | msgstr "Spagnolo castigliano" 24 | 25 | #: addon\synthDrivers\_ibmeci.py:62 26 | msgid "Latin American Spanish" 27 | msgstr "Spagnolo latinoamericano" 28 | 29 | #: addon\synthDrivers\_ibmeci.py:63 30 | msgid "Brazilian Portuguese" 31 | msgstr "Portoghese brasiliano" 32 | 33 | #: addon\synthDrivers\_ibmeci.py:64 34 | msgid "French" 35 | msgstr "Francese" 36 | 37 | #: addon\synthDrivers\_ibmeci.py:65 38 | msgid "French Canadian" 39 | msgstr "Francese canadese" 40 | 41 | #: addon\synthDrivers\_ibmeci.py:66 42 | msgid "Finnish" 43 | msgstr "Finlandese" 44 | 45 | #: addon\synthDrivers\_ibmeci.py:67 46 | msgid "Chinese" 47 | msgstr "Cinese" 48 | 49 | #: addon\synthDrivers\_ibmeci.py:68 50 | msgid "Japanese" 51 | msgstr "Giapponese" 52 | 53 | #: addon\synthDrivers\_ibmeci.py:69 54 | msgid "Korean" 55 | msgstr "Coreano" 56 | 57 | #: addon\synthDrivers\_ibmeci.py:70 58 | msgid "German" 59 | msgstr "Tedesco" 60 | 61 | #: addon\synthDrivers\_ibmeci.py:71 62 | msgid "Italian" 63 | msgstr "Italiano" 64 | 65 | #: addon\synthDrivers\_ibmeci.py:72 66 | msgid "American English" 67 | msgstr "Inglese americano" 68 | 69 | #: addon\synthDrivers\_ibmeci.py:73 70 | msgid "British English" 71 | msgstr "Inglese britannico" 72 | 73 | #: addon\synthDrivers\_ibmeci.py:74 74 | msgid "Swedish" 75 | msgstr "Svedese" 76 | 77 | #: addon\synthDrivers\_ibmeci.py:75 78 | msgid "Norwegian" 79 | msgstr "Norvegese" 80 | 81 | #: addon\synthDrivers\_ibmeci.py:76 82 | msgid "Danish" 83 | msgstr "Danese" 84 | 85 | #: addon\synthDrivers\_ibmeci.py:77 86 | msgid "Hong Kong Cantonese" 87 | msgstr "Cantonese (Hong Kong)" 88 | 89 | #: addon\synthDrivers\ibmeci.py:169 90 | msgid "Rate boos&t" 91 | msgstr "&Aumento velocità" 92 | 93 | #: addon\synthDrivers\ibmeci.py:171 94 | msgid "Hea&d size" 95 | msgstr "Dimensione della testa" 96 | 97 | #: addon\synthDrivers\ibmeci.py:172 98 | msgid "Rou&ghness" 99 | msgstr "Raucedine" 100 | 101 | #: addon\synthDrivers\ibmeci.py:173 102 | msgid "Breathi&ness" 103 | msgstr "Respirazione" 104 | 105 | #: addon\synthDrivers\ibmeci.py:174 106 | msgid "Enable backquote voice &tags" 107 | msgstr "Abilita &tag vocali backquote" 108 | 109 | #: addon\synthDrivers\ibmeci.py:175 110 | msgid "Enable &abbreviation expansion" 111 | msgstr "Abilita espansione dell'&abreviazione" 112 | 113 | #: addon\synthDrivers\ibmeci.py:176 114 | msgid "Enable phras&e prediction" 115 | msgstr "Abilita predizione della frase" 116 | 117 | #: addon\synthDrivers\ibmeci.py:177 118 | msgid "&Shorten pauses" 119 | msgstr "&Accorcia le pause" 120 | 121 | #: addon\synthDrivers\ibmeci.py:178 122 | msgid "Al&ways Send Current Speech Settings" 123 | msgstr "Invia sempr&e le impostazioni del parlato correnti" 124 | 125 | #: addon\synthDrivers\ibmeci.py:179 126 | msgid "Sa&mple Rate" 127 | msgstr "Frequenza di campionamento" 128 | 129 | #. Translators: a message dialog asking to retry or cancel when downloading a file. 130 | #: addon\globalPlugins\_ibmttsUtils.py:77 131 | msgid "" 132 | "Unable to download the file. Perhaps there is no internet access or the " 133 | "server is not responding. Do you want to try again?" 134 | msgstr "" 135 | "Impossibile scaricare il file. Probabilmente non hai accesso a Internet o il " 136 | "server non risponde. Vuoi riprovare?" 137 | 138 | #. Translators: the title of a retry cancel dialog when downloading a file. 139 | #: addon\globalPlugins\_ibmttsUtils.py:79 140 | msgid "Error downloading" 141 | msgstr "Errore durante il download" 142 | 143 | #. Translators: a message dialog asking to retry or cancel when copying files. 144 | #: addon\globalPlugins\_ibmttsUtils.py:115 145 | msgid "" 146 | "Unable to copy a file. Perhaps it is currently being used by another process " 147 | "or you have run out of disc space on the drive you are copying to." 148 | msgstr "" 149 | "Impossibile copiare un file. Probabilmente è in uso da un altro processo o " 150 | "hai esaurito lo spazio sul disco in cui lo stai copiando." 151 | 152 | #. Translators: the title of a retry cancel dialog when copying files. 153 | #: addon\globalPlugins\_ibmttsUtils.py:117 154 | msgid "Error Copying" 155 | msgstr "Errore durante la copia" 156 | 157 | #. Translators: The message displayed when an error occurs when opening an add-on package for adding. 158 | #: addon\globalPlugins\_ibmttsUtils.py:136 159 | #, python-format 160 | msgid "" 161 | "Failed to open add-on update file at %s - missing file or invalid file format" 162 | msgstr "" 163 | "Impossibile aprire i file del componente aggiuntivo in %s - file mancante o " 164 | "formato non valido" 165 | 166 | #. Translators: The title of a dialog presented when an error occurs. 167 | #. Translators: The title displayed if the folder to store the downloaded file can't be created. 168 | #. Translators: The title displayed when copying IBMTTS files to Add-on was successful. 169 | #: addon\globalPlugins\_ibmttsUtils.py:138 170 | #: addon\globalPlugins\_ibmttsUtils.py:165 171 | #: addon\globalPlugins\_ibmttsUtils.py:290 addon\globalPlugins\ibmtts.py:108 172 | #: addon\globalPlugins\ibmtts.py:136 173 | msgid "Error" 174 | msgstr "Errore" 175 | 176 | #. Translators: The title of the dialog presented while an Addon is being installed. 177 | #: addon\globalPlugins\_ibmttsUtils.py:152 178 | #, python-format 179 | msgid "Installing %s" 180 | msgstr "Installazione in corso di %s" 181 | 182 | #. Translators: The message displayed while an addon is being installed. 183 | #: addon\globalPlugins\_ibmttsUtils.py:154 184 | msgid "Please wait while the add-on is being installed." 185 | msgstr "Attendi che il componente aggiuntivo venga installato." 186 | 187 | #. Translators: The message displayed when an error occurs when installing an add-on package. 188 | #: addon\globalPlugins\_ibmttsUtils.py:163 189 | #, python-format 190 | msgid "Failed to install add-on from %s" 191 | msgstr "Impossibile installare il componente aggiuntivo da %s" 192 | 193 | #. Translators: The message displayed if the folder to store the downloaded file can't be created. 194 | #: addon\globalPlugins\_ibmttsUtils.py:288 195 | msgid "Unable to create the folder to save the update file." 196 | msgstr "" 197 | "Impossibile creare la cartella in cui salvare il file di aggiornamento." 198 | 199 | #: addon\globalPlugins\_ibmttsUtils.py:298 200 | #, python-format 201 | msgid "Downloading the new %s update" 202 | msgstr "Download in corso del nuovo aggiornamento di %s" 203 | 204 | #: addon\globalPlugins\_ibmttsUtils.py:299 205 | msgid "downloading" 206 | msgstr "Download in corso" 207 | 208 | #. Translators: The message displayed when no updates were found. 209 | #: addon\globalPlugins\_ibmttsUtils.py:333 210 | #, python-format 211 | msgid "There are no updates available for the %s addon." 212 | msgstr "Non ci sono aggiornamenti disponibili per il componente aggiuntivo %s" 213 | 214 | #. Translators: The title displayed when no updates were found. 215 | #: addon\globalPlugins\_ibmttsUtils.py:335 216 | msgid "No updates available" 217 | msgstr "Nessun aggiornamento disponibile" 218 | 219 | #. Translators: A message asking the user if they wish to update the add-on 220 | #: addon\globalPlugins\_ibmttsUtils.py:342 221 | #, python-format 222 | msgid "" 223 | "A new version of %s was found. The new version is %s. Would you like to " 224 | "update this add-on now?" 225 | msgstr "" 226 | "È disponibile una nuova versione di %s. La nuova versione è %s. Vuoi " 227 | "aggiornare questo componente aggiuntivo ora?" 228 | 229 | #. Translators: Title for message asking if the user wishes to update the add-on. 230 | #: addon\globalPlugins\_ibmttsUtils.py:345 231 | msgid "Update add-on" 232 | msgstr "Aggiorna il componente aggiuntivo" 233 | 234 | #. Translators: This is the label for the IBMTTS settings category in NVDA Settings screen. 235 | #: addon\globalPlugins\ibmtts.py:26 236 | msgid "IBMTTS" 237 | msgstr "" 238 | 239 | #: addon\globalPlugins\ibmtts.py:33 240 | msgid "&Automatically check for updates for IBMTTS" 241 | msgstr "&Controlla gli aggiornamenti automaticamente per IBMTTS" 242 | 243 | #. Translators: This is the button to check for new updates of the add-on. 244 | #: addon\globalPlugins\ibmtts.py:36 245 | msgid "&Check for update" 246 | msgstr "&Controlla aggiornamenti" 247 | 248 | #. Translators: This is the label for the IBMTTS folder address. 249 | #: addon\globalPlugins\ibmtts.py:39 250 | msgid "IBMTTS folder address" 251 | msgstr "Percorso della cartella di IBMTTS" 252 | 253 | #. Translators: This is the label for the IBMTTS library name. 254 | #: addon\globalPlugins\ibmtts.py:41 255 | msgid "IBMTTS library name (dll)" 256 | msgstr "Nome della libreria di IBMTTS (dll)" 257 | 258 | #. Translators: This is the button to explore and find for an IBMTTS library and files. 259 | #: addon\globalPlugins\ibmtts.py:43 260 | msgid "&Browse for IBMTTS library..." 261 | msgstr "&Cerca una libreria IBMTTS..." 262 | 263 | #. Translators: This is the button to copy external IBMTTS files into synth driver Add-on. 264 | #: addon\globalPlugins\ibmtts.py:46 265 | msgid "" 266 | "&Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions)" 267 | msgstr "" 268 | "&Copia i file di IBMTTS in un componente aggiuntivo (potrebbe non funzionare " 269 | "per alcune distribuzioni di IBMTTS" 270 | 271 | #: addon\globalPlugins\ibmtts.py:62 272 | msgid "Select the IBMTTS library (dll)" 273 | msgstr "Seleziona la libreria di IBMTTS (dll)" 274 | 275 | #. Translators: the label for the dynamic link library extension (dll) file type 276 | #: addon\globalPlugins\ibmtts.py:64 277 | #, python-brace-format 278 | msgid "dynamic link library (*.{ext})" 279 | msgstr "" 280 | 281 | #. Translators: The message displayed when the IBMTTS files folder and library name have been set. 282 | #: addon\globalPlugins\ibmtts.py:74 283 | msgid "" 284 | "The IBMTTS files location has been set. If you want to use it with a " 285 | "portable version of NVDA, please use the \"Copy IBMTTS files into driver add-" 286 | "on\" button" 287 | msgstr "" 288 | "Il percorso dei file di IBMTTS è stato impostato. Se vuoi usarlo in una " 289 | "versione portable di NVDA, usa il pulsante \"Copia i file di IBMTTS in un " 290 | "componente aggiuntivo\"." 291 | 292 | #. Translators: The title displayed when the IBMTTS files folder and library name have been set. 293 | #. Translators: The title displayed when copying IBMTTS files to Add-on was successful. 294 | #: addon\globalPlugins\ibmtts.py:76 addon\globalPlugins\ibmtts.py:130 295 | msgid "Success" 296 | msgstr "Fatto" 297 | 298 | #. Translators: The message displayed in the dialog that inform you the specified library is invalid. 299 | #: addon\globalPlugins\ibmtts.py:82 300 | msgid "" 301 | "The specified dll file seems to be an incorrect IBMTTS library. Would you " 302 | "like to select another library?" 303 | msgstr "" 304 | "Il file dll specificato sembra essere una libreria di IBMTTS non corretta. " 305 | "Vuoi selezionare un'altra libreria?" 306 | 307 | #: addon\globalPlugins\ibmtts.py:83 308 | msgid "Error loading library" 309 | msgstr "Errore durante il caricamento della libreria" 310 | 311 | #: addon\globalPlugins\ibmtts.py:91 312 | msgid "" 313 | "Are you sure to copy IBMTTS files to local NVDA installation and register a " 314 | "new add-on called \"eciLibraries\" to store the libraries? It may not work " 315 | "in some IBMTTS distributions.\n" 316 | "\t\tNote: after it, if you want to uninstall this add-on, you'll need to " 317 | "uninstall two add-ons in order to delete IBMTTS files completelly from " 318 | "NVDA. This one and \"eciLibraries\"" 319 | msgstr "" 320 | "Sei sicuro di voler copiare i file di IBMTTS nell'installazione locale di " 321 | "NVDA e registrare un componente aggiuntivo chiamato \"eciLibraries\" in cui " 322 | "archiviare le librerie? Potrebbe non funzionare in alcune distribuzioni di " 323 | "IBMTTS./n\n" 324 | "/t/tNota: dopo la procedura, se vuoi disinstallare questo componente " 325 | "aggiuntivo, dovrai disinstallare due componenti aggiuntivi per rimuovere " 326 | "completamente i file di IBMTTS da NVDA: questo e \"eciLibraries\"." 327 | 328 | #. Translators: The title of the Asking dialog displayed when trying to copy IBMTTS files. 329 | #: addon\globalPlugins\ibmtts.py:94 330 | msgid "Copy IBMTTS files" 331 | msgstr "Copia i file di IBMTTS" 332 | 333 | #: addon\globalPlugins\ibmtts.py:106 334 | msgid "" 335 | "Unable to copy the files because the source and destination paths are the " 336 | "same." 337 | msgstr "" 338 | "Impossibile copiare i file perché i percorsi di origine e di destinazione " 339 | "sono gli stessi." 340 | 341 | #. Translators: The title of the dialog presented while IBMTTS files are being copied. 342 | #: addon\globalPlugins\ibmtts.py:117 343 | msgid "Copying files" 344 | msgstr "Copia dei file" 345 | 346 | #. Translators: The message displayed while IBMTTS files are being copied. 347 | #: addon\globalPlugins\ibmtts.py:119 348 | msgid "Please wait while IBMTTS files are copied into add-on." 349 | msgstr "" 350 | "Attendi che i file di IBMTTS vengano copiati nel componente aggiuntivo." 351 | 352 | #. Translators: The message displayed when copying IBMTTS files to Add-on was successful. 353 | #: addon\globalPlugins\ibmtts.py:128 354 | msgid "" 355 | "Successfully copied IBMTTS files. The local copy will be used after restart " 356 | "NVDA." 357 | msgstr "" 358 | "I file di IBMTTS sono stati copiati con successo. La copia locale verrà " 359 | "usata dopo il riavvio di NVDA." 360 | 361 | #. Translators: The message displayed when errors were found while trying to copy IBMTTS files to Add-on. 362 | #: addon\globalPlugins\ibmtts.py:136 363 | msgid "Error copying IBMTTS files" 364 | msgstr "Errore durante la copia dei file di IBMTTS" 365 | 366 | #. Translators: the message shown if the driver can't find libraries during installation. 367 | #: addon\installTasks.py:13 368 | msgid "" 369 | "The synthesizer won't be available until you set IBMTTS files. NVDA won't " 370 | "show this synthesizer in teh synthesizers lists because you need to set the " 371 | "IBMTTS files location first.\n" 372 | "\tTo do it open the NVDA settings dialog, select IBMTTS category and use the " 373 | "\"Browse for IBMTTS library\" button to select the IBMTTS files folder.\n" 374 | msgstr "" 375 | "Il sintetizzatore non sarà disponibile finché non imposti i file di IBMTTS. " 376 | "NVDA non mostrerà il sintetizzatore nella lista dei sintetizzatori perché " 377 | "devi prima copiare i file di IBMTTS./\n" 378 | "/tPer farlo, apri la finestra di dialogo delle impostazioni di NVDA, " 379 | "seleziona la categoria IBMTTS e utilizza il pulsante \"Cerca una libreria " 380 | "IBMTTS\" per selezionare la cartella dei file di IBMTTS./n\n" 381 | 382 | #. Translators: title of message box when user is installing NVDA 383 | #: addon\installTasks.py:24 384 | msgid "IBMTTS driver for NVDA" 385 | msgstr "Driver IBMTTS per NVDA" 386 | 387 | #. Add-on summary, usually the user visible name of the addon. 388 | #. Translators: Summary for this add-on to be shown on installation and add-on information. 389 | #: buildVars.py:17 390 | msgid "IBMTTS driver" 391 | msgstr "Driver IBMTTS" 392 | 393 | #. Add-on description 394 | #. Translators: Long description to be shown for this add-on on add-on information from add-ons manager 395 | #: buildVars.py:20 396 | msgid "This is the IBMTTS synthesizer driver for NVDA." 397 | msgstr "Questo è il driver per il sintetizzatore IBMTTS per NVDA." 398 | -------------------------------------------------------------------------------- /addon/locale/zh_CN/LC_MESSAGES/nvda.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the 'IBMTTS' package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: IBMTTS for NVDA\n" 9 | "Report-Msgid-Bugs-To: 'nvda-translations@freelists.org'\n" 10 | "POT-Creation-Date: 2022-12-22 09:24+0800\n" 11 | "PO-Revision-Date: 2022-12-22 09:26+0800\n" 12 | "Last-Translator: Rémy Ruiz \n" 13 | "Language-Team: Cary-rowen \n" 14 | "Language: zh_CN\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "X-Generator: Poedit 2.4.3\n" 20 | 21 | #: addon\synthDrivers\_ibmeci.py:61 22 | msgid "Castilian Spanish" 23 | msgstr "卡斯蒂利亚西班牙语" 24 | 25 | #: addon\synthDrivers\_ibmeci.py:62 26 | msgid "Latin American Spanish" 27 | msgstr "拉丁美洲西班牙语" 28 | 29 | #: addon\synthDrivers\_ibmeci.py:63 30 | msgid "Brazilian Portuguese" 31 | msgstr "巴西葡萄牙语" 32 | 33 | #: addon\synthDrivers\_ibmeci.py:64 34 | msgid "French" 35 | msgstr "法语" 36 | 37 | #: addon\synthDrivers\_ibmeci.py:65 38 | msgid "French Canadian" 39 | msgstr "法语-加拿大" 40 | 41 | #: addon\synthDrivers\_ibmeci.py:66 42 | msgid "Finnish" 43 | msgstr "芬兰语" 44 | 45 | #: addon\synthDrivers\_ibmeci.py:67 46 | msgid "Chinese" 47 | msgstr "中文" 48 | 49 | #: addon\synthDrivers\_ibmeci.py:68 50 | msgid "Japanese" 51 | msgstr "日语" 52 | 53 | #: addon\synthDrivers\_ibmeci.py:69 54 | msgid "Korean" 55 | msgstr "韩语" 56 | 57 | #: addon\synthDrivers\_ibmeci.py:70 58 | msgid "German" 59 | msgstr "德语" 60 | 61 | #: addon\synthDrivers\_ibmeci.py:71 62 | msgid "Italian" 63 | msgstr "义大利语" 64 | 65 | #: addon\synthDrivers\_ibmeci.py:72 66 | msgid "American English" 67 | msgstr "美式英语" 68 | 69 | #: addon\synthDrivers\_ibmeci.py:73 70 | msgid "British English" 71 | msgstr "英式英语" 72 | 73 | #: addon\synthDrivers\_ibmeci.py:74 74 | msgid "Swedish" 75 | msgstr "瑞典语" 76 | 77 | #: addon\synthDrivers\_ibmeci.py:75 78 | msgid "Norwegian" 79 | msgstr "挪威语" 80 | 81 | #: addon\synthDrivers\_ibmeci.py:76 82 | msgid "Danish" 83 | msgstr "丹麦语" 84 | 85 | #: addon\synthDrivers\_ibmeci.py:77 86 | msgid "Hong Kong Cantonese" 87 | msgstr "中文香港" 88 | 89 | #: addon\synthDrivers\ibmeci.py:169 90 | msgid "Rate boos&t" 91 | msgstr "语速加倍" 92 | 93 | #: addon\synthDrivers\ibmeci.py:171 94 | msgid "Hea&d size" 95 | msgstr "头部大小(&D)" 96 | 97 | #: addon\synthDrivers\ibmeci.py:172 98 | msgid "Rou&ghness" 99 | msgstr "粗糙程度(&R)" 100 | 101 | #: addon\synthDrivers\ibmeci.py:173 102 | msgid "Breathi&ness" 103 | msgstr "呼吸(&N)" 104 | 105 | #: addon\synthDrivers\ibmeci.py:174 106 | msgid "Enable backquote voice &tags" 107 | msgstr "启用反引号语音标签(&T)" 108 | 109 | #: addon\synthDrivers\ibmeci.py:175 110 | msgid "Enable &abbreviation expansion" 111 | msgstr "启用缩写扩展(&A)" 112 | 113 | #: addon\synthDrivers\ibmeci.py:176 114 | msgid "Enable phras&e prediction" 115 | msgstr "启用短语预测(&E)" 116 | 117 | #: addon\synthDrivers\ibmeci.py:177 118 | msgid "&Shorten pauses" 119 | msgstr "缩短停顿时间" 120 | 121 | #: addon\synthDrivers\ibmeci.py:178 122 | msgid "Al&ways Send Current Speech Settings" 123 | msgstr "始终发送当前语音设置(&W)" 124 | 125 | #: addon\synthDrivers\ibmeci.py:179 126 | msgid "Sa&mple Rate" 127 | msgstr "采样率(&M)" 128 | 129 | #. Translators: This is the label for the IBMTTS settings category in NVDA Settings screen. 130 | #: addon\globalPlugins\ibmtts.py:17 131 | msgid "IBMTTS" 132 | msgstr "IBMTTS" 133 | 134 | #. Translators: This is the label for the IBMTTS folder address. 135 | #: addon\globalPlugins\ibmtts.py:22 136 | msgid "IBMTTS folder address" 137 | msgstr "IBMTTS 目录" 138 | 139 | #. Translators: This is the label for the IBMTTS library name. 140 | #: addon\globalPlugins\ibmtts.py:24 141 | msgid "IBMTTS library name (dll)" 142 | msgstr "动态链接库名称(DLL)" 143 | 144 | #. Translators: This is the button to explore and find for an IBMTTS library and files. 145 | #: addon\globalPlugins\ibmtts.py:26 146 | msgid "&Browse for IBMTTS library..." 147 | msgstr "浏览 IBMTTS 库(&B)..." 148 | 149 | #. Translators: This is the button to copy external IBMTTS files into synth driver Add-on. 150 | #: addon\globalPlugins\ibmtts.py:29 151 | msgid "" 152 | "&Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions)" 153 | msgstr "将所依赖的语音文件复制到驱动目录(可能不适用于某些IBMTTS版本)(&C)" 154 | 155 | #: addon\globalPlugins\ibmtts.py:41 156 | msgid "Select the IBMTTS library (dll)" 157 | msgstr "选择 IBMTTS 库(DLL)" 158 | 159 | #. Translators: the label for the dynamic link library extension (dll) file type 160 | #: addon\globalPlugins\ibmtts.py:43 161 | msgid "dynamic link library (*.{ext})" 162 | msgstr "动态链接库 (*.{ext})" 163 | 164 | #. Translators: The message displayed when the IBMTTS files folder and library name have been set. 165 | #: addon\globalPlugins\ibmtts.py:52 166 | msgid "" 167 | "The IBMTTS files location has been set. If you want to use it with a " 168 | "portable version of NVDA, please use the \"Copy IBMTTS files into driver add-" 169 | "on\" button" 170 | msgstr "" 171 | "已设置 IBMTTS 文件位置。如果要在便携版 NVDA 中使用,请使用 \"将 IBMTTS 文件复" 172 | "制到驱动目录\" 按钮" 173 | 174 | #. Translators: The title displayed when the IBMTTS files folder and library name have been set. 175 | #. Translators: The title displayed when copying IBMTTS files to Add-on was successful. 176 | #: addon\globalPlugins\ibmtts.py:54 addon\globalPlugins\ibmtts.py:102 177 | msgid "Success" 178 | msgstr "成功" 179 | 180 | #. Translators: The message displayed in the dialog that inform you the specified library is invalid. 181 | #: addon\globalPlugins\ibmtts.py:58 182 | msgid "" 183 | "The specified dll file seems to be an incorrect IBMTTS library. Would you " 184 | "like to select another library?" 185 | msgstr "" 186 | "指定的dll似乎是错误的 IBMTTS 库。\n" 187 | "您想重新选择吗?" 188 | 189 | #: addon\globalPlugins\ibmtts.py:59 190 | msgid "Error loading library" 191 | msgstr "加载库时出错" 192 | 193 | #. Translators: The message displayed when the current source path is relative. 194 | #: addon\globalPlugins\ibmtts.py:66 195 | msgid "Relative paths are not allowed." 196 | msgstr "不允许使用相对路径。" 197 | 198 | #: addon\globalPlugins\ibmtts.py:66 addon\globalPlugins\ibmtts.py:105 199 | msgid "Error" 200 | msgstr "错误" 201 | 202 | #. Translators: A message to ask the user to copy IBMTTS files to Add-on folder. 203 | #: addon\globalPlugins\ibmtts.py:69 204 | msgid "" 205 | "Are you sure to copy IBMTTS files to local NVDA installation and register a " 206 | "new add-on called \"eciLibraries\" to store the libraries? It may not work " 207 | "in some IBMTTS distributions.\n" 208 | "\t\tNote: after it, if you want to uninstall this add-on, you'll need to " 209 | "uninstall two add-ons in order to delete IBMTTS files completelly from " 210 | "NVDA. This one and \"eciLibraries\"" 211 | msgstr "" 212 | "您确定要拷贝 IBMTTS文件到 NVDA 安装目录并注册一个名为 “eciLibraries”的插件来" 213 | "保存该库吗? 在某些 IBMTTS 版本中可能无法正常工作。\n" 214 | "请注意,如果以后您希望卸载该插件,您需要同时删除包括这个插件本身和 " 215 | "“eciLibraries” 两个插件才能从 NVDA 里完全删除 IBMTTS。" 216 | 217 | #. Translators: The title of the Asking dialog displayed when trying to copy IBMTTS files. 218 | #: addon\globalPlugins\ibmtts.py:72 219 | msgid "Copy IBMTTS files" 220 | msgstr "复制IBMTTS文件" 221 | 222 | #. Translators: The title of the dialog presented while IBMTTS files are being copied. 223 | #: addon\globalPlugins\ibmtts.py:76 224 | msgid "Copying files" 225 | msgstr "正在复制文件" 226 | 227 | #. Translators: The message displayed while IBMTTS files are being copied. 228 | #: addon\globalPlugins\ibmtts.py:78 229 | msgid "Please wait while IBMTTS files are copied into add-on." 230 | msgstr "将 IBMTTS 文件复制到驱动目录,请稍后。" 231 | 232 | #. Translators: a message dialog asking to retry or cancel when copying IBMTTS files. 233 | #: addon\globalPlugins\ibmtts.py:86 234 | msgid "" 235 | "Unable to copy a file. Perhaps it is currently being used by another process " 236 | "or you have run out of disc space on the drive you are copying to." 237 | msgstr "无法复制文件。也许另一个进程正在使用它,或者目标驱动器空间不足。" 238 | 239 | #. Translators: the title of a retry cancel dialog when copying IBMTTS files. 240 | #: addon\globalPlugins\ibmtts.py:88 241 | msgid "Error Copying" 242 | msgstr "复制错误" 243 | 244 | #. Translators: The message displayed when copying IBMTTS files to Add-on was successful. 245 | #: addon\globalPlugins\ibmtts.py:100 246 | msgid "" 247 | "Successfully copied IBMTTS files. The local copy will be used after restart " 248 | "NVDA." 249 | msgstr "成功复制。重新启动 NVDA 后将使用复制后的IBMTTS文件。" 250 | 251 | #. Translators: The message displayed when errors were found while trying to copy IBMTTS files to Add-on. 252 | #: addon\globalPlugins\ibmtts.py:105 253 | msgid "Error copying IBMTTS files" 254 | msgstr "复制IBMTTS文件时出错" 255 | 256 | #. Translators: the message shown if the driver can't find libraries during installation. 257 | #: addon\installTasks.py:13 258 | msgid "" 259 | "The synthesizer won't be available until you set IBMTTS files. NVDA won't " 260 | "show this synthesizer in teh synthesizers lists because you need to set the " 261 | "IBMTTS files location first.\n" 262 | "\tTo do it open the NVDA settings dialog, select IBMTTS category and use the " 263 | "\"Browse for IBMTTS library\" button to select the IBMTTS files folder.\n" 264 | msgstr "" 265 | "在您未设置 IBMTTS 文件之前,该合成器无法使用, NVDA 不会在语音合成器列表中显" 266 | "示该合成器,\n" 267 | "您需要首先设置IBMTTS文件的位置。\n" 268 | "请打开 NVDA 设置对话框,选择 IBMTTS 类别,然后使用“浏览IBMTTS库”按钮选择 " 269 | "IBMTTS 文件目录。\n" 270 | 271 | #. Translators: title of message box when user is installing NVDA 272 | #: addon\installTasks.py:24 273 | msgid "IBMTTS driver for NVDA" 274 | msgstr "NVDA的IBMTTS驱动程序" 275 | 276 | #. Add-on summary, usually the user visible name of the addon. 277 | #. Translators: Summary for this add-on to be shown on installation and add-on information. 278 | #: buildVars.py:17 279 | msgid "IBMTTS driver" 280 | msgstr "IBMTTS 驱动程序" 281 | 282 | #. Add-on description 283 | #. Translators: Long description to be shown for this add-on on add-on information from add-ons manager 284 | #: buildVars.py:20 285 | msgid "This is the IBMTTS synthesizer driver for NVDA." 286 | msgstr "这是 NVDA 的 IBMTTS 合成器驱动程序。" 287 | 288 | #~ msgid "" 289 | #~ "Always Send Current Speech Settings (enable to prevent some tags from " 290 | #~ "sticking, disable for viavoice binary compatibility)" 291 | #~ msgstr "" 292 | #~ "始终发送语音设置参数(若您不使用 VIAVoice 语音引擎,推荐启用该选项,否则请" 293 | #~ "禁用该选项)。" 294 | 295 | #~ msgid "" 296 | #~ "Are you sure to copy IBMTTS files to local NVDA driver Add-on? It may not " 297 | #~ "work in some IBMTTS distributions." 298 | #~ msgstr "" 299 | #~ "您确认要将 IBMTTS 文件复制到本地NVDA驱动目录吗?对于某些 IBMTTS 版本可能无" 300 | #~ "效。" 301 | 302 | #~ msgid "" 303 | #~ "if you are using another copy of IBMTTS or similar with a different name, " 304 | #~ "you should not load this driver in the same NVDA session. If you do it, " 305 | #~ "NVDA will fail.\n" 306 | #~ "To resolve it switch to another synthesizer (E.G espeak) then restart " 307 | #~ "NVDA. Afther that, you can use this new driver." 308 | #~ msgstr "" 309 | #~ "如果您使用的是另一个名称不同的IBMTTS或类似版本的驱动,则不应该重复安装该语" 310 | #~ "音驱动,若这样做, NVDA 将发生错误。\n" 311 | #~ "要解决该问题,请切换到另一个合成器(例如espeak),后重新启动 NVDA。\n" 312 | #~ "然后,您就可以使用这个新的驱动程序了。" 313 | 314 | #~ msgid "" 315 | #~ "The synthesizer won't be available until you set IBMTTS files. NVDA " 316 | #~ "won't show this synthesizer in teh synthesizers list because you need to " 317 | #~ "set the IBMTTS files location first.\n" 318 | #~ "To do it open the NVDA settings dialog, select IBMTTS category and use " 319 | #~ "the \"Browse for IBMTTS library\" button to select the IBMTTS files " 320 | #~ "folder." 321 | #~ msgstr "" 322 | #~ "Le synthétiseur ne sera disponible que lorsque vous aurez défini les " 323 | #~ "fichiers IBMTTS. NVDA n’affiche pas ce synthétiseur dans la liste des " 324 | #~ "synthétiseurs, car vous devez d’abord définir l’emplacement des fichiers " 325 | #~ "IBMTTS.\n" 326 | #~ "Pour ce faire, ouvrez le dialogue des paramètres NVDA, sélectionnez la " 327 | #~ "catégorie IBMTTS et utilisez le bouton \"Rechercher une bibliothèque " 328 | #~ "IBMTTS\" pour sélectionner le dossier de fichiers IBMTTS." 329 | -------------------------------------------------------------------------------- /addon/locale/zh_TW/LC_MESSAGES/nvda.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the 'IBMTTS' package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: 'IBMTTS' 'v22.07.3'\n" 9 | "Report-Msgid-Bugs-To: 'nvda-translations@freelists.org'\n" 10 | "POT-Creation-Date: 2022-12-06 16:44-0600\n" 11 | "PO-Revision-Date: 2022-12-25 23:12+0800\n" 12 | "Language-Team: \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "X-Generator: Poedit 2.2.1\n" 17 | "Last-Translator: \n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "Language: zh_TW\n" 20 | 21 | #: addon\synthDrivers\_ibmeci.py:61 22 | msgid "Castilian Spanish" 23 | msgstr "" 24 | 25 | #: addon\synthDrivers\_ibmeci.py:62 26 | msgid "Latin American Spanish" 27 | msgstr "" 28 | 29 | #: addon\synthDrivers\_ibmeci.py:63 30 | msgid "Brazilian Portuguese" 31 | msgstr "" 32 | 33 | #: addon\synthDrivers\_ibmeci.py:64 34 | msgid "French" 35 | msgstr "" 36 | 37 | #: addon\synthDrivers\_ibmeci.py:65 38 | msgid "French Canadian" 39 | msgstr "" 40 | 41 | #: addon\synthDrivers\_ibmeci.py:66 42 | msgid "Finnish" 43 | msgstr "" 44 | 45 | #: addon\synthDrivers\_ibmeci.py:67 46 | msgid "Chinese" 47 | msgstr "" 48 | 49 | #: addon\synthDrivers\_ibmeci.py:68 50 | msgid "Japanese" 51 | msgstr "" 52 | 53 | #: addon\synthDrivers\_ibmeci.py:69 54 | msgid "Korean" 55 | msgstr "" 56 | 57 | #: addon\synthDrivers\_ibmeci.py:70 58 | msgid "German" 59 | msgstr "" 60 | 61 | #: addon\synthDrivers\_ibmeci.py:71 62 | msgid "Italian" 63 | msgstr "" 64 | 65 | #: addon\synthDrivers\_ibmeci.py:72 66 | msgid "American English" 67 | msgstr "" 68 | 69 | #: addon\synthDrivers\_ibmeci.py:73 70 | msgid "British English" 71 | msgstr "" 72 | 73 | #: addon\synthDrivers\_ibmeci.py:74 74 | msgid "Swedish" 75 | msgstr "" 76 | 77 | #: addon\synthDrivers\_ibmeci.py:75 78 | msgid "Norwegian" 79 | msgstr "" 80 | 81 | #: addon\synthDrivers\_ibmeci.py:76 82 | msgid "Danish" 83 | msgstr "" 84 | 85 | #: addon\synthDrivers\_ibmeci.py:77 86 | msgid "Hong Kong Cantonese" 87 | msgstr "" 88 | 89 | #: addon\synthDrivers\ibmeci.py:169 90 | msgid "Rate boos&t" 91 | msgstr "語速加倍" 92 | 93 | #: addon\synthDrivers\ibmeci.py:171 94 | msgid "Hea&d size" 95 | msgstr "頭部尺寸" 96 | 97 | #: addon\synthDrivers\ibmeci.py:172 98 | msgid "Rou&ghness" 99 | msgstr "粗糙度" 100 | 101 | #: addon\synthDrivers\ibmeci.py:173 102 | msgid "Breathi&ness" 103 | msgstr "氣音度" 104 | 105 | #: addon\synthDrivers\ibmeci.py:174 106 | msgid "Enable backquote voice &tags" 107 | msgstr "啟用反引號語音標籤" 108 | 109 | #: addon\synthDrivers\ibmeci.py:175 110 | msgid "Enable &abbreviation expansion" 111 | msgstr "啟用縮寫擴展" 112 | 113 | #: addon\synthDrivers\ibmeci.py:176 114 | msgid "Enable phras&e prediction" 115 | msgstr "啟用短語預測" 116 | 117 | #: addon\synthDrivers\ibmeci.py:177 118 | msgid "&Shorten pauses" 119 | msgstr "縮短停頓" 120 | 121 | #: addon\synthDrivers\ibmeci.py:178 122 | msgid "Al&ways Send Current Speech Settings" 123 | msgstr "始終發送當前語音設定" 124 | 125 | #: addon\synthDrivers\ibmeci.py:179 126 | msgid "Sa&mple Rate" 127 | msgstr "採樣率" 128 | 129 | #. Translators: This is the label for the IBMTTS settings category in NVDA Settings screen. 130 | #: addon\globalPlugins\ibmtts.py:17 131 | msgid "IBMTTS" 132 | msgstr "" 133 | 134 | #. Translators: This is the label for the IBMTTS folder address. 135 | #: addon\globalPlugins\ibmtts.py:22 136 | msgid "IBMTTS folder address" 137 | msgstr "IBMTTS資料夾地址" 138 | 139 | #. Translators: This is the label for the IBMTTS library name. 140 | #: addon\globalPlugins\ibmtts.py:24 141 | msgid "IBMTTS library name (dll)" 142 | msgstr "IBMTTS 庫名稱 (dll)" 143 | 144 | #. Translators: This is the button to explore and find for an IBMTTS library and files. 145 | #: addon\globalPlugins\ibmtts.py:26 146 | msgid "&Browse for IBMTTS library..." 147 | msgstr "瀏覽 IBMTTS 庫" 148 | 149 | #. Translators: This is the button to copy external IBMTTS files into synth driver Add-on. 150 | #: addon\globalPlugins\ibmtts.py:29 151 | msgid "" 152 | "&Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions)" 153 | msgstr "" 154 | "在附加原價元件中復制 IBMTTS 檔案(&Copy)(可能不適用於某些 IBMTTS 發行版)" 155 | 156 | #: addon\globalPlugins\ibmtts.py:41 157 | msgid "Select the IBMTTS library (dll)" 158 | msgstr "選擇 IBMTTS 庫 (dll)" 159 | 160 | #. Translators: the label for the dynamic link library extension (dll) file type 161 | #: addon\globalPlugins\ibmtts.py:43 162 | #, python-brace-format 163 | msgid "dynamic link library (*.{ext})" 164 | msgstr "" 165 | 166 | #. Translators: The message displayed when the IBMTTS files folder and library name have been set. 167 | #: addon\globalPlugins\ibmtts.py:52 168 | msgid "" 169 | "The IBMTTS files location has been set. If you want to use it with a " 170 | "portable version of NVDA, please use the \"Copy IBMTTS files into driver add-" 171 | "on\" button" 172 | msgstr "" 173 | "IBMTTS 檔案位置已設置。如果您想將它與便攜式版本的 NVDA 一起使用,請使用“將 " 174 | "IBMTTS 檔案複製到驅動程序附加元件”按鈕" 175 | 176 | #. Translators: The title displayed when the IBMTTS files folder and library name have been set. 177 | #. Translators: The title displayed when copying IBMTTS files to Add-on was successful. 178 | #: addon\globalPlugins\ibmtts.py:54 addon\globalPlugins\ibmtts.py:102 179 | msgid "Success" 180 | msgstr "成功" 181 | 182 | #. Translators: The message displayed in the dialog that inform you the specified library is invalid. 183 | #: addon\globalPlugins\ibmtts.py:58 184 | msgid "" 185 | "The specified dll file seems to be an incorrect IBMTTS library. Would you " 186 | "like to select another library?" 187 | msgstr "指定的 dll 檔案似乎是不正確的 IBMTTS 庫。您想選擇另一個 dll 嗎?" 188 | 189 | #: addon\globalPlugins\ibmtts.py:59 190 | msgid "Error loading library" 191 | msgstr "加載庫時出錯" 192 | 193 | #. Translators: The message displayed when the current source path is relative. 194 | #: addon\globalPlugins\ibmtts.py:66 195 | msgid "Relative paths are not allowed." 196 | msgstr "不允許使用相對路徑。" 197 | 198 | #: addon\globalPlugins\ibmtts.py:66 addon\globalPlugins\ibmtts.py:105 199 | msgid "Error" 200 | msgstr "錯誤" 201 | 202 | #. Translators: A message to ask the user to copy IBMTTS files to Add-on folder. 203 | #: addon\globalPlugins\ibmtts.py:69 204 | msgid "" 205 | "Are you sure to copy IBMTTS files to local NVDA installation and register a " 206 | "new add-on called \"eciLibraries\" to store the libraries? It may not work " 207 | "in some IBMTTS distributions.\n" 208 | "\t\tNote: after it, if you want to uninstall this add-on, you'll need to " 209 | "uninstall two add-ons in order to delete IBMTTS files completelly from " 210 | "NVDA. This one and \"eciLibraries\"" 211 | msgstr "" 212 | "您確定要將 IBMTTS 檔案複製到本地 NVDA 安裝並註冊一個名為“eciLibraries”的新附" 213 | "加元件來存儲庫嗎?它可能不適用於某些 IBMTTS 發行版。注意:之後,如果你想卸載" 214 | "這個附加組件,你需要卸載兩個附加組件才能從 NVDA 中完全刪除 IBMTTS 檔案。這個" 215 | "和“eciLibraries”" 216 | 217 | #. Translators: The title of the Asking dialog displayed when trying to copy IBMTTS files. 218 | #: addon\globalPlugins\ibmtts.py:72 219 | msgid "Copy IBMTTS files" 220 | msgstr "複製 IBMTTS 檔案" 221 | 222 | #. Translators: The title of the dialog presented while IBMTTS files are being copied. 223 | #: addon\globalPlugins\ibmtts.py:76 224 | msgid "Copying files" 225 | msgstr "" 226 | 227 | #. Translators: The message displayed while IBMTTS files are being copied. 228 | #: addon\globalPlugins\ibmtts.py:78 229 | msgid "Please wait while IBMTTS files are copied into add-on." 230 | msgstr "正在將 IBMTTS 檔案複製到附加元件中,請稍候。" 231 | 232 | #. Translators: a message dialog asking to retry or cancel when copying IBMTTS files. 233 | #: addon\globalPlugins\ibmtts.py:86 234 | msgid "" 235 | "Unable to copy a file. Perhaps it is currently being used by another process " 236 | "or you have run out of disc space on the drive you are copying to." 237 | msgstr "" 238 | "無法複製檔案。也許它當前正被另一個進程使用,或者您要復製到的驅動器上的磁盤空" 239 | "間已用完。" 240 | 241 | #. Translators: the title of a retry cancel dialog when copying IBMTTS files. 242 | #: addon\globalPlugins\ibmtts.py:88 243 | msgid "Error Copying" 244 | msgstr "" 245 | 246 | #. Translators: The message displayed when copying IBMTTS files to Add-on was successful. 247 | #: addon\globalPlugins\ibmtts.py:100 248 | msgid "" 249 | "Successfully copied IBMTTS files. The local copy will be used after restart " 250 | "NVDA." 251 | msgstr "已成功複製 IBMTTS 檔案。本地副本將在重啟 NVDA 後使用。" 252 | 253 | #. Translators: The message displayed when errors were found while trying to copy IBMTTS files to Add-on. 254 | #: addon\globalPlugins\ibmtts.py:105 255 | msgid "Error copying IBMTTS files" 256 | msgstr "複製 IBMTTS 檔案時出錯" 257 | 258 | #. Translators: the message shown if the driver can't find libraries during installation. 259 | #: addon\installTasks.py:13 260 | msgid "" 261 | "The synthesizer won't be available until you set IBMTTS files. NVDA won't " 262 | "show this synthesizer in teh synthesizers lists because you need to set the " 263 | "IBMTTS files location first.\n" 264 | "\tTo do it open the NVDA settings dialog, select IBMTTS category and use the " 265 | "\"Browse for IBMTTS library\" button to select the IBMTTS files folder.\n" 266 | msgstr "" 267 | "在您設置 IBMTTS 檔案之前,合成器將不可用。 NVDA 不會在合成器列表中顯示此合成" 268 | "器,因為您需要先設置 IBMTTS 檔案位置。為此,請打開 NVDA 設置對話框,選擇 " 269 | "IBMTTS 類別並使用“瀏覽 IBMTTS 庫”按鈕選擇 IBMTTS 檔案資料夾。\n" 270 | 271 | #. Translators: title of message box when user is installing NVDA 272 | #: addon\installTasks.py:24 273 | msgid "IBMTTS driver for NVDA" 274 | msgstr "NVDA 的 IBMTTS 驅動" 275 | 276 | #. Add-on summary, usually the user visible name of the addon. 277 | #. Translators: Summary for this add-on to be shown on installation and add-on information. 278 | #: buildVars.py:17 279 | msgid "IBMTTS driver" 280 | msgstr "IBMTTS 驅動" 281 | 282 | #. Add-on description 283 | #. Translators: Long description to be shown for this add-on on add-on information from add-ons manager 284 | #: buildVars.py:20 285 | msgid "This is the IBMTTS synthesizer driver for NVDA." 286 | msgstr "這是用於 NVDA 的 IBMTTS 合成器驅動。" 287 | -------------------------------------------------------------------------------- /addon/synthDrivers/_configHelper.py: -------------------------------------------------------------------------------- 1 | # NVDA configHelper. 2 | # Copyright (C) 2022 David CM 3 | 4 | import config 5 | 6 | def getDictObjFromPath(initObj, path): 7 | """ this function helps to get a value from nested dictionaries. 8 | params 9 | @initObj: the initial object. 10 | @path: a list with the path to get the final object. 11 | """ 12 | for k in path: 13 | initObj = initObj[k] 14 | return initObj 15 | 16 | def getConfigValue(path, optName, generalProfile=False): 17 | """ this function helps to accessing config values. 18 | params 19 | @path: the path to the option. 20 | @optName: the option name 21 | @generalProfile: if true, the general profile will be used, instead of the current profile. 22 | @returns: the current value, if Exists. Or an exception if the path is not valid. 23 | """ 24 | obj = config.conf.profiles[0] if generalProfile else config.conf 25 | return getDictObjFromPath(obj, path)[optName] 26 | 27 | 28 | def setConfigValue(path, optName, value, generalProfile=False): 29 | """ this function helps to accessing and set config values. 30 | params 31 | @path: the path to the option. 32 | @optName: the option name 33 | @value: the value to set. 34 | @generalProfile: if true, the general profile will be used, instead of the current profile. 35 | """ 36 | obj = config.conf.profiles[0] if generalProfile else config.conf 37 | getDictObjFromPath(obj, path)[optName] = value 38 | 39 | 40 | def boolValidator(val): 41 | if isinstance(val, bool): 42 | return val 43 | return eval(val) 44 | 45 | 46 | def registerGeneralOption(path, option, defaultValue): 47 | obj = config.conf.profiles[0] 48 | for k in path: 49 | if k not in obj: 50 | obj[k] = {} 51 | obj = obj[k] 52 | if (option not in obj): 53 | obj[option] = defaultValue 54 | 55 | 56 | def registerConfig(clsSpec, path=None): 57 | AF = clsSpec(path) 58 | specObj = getDictObjFromPath(config.conf.spec, AF.__path__[0:-1]) 59 | specObj[AF.__path__[-1]] = AF.__createSpec__() 60 | # for general profile options 61 | for k in clsSpec.__getConfigOpts__(): 62 | v = getattr(clsSpec, k) 63 | if isinstance(v, tuple) and v[1]: 64 | registerGeneralOption(AF.__path__, k, getattr(AF, k)) 65 | return AF 66 | 67 | fakeValidator = lambda x: x 68 | class OptConfig: 69 | """ just a helper descriptor to create the main class to accesing config values. 70 | the option name will be taken from the declared variable. 71 | """ 72 | def __init__(self, desc): 73 | """ 74 | params: 75 | @desc: the spec description. Can be a string (with the description of configobj) or a tuble with the configobj first, and the second value is a flag that if it's true, the option will be assigned to the default profile only. 76 | """ 77 | self.generalProfile = False 78 | self.validator = fakeValidator 79 | if isinstance(desc, tuple): 80 | self.generalProfile = desc[1] 81 | try: 82 | self.validator = desc[2] 83 | except: 84 | pass 85 | desc = desc[0] 86 | self.desc = desc 87 | 88 | def __set_name__(self, owner, name): 89 | self.name = name 90 | 91 | def __get__(self, obj, type=None): 92 | if obj: 93 | try: 94 | return self.validator(getConfigValue(obj.__path__, self.name, self.generalProfile)) 95 | except KeyError: 96 | return getConfigValue(obj.__path__, self.name) 97 | if self.generalProfile: 98 | return (self.desc, self.generalProfile) 99 | return self.desc 100 | 101 | def __set__(self, obj, value): 102 | setConfigValue(obj.__path__, self.name, value, self.generalProfile) 103 | 104 | 105 | class BaseConfig: 106 | """ this class will help to get and set config values. 107 | the idea behind this is to generalize the config path and config names. 108 | sometimes, a mistake in the dict to access the values can produce an undetectable bug. 109 | """ 110 | __path__ = None 111 | def __init__(self, path=None): 112 | if not path: 113 | path = self.__class__.__path__ 114 | if not path: 115 | raise Exception("Path for the config is not defined") 116 | if isinstance(path, list): 117 | self.__path__ = path 118 | else: 119 | self.__path__ = [path] 120 | 121 | @classmethod 122 | def __getConfigOpts__(cls, c=None): 123 | if c: cls = c 124 | return [k for k in cls.__dict__ if not k.startswith("__")] 125 | 126 | def __createSpec__(self): 127 | """ this method creates a config spec with the provided attributes in the class 128 | """ 129 | s = {} 130 | for k in self.__class__.__getConfigOpts__(): 131 | v = getattr(self.__class__, k) 132 | if isinstance(v, tuple): v = v[0] 133 | s[k] = v 134 | return s 135 | 136 | 137 | def configSpec(pathOrCls): 138 | """ a decorator to help with the generation of the class config spec. 139 | adds a get and set descriptor for eatch attribute in the config class. 140 | except the attributes starting with "__". 141 | params: 142 | @pathOrCls: the config path, 143 | or if the decorator is called without params, then the decorated class. 144 | path as an argument in the decorator has a higher priority than the __path__ declared in the class. 145 | """ 146 | def configDecorator(cls): 147 | class ConfigSpec(BaseConfig): 148 | pass 149 | for k in ConfigSpec.__getConfigOpts__(cls): 150 | v = getattr(cls, k) 151 | d = OptConfig(v) 152 | d.__set_name__(ConfigSpec, k) 153 | setattr(ConfigSpec, k, d) 154 | ConfigSpec.__path__ = path 155 | return ConfigSpec 156 | if isinstance(pathOrCls, str): 157 | path = pathOrCls 158 | return configDecorator 159 | else: 160 | path = pathOrCls.__path__ 161 | return configDecorator(pathOrCls) 162 | -------------------------------------------------------------------------------- /addon/synthDrivers/_settingsDB.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | #Copyright (C) 2009 - 2019 David CM, released under the GPL. 3 | # Author: David CM and others. 4 | #synthDrivers/settingsDB.py 5 | 6 | from ._configHelper import configSpec, registerConfig, boolValidator 7 | 8 | # Add-on config database 9 | @configSpec("ibmeci") 10 | class _AppConfig: 11 | dllName = ("string(default='eci.dll')", True) 12 | TTSPath = ("string(default='ibmtts')", True) 13 | autoUpdate = ('boolean(default=True)', True, boolValidator) 14 | appConfig = registerConfig(_AppConfig) 15 | 16 | @configSpec("speech") 17 | class _SpeechConfig: 18 | ibmtts = "" 19 | outputDevice = "" 20 | speechConfig = _SpeechConfig() 21 | -------------------------------------------------------------------------------- /apiReference/tts.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/e622c90a4ded339706a7813f63870b49852f530c/apiReference/tts.pdf -------------------------------------------------------------------------------- /buildVars.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | 3 | # Build customizations 4 | # Change this file instead of sconstruct or manifest files, whenever possible. 5 | 6 | # Full getext (please don't change) 7 | _ = lambda x : x 8 | 9 | # Add-on information variables 10 | addon_info = { 11 | # for previously unpublished addons, please follow the community guidelines at: 12 | # https://bitbucket.org/nvdaaddonteam/todo/raw/master/guideLines.txt 13 | # add-on Name, internal for nvda 14 | "addon_name" : "IBMTTS", 15 | # Add-on summary, usually the user visible name of the addon. 16 | # Translators: Summary for this add-on to be shown on installation and add-on information. 17 | "addon_summary" : _("IBMTTS driver"), 18 | # Add-on description 19 | # Translators: Long description to be shown for this add-on on add-on information from add-ons manager 20 | "addon_description" : _("""This is the IBMTTS synthesizer driver for NVDA."""), 21 | # version 22 | "addon_version" : "25.1.1", 23 | # Author(s) 24 | "addon_author" : u"David CM , x0 and others", 25 | # URL for the add-on documentation support 26 | "addon_url" : "https://github.com/davidacm/NVDA-IBMTTS-Driver", 27 | # Documentation file name 28 | "addon_docFileName" : "readme.html", 29 | # Minimum NVDA version supported (e.g. "2018.3.0") 30 | "addon_minimumNVDAVersion" : "2019.3.0", 31 | # Last NVDA version supported/tested (e.g. "2018.4.0", ideally more recent than minimum version) 32 | "addon_lastTestedNVDAVersion" : "2025.1.0", 33 | # Add-on update channel (default is stable or None) 34 | "addon_updateChannel" : None, 35 | # Add-on license such as GPL 2 36 | "addon_license": "GPL 2", 37 | # URL for the license document the ad-on is licensed under 38 | "addon_licenseURL": "https://www.gnu.org/licenses/old-licenses/gpl-2.0.html", 39 | # URL for the add-on repository where the source code can be found 40 | "addon_sourceURL": "https://github.com/davidacm/NVDA-IBMTTS-Driver", 41 | } 42 | 43 | 44 | from os import path 45 | 46 | # Define the python files that are the sources of your add-on. 47 | # You can use glob expressions here, they will be expanded. 48 | pythonSources = [path.join("addon", "synthDrivers", "*.py"), 49 | path.join("addon", "globalPlugins", "*.py"), 50 | path.join('addon', 'installTasks.py')] 51 | 52 | # Files that contain strings for translation. Usually your python sources 53 | i18nSources = pythonSources + ["buildVars.py"] 54 | pythonSources.append(path.join("addon", "synthDrivers", "ibmtts", "*.*")) 55 | 56 | # Files that will be ignored when building the nvda-addon file 57 | # Paths are relative to the addon directory, not to the root directory of your addon sources. 58 | excludedFiles = [] 59 | 60 | 61 | # Base language for the NVDA add-on 62 | baseLanguage = "en" 63 | 64 | # Markdown extensions for add-on documentation 65 | # Most add-ons do not require additional Markdown extensions. 66 | # If you need to add support for markup such as tables, fill out the below list. 67 | # Extensions string must be of the form "markdown.extensions.extensionName" 68 | # e.g. "markdown.extensions.tables" to add tables. 69 | markdownExtensions = [] 70 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | # version 25.2.1 2 | 3 | * Temporary fix for an issue with translations when the add-on starts the first time that is installed. 4 | * updated portuguese translations. 5 | * Changed the default encoding. from mbs to cp1252. 6 | 7 | # Version 25.1.1 8 | 9 | * Added support for NVDA 2025.1. 10 | * Now the driver looks for the audio output in two config paths. 11 | * Deleted the audio output change handler. This was created because in some cases the driver was not synchronized with the current audio output, it needs more testing but seems that this doesn't happen in wasapi mode. 12 | 13 | # Version 23.12.1 14 | 15 | * Updated support for NVDA 2024.2. 16 | * added some strings that were not translatable. 17 | * Added an option to donate to this add-on. 18 | * Updated installTasks to request for donations during installation. 19 | * Updated locale strings template for translators. 20 | * Updated spanish locale strings. 21 | * Updated documentation to add description of new pause options 22 | * Python 3.11 compatibility (#105) 23 | * Replaced the boolean shorten pauses setting with an expanded setting that allows to shorten no pauses, pauses at utterance boundaries, or all punctuated pauses. (#101): To implement this, the shortPause driver setting has been replaced with a choice setting called pauseMode, using logic based on that used for sample rate selection. This introduces a third pause mode, herein called utterance boundary, that will only reduce the pause at the end of a speech sequence. This has the value 1. The value 2 corresponds to the previous shorten pauses setting set to true, causing the utterance boundary to be shortened as well as the pause-related regular expressions to be applied. This does not presently load the previous shorten pauses setting and adapt to this new scheme, and the string for the utterance mode could likely do with some revision. 24 | * avoid importing add-on modules on installTasks.py, this should fix #85. 25 | * now the availability of the libraries should be detected properly during add-on installation. 26 | * solved compatibility issues with NVDA Alpha V28351 and above. It closes #92, closes #93 and closes #95. 27 | * updated the installTasks to avoid delete internal libraries inside synthDrivers/ibmtts when reinstalling the add-on. 28 | * Added another set of expressions to reduce the verbosity of IBMTTS 29 | 30 | # version 23.4.1 31 | 32 | * Changed eciSynthMode from the default 0 (Sentence) to 1 (Manual): Synthesis and input clearing is controlled by commands only. 33 | * Tried to work around situations where IBMTTS would say 'comma hundred' or other weird things in English if numbers are separated by commas 34 | * Some fixes in english_ibm_fixes should've actually applied globally. Moved the punctuation fixes formerly part of english_ibm_fixes to a new global_ibm_fixes section to improve the experience for non-English languages 35 | * Fixed short pauses pronouncing the right parenthesis if IBMTTS was used. While this change will make the short pauses expression slightly less affective, it will still work in general 36 | * Updated German anticrash further to catch more cases. #88 37 | * More space removal changes. The expression will take into account numbers as well as letters in the negative lookahead, and added the question mark to its captured punctuation 38 | * Improved the IBMTTS space removal expression so it doesn't catch false positives such as it's a .mp3 file 39 | * added a log message if the selected library is not correct. It shows the exception that raised the failure. 40 | 41 | # Version 18-06-2018: 42 | 43 | * unused imported modules were deleted. 44 | * fixed crashing expression for spanish language. 45 | * added utf-8 coding header in order to fix some reg expressions. 46 | 47 | # Version 13-07-2018: 48 | 49 | * changed pauses from p0 to p1. 50 | * all french fixes were placed in the same conditional. 51 | * now uses x in (1, 2) instead of x==1 or x==2 for all cases. 52 | * added "!" to punctuation list. 53 | 54 | # Version 15-07-2018: 55 | 56 | * added "-" to punctuation list. 57 | * added pauses for dash "-" symbol. 58 | * comma "," is replaced by dash "-" at the end of a string because eloquence seems to ignore commas at the end. 59 | * deleted "should_pause=False" parameter in xspeaktext because it isn't used anywere in the code. It was used to fix audio issues but currently seems to be unused. 60 | * incorrect behavior when spelling text has been fixed. 61 | * xspeakText changed to processText to clarify code. 62 | 63 | # Version 12-08-2018: 64 | 65 | * maxRate changed from 250 to 156. 66 | * added rateBoost setting. Enable this option to increase rate by 1.6x. 67 | 68 | # Version 16-09-2018: 69 | 70 | * Fixed rate param conversion when rate boost is active. 71 | 16/03/2019 72 | * Deleted Queue import in ibmeci.py, since this module is not used here. 73 | * Updated code for compatibility with python 3. 74 | * Defined unicode function for backward compatibility with python 2.7. 75 | * added b prefix to strings to treat them as byteStrings, since python 3 strings are unicode by default. 76 | * CHANGED isinstance(item,basestring) TO STR. 77 | * Updated auto language detection to simplify the code and compatibility for python 3. 78 | * Updated processText function. 79 | * Now in _imbesi uses io.BytesIO rater than cStringIo.StringIO 80 | * added seek(0) since BytesIO doesn't update it automatically when truncate. 81 | -------------------------------------------------------------------------------- /docChangelog-for-translators.md: -------------------------------------------------------------------------------- 1 | # for translators. Ignore this line. The changes made to the documentation (the main readme.md) will be write here. Use this file to update the documentation for your destination language. Each new change will be write at the end of the file. So, you just need to find the latest translated paragraph. If a text were deleted, the word "deleted" will be written at the begin of the line. 2 | 3 | ## start of the documentation changes (ignore this line). 4 | 5 | ## version 23.01.1 6 | 7 | For the documentation, I created a file called ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 8 | you can use that file to see what has been changed in the documentation and update the documentation for your language. 9 | 10 | 3. If you want to translate the documentation too, you can see the new changes of the documentation 11 | [at this link.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) You can see the [full english documentation here.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 12 | 13 | ## version 23.02.1 14 | New sentence: Also note that if you are using Hong Kong Cantonese or Chinese IBMTTS libraries, you may want to disable the use spelling functionality if supported option, to prevent some characters in these languages from being spelled out using the pinyin they are internally converted to. 15 | -------------------------------------------------------------------------------- /manifest-translated.ini.tpl: -------------------------------------------------------------------------------- 1 | summary = "{addon_summary}" 2 | description = """{addon_description}""" 3 | -------------------------------------------------------------------------------- /manifest.ini.tpl: -------------------------------------------------------------------------------- 1 | name = {addon_name} 2 | summary = "{addon_summary}" 3 | description = """{addon_description}""" 4 | author = "{addon_author}" 5 | url = {addon_url} 6 | version = {addon_version} 7 | docFileName = {addon_docFileName} 8 | minimumNVDAVersion = {addon_minimumNVDAVersion} 9 | lastTestedNVDAVersion = {addon_lastTestedNVDAVersion} 10 | updateChannel = {addon_updateChannel} 11 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.ruff] 2 | line-length = 110 3 | 4 | builtins = [ 5 | # translation lookup 6 | "_", 7 | # translation lookup 8 | "ngettext", 9 | # translation lookup 10 | "pgettext", 11 | # translation lookup 12 | "npgettext", 13 | ] 14 | 15 | include = [ 16 | "*.py", 17 | "sconstruct", 18 | ] 19 | 20 | exclude = [ 21 | ".git", 22 | "__pycache__", 23 | ] 24 | 25 | [tool.ruff.format] 26 | indent-style = "tab" 27 | 28 | [tool.ruff.lint.mccabe] 29 | max-complexity = 15 30 | 31 | [tool.ruff.lint] 32 | ignore = [ 33 | # indentation contains tabs 34 | "W191", 35 | ] 36 | 37 | [tool.ruff.lint.per-file-ignores] 38 | # sconstruct contains many inbuilt functions not recognised by the lint, 39 | # so ignore F821. 40 | "sconstruct" = ["F821"] 41 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # IBMTTS driver, Add-on for NVDA # 2 | 3 | This add-on implements NVDA compatibility with the IBMTTS synthesizer. 4 | We can not distribute the IBMTTS libraries. So it is just the driver. 5 | If you want to improve this driver, feel free to send your pull requests! 6 | 7 | Although this driver is compatible with Eloquence libraries (since Eloquence has the same api as IBMTTS) it's not recommended to use Eloquence with this driver due to licensing issues. Before using any synthesis libraries with this driver, it's recommended to get the license usage rights first. 8 | 9 | This driver was developed with the documentation available for IBMTTS, publicly available on the web. See references section for more details. 10 | 11 | ## Download. 12 | The latest release is available to [download in this link](https://davidacm.github.io/getlatest/gh/davidacm/NVDA-IBMTTS-Driver) 13 | 14 | ## What is IBMTTS synthesizer? 15 | 16 | ViaVoice TTS is a text-to-speech engine developed by IBM, which synthesizes textual representation of human language into speech. 17 | 18 | ## Features and settings. 19 | 20 | * Voice, variant, rate, pitch, inflection and volume setting support. 21 | * Extra head size, Roughness, Breathiness parameters settings support. Create your own voice! 22 | * Enable or disable backquote voice tags. Disable it to protect yourself from malicious codes from jokers, enable it to do many fun things with the synthesizer. Requires some extra tweaking with NVDA though to get it to work properly. 23 | * Rate boost. If the synthesizer does not speak very fast to you, then enable it and get the maximum voice speed! 24 | * auto language switching. Let the synthesizer read text to you in the correct language when marked up. 25 | * comprehensive filtering. This driver includes a comprehensive set of filters to fix crashes and other odd behavior of the synthesizer. 26 | * dictionary support. This driver supports the integration of special words, roots, and abbreviation user dictionaries for each language. Ready-made dictionary sets may be obtained from [the community dictionary repository](https://github.com/thunderdrop/IBMTTSDictionaries) or [mohamed00's alternative repository (with IBM synth dictionaries)](https://github.com/mohamed00/AltIBMTTSDictionaries) 27 | 28 | ### Extra settings: 29 | 30 | * Enable abbreviation expansion: toggles expannsion of abbreviations. Note that disabling this option will also disable the expansion of any abbreviations specified in user-provided abbreviation dictionaries. 31 | * Enable phrase prediction: if this option is enabled, the synthesizer will try to predict where pauses would occur in sentences based on their structure, for example, by using words like "and" or "the" as phrase boundaries. If this option is off, it will only pause if commas or other such punctuation is encountered. 32 | * Pauses: This is a combo box with three options. 33 | * Do not shorten: pauses will not be shortened at all, and the original pauses of IBMTTS will be used in all cases. 34 | * Shorten at end of text only: pauses of punctuation symbols such as periods and commas will not be shortened, but they will be shortened when text ends, for example when pressing NVDA+t twice quickly to spell the title bar of an application character by character. 35 | * Shorten all pauses: all pauses including punctuation pauses and pauses that occur at the end of text will be shortened. 36 | 37 | * Always send current speech settings: there is a bug in the synthesizer that will occasionally cause the speech and pitch settings to be briefly reset to their default values. The cause of this issue is currently unknown, however a workaround is to continuously send the current speech rate and pitch settings. This option should generally be enabled. However, it should be disabled if reading text that contains backquote voice tags. 38 | * Sample rate: changes the synthesizer's sound quality. Most useful for IBMTTS, where setting the sample rate to 8 kHz enables access to a new set of voices. 39 | 40 | ### IBMTTS category settings. 41 | 42 | This add-on has its own category of settings within NVDA options, to manage some internal functionality not related to speech synthesis. 43 | 44 | * Automatically check for updates for IBMTTS: If this option is checked, the add-on will check daily for new versions available. 45 | * Check for update button: Manually check for new add-on updates. 46 | * IBMTTS folder address: The path to load the IBMTTS library. It can be absolute or relative. 47 | * IBMTTS library name (dll): The name of the library (dll). Don't include paths, only the name with the extension, typically ".dll". 48 | * Browse for IBMTTS library... Opens a file browse dialog to search for the IBMTTS library on the system. It will be saved as an absolute path. 49 | * Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions): If the library path for IBMTTS has been set, it will copy all the folder files to a new add-on called eciLibraries and update the current path to a relative path. It's very useful in NVDA portable versions. It only works for libraries that use "eci.ini" files for voice language information. If the library uses the Windows registry, then this option won't work. 50 | 51 | Note: The automatic or manual update functionality won't remove the internal files of the add-on. If you use your libraries in that place, you can safely use this function. Your libraries will be safe. 52 | 53 | ## Requirements. 54 | ### NVDA. 55 | You need NVDA 2019.3 or later. 56 | 57 | ### IBMTTS synthesizer libraries. 58 | This is just the driver, you must get the libraries from somewhere else. 59 | This driver supports the slightly newer libraries that add East-Asian language support, and has specific fixes for the proper encoding of text. The older libraries without this should work, though. 60 | As of version 21.03A1, this driver also works with the even newer libraries from IBM, rather than just the SpeechWorks ones. A set of independent fixes for those libraries is included, and the additional languages and other differences are accounted for. Concatenative voices are supported, and can be accessed by setting the sample rate to 8 kHz after installing voices. For best results, use the June 2005 build of ibmeci.dll (version 7.0.0.0) as older versions can be unstable when receiving text rapidly, for example, by quickly scrolling through items in a list. Also note that if you are using Hong Kong Cantonese or Chinese IBMTTS libraries, you may want to disable the use spelling functionality if supported option, to prevent some characters in these languages from being spelled out using the pinyin they are internally converted to. 61 | 62 | ## Installation. 63 | Just install it as an NVDA add-on. Then open NVDA dialog settings, and set the IBMTTS folder files in the IBMTTS category. 64 | Also in this category you can copy the external IBMTTS files into an Add-on to use it locally. 65 | 66 | ## Contributing to translation. 67 | 68 | In order to make your work easier, I have left a 69 | [translation template in the master branch.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot) 70 | 71 | For the documentation, I created a file called ["docChangelog-for-translators.md".](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) 72 | you can use that file to see what has been changed in the documentation and update the documentation for your language. 73 | 74 | If you want to translate this add-on to another language and you don't want to open a github account or install python and other tools needed for the translation, do the following steps: 75 | 76 | 1. Use 77 | [this template](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/IBMTTS.pot), 78 | as a base for the target language. 79 | 2. Download 80 | ["poedit"](https://poedit.net/), 81 | this software will help you manage the translation strings. 82 | 3. If you want to translate the documentation too, you can see the new changes of the documentation 83 | [at this link.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/docChangelog-for-translators.md) You can see the [full english documentation here.](https://raw.githubusercontent.com/davidacm/NVDA-IBMTTS-Driver/master/readme.md) 84 | 4. Once you finished the translation, you can send me it to: "dhf360@gmail.com". 85 | 86 | You won't need to compile the source files. I'll do it when releasing a new add-on version. I will mention your name in the respective commit. If you don't wish to be mentioned, let me in the e-mail. 87 | 88 | Note: make sure you have used the latest translation strings template. 89 | 90 | This is an alternative method. If you want, you always can go by the usual way. Fork this repo, update the translation for your language, and send me a PR. But this way just will add more complexity for you. 91 | 92 | ## Packaging it for distribution. 93 | 94 | 1. Install python, currently python 3.7 is used, but You can use a newer version. 95 | 2. Install gettext, you can download a distribution for windows in [this link.](https://mlocati.github.io/articles/gettext-iconv-windows.html) If you're using windows 64 bits, I recommend [this version.](https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.exe) 96 | 3. (optional but recommended step) create a python virtual environment to be used to manage NVDA add-ons. In the console, use "python -m venv PAT_TO_FOLDER". Where PAT_TO_FOLDER is the path of your desired path for the virtual environment. 97 | 4. If you did step 2, go to the PAT_TO_FOLDER and inside scripts folder, execute "activate". The name of the environment should be shown in the console prompt. 98 | 5. Clone this repo in your desired path: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git". 99 | 6. In the same console instance, go to the folder of this repo. 100 | 7. Install the requirements: "pip install -r requirements.txt". 101 | 8. Run the scons command. The created add-on, if there were no errors, is placed in the root directory of this repo. 102 | 103 | Once you close the console, the virtual environment is deactivated. 104 | 105 | ### Packaging libraries as an independent add-on. 106 | 107 | Is not recommended to include the libraries with this driver. It's because if the user updates the driver from the 108 | [official repo](https://github.com/davidacm/NVDA-IBMTTS-Driver), 109 | using the NVDA add-on installer, the old version will be deleted including the libraries. One solution for this, is to install the libraries in a separate add-on. 110 | [Follow this link](https://github.com/davidacm/ECILibrariesTemplate) 111 | to know how to package the libraries in a separate add-on. 112 | 113 | ### Notes: 114 | 115 | * If you use the internal update feature (manual or automatic) the libraries won't be deleted even if they are inside the add-on. 116 | * if the synthesizer is inside the add-on or in 117 | ["eciLibraries"](https://github.com/davidacm/ECILibrariesTemplate) 118 | add-on, the driver will update the ini library paths automatically. So you can use it on portable NVDA versions. 119 | * when you use the "Copy IBMTTS files in an add-on" button, it will create a new add-on. So, if you want to uninstall IBMTTS, you'll need to uninstall two add-ons: "IBMTTS driver" and "Eci libraries". 120 | * scons and gettext tools on this project are compatible with python 3 only. Doesn't work with python 2.7. 121 | * You can put the extra IBMTTS required files in the add-on (for personal use only). Just copy them in "addon\synthDrivers\ibmtts" folder. Adjust the default library name in "settingsDB.py" if necessary. 122 | * if the configured library path is not relative, this add-on won't update the paths in the "eci.ini" file. The driver assumes that when using absolute paths, the paths are correct in "eci.ini" and will avoid making any updates. Keep this in mind when setting the path of your libraries. If they were not correct, this could cause errors that will render NVDA speechless when you use this synthesizer. 123 | 124 | ## Reporting issues: 125 | 126 | If you find a security issue with some of the libraries that are compatible with this driver, please do not open a github issue nor comment it on forums before the issue is solved. Please report the issue on [this form.](https://docs.google.com/forms/d/123gSqayOAsIQLx1NiI98fEqr46oiJRZ9nNq0_KIF9WU/edit) 127 | 128 | If the issue doesn't crash the driver or the screen reader, then open an [github issue here.](https://github.com/davidacm/NVDA-IBMTTS-Driver/issues) 129 | 130 | ## References. 131 | This driver is based on the IBM tts sdk, the documentation is available on: 132 | [this link](http://web.archive.org/web/20191125091344/http://www.wizzardsoftware.com/docs/tts.pdf) 133 | 134 | also at the university of Columbia in 135 | [this link](http://www1.cs.columbia.edu/~hgs/research/projects/simvoice/simvoice/docs/tts.pdf) 136 | 137 | Or you can get a backup copy on [this repo](https://github.com/david-acm/NVDA-IBMTTS-Driver) 138 | 139 | [pyibmtts: Python wrapper for IBM TTS developed by Peter Parente](https://sourceforge.net/projects/ibmtts-sdk/) 140 | 141 | See the backup files here: 142 | 143 | [tts.pdf](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.pdf) 144 | 145 | or [tts.txt.](https://cdn.jsdelivr.net/gh/davidacm/NVDA-IBMTTS-Driver/apiReference/tts.txt) 146 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | autopep8==1.6.0 2 | entrypoints==0.3 3 | flake8==3.7.9 4 | Markdown==3.1.1 5 | mccabe==0.6.1 6 | pycodestyle==2.5.0 7 | pyflakes==2.1.1 8 | SCons==4.3.0 9 | toml==0.10.2 10 | -------------------------------------------------------------------------------- /sconstruct: -------------------------------------------------------------------------------- 1 | # NVDA add-on template SCONSTRUCT file 2 | # Copyright (C) 2012-2023 Rui Batista, Noelia Martinez, Joseph Lee 3 | # This file is covered by the GNU General Public License. 4 | # See the file COPYING.txt for more details. 5 | 6 | import codecs 7 | import gettext 8 | import os 9 | import os.path 10 | import zipfile 11 | import sys 12 | 13 | # While names imported below are available by default in every SConscript 14 | # Linters aren't aware about them. 15 | # To avoid Flake8 F821 warnings about them they are imported explicitly. 16 | # When using other Scons functions please add them to the line below. 17 | from SCons.Script import BoolVariable, Builder, Copy, Environment, Variables 18 | 19 | sys.dont_write_bytecode = True 20 | 21 | # Bytecode should not be written for build vars module to keep the repository root folder clean. 22 | import buildVars # NOQA: E402 23 | 24 | 25 | def md2html(source, dest): 26 | import markdown 27 | # Use extensions if defined. 28 | mdExtensions = buildVars.markdownExtensions 29 | lang = os.path.basename(os.path.dirname(source)).replace('_', '-') 30 | localeLang = os.path.basename(os.path.dirname(source)) 31 | try: 32 | _ = gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[localeLang]).gettext 33 | summary = _(buildVars.addon_info["addon_summary"]) 34 | except Exception: 35 | summary = buildVars.addon_info["addon_summary"] 36 | title = "{addonSummary} {addonVersion}".format( 37 | addonSummary=summary, addonVersion=buildVars.addon_info["addon_version"] 38 | ) 39 | headerDic = { 40 | "[[!meta title=\"": "# ", 41 | "\"]]": " #", 42 | } 43 | with codecs.open(source, "r", "utf-8") as f: 44 | mdText = f.read() 45 | for k, v in headerDic.items(): 46 | mdText = mdText.replace(k, v, 1) 47 | htmlText = markdown.markdown(mdText, extensions=mdExtensions) 48 | # Optimization: build resulting HTML text in one go instead of writing parts separately. 49 | docText = "\n".join([ 50 | "", 51 | "" % lang, 52 | "", 53 | "" 54 | "", 55 | "", 56 | "%s" % title, 57 | "\n", 58 | htmlText, 59 | "\n" 60 | ]) 61 | with codecs.open(dest, "w", "utf-8") as f: 62 | f.write(docText) 63 | 64 | 65 | def mdTool(env): 66 | mdAction = env.Action( 67 | lambda target, source, env: md2html(source[0].path, target[0].path), 68 | lambda target, source, env: 'Generating % s' % target[0], 69 | ) 70 | mdBuilder = env.Builder( 71 | action=mdAction, 72 | suffix='.html', 73 | src_suffix='.md', 74 | ) 75 | env['BUILDERS']['markdown'] = mdBuilder 76 | 77 | 78 | def validateVersionNumber(key, val, env): 79 | # Used to make sure version major.minor.patch are integers to comply with NV Access add-on store. 80 | # Ignore all this if version number is not specified, in which case json generator will validate this info. 81 | if val == "0.0.0": 82 | return 83 | versionNumber = val.split(".") 84 | if len(versionNumber) < 3: 85 | raise ValueError("versionNumber must have three parts (major.minor.patch)") 86 | if not all([part.isnumeric() for part in versionNumber]): 87 | raise ValueError("versionNumber (major.minor.patch) must be integers") 88 | 89 | 90 | vars = Variables() 91 | vars.Add("version", "The version of this build", buildVars.addon_info["addon_version"]) 92 | vars.Add("versionNumber", "Version number of the form major.minor.patch", "0.0.0", validateVersionNumber) 93 | vars.Add(BoolVariable("dev", "Whether this is a daily development version", False)) 94 | vars.Add("channel", "Update channel for this build", buildVars.addon_info["addon_updateChannel"]) 95 | 96 | env = Environment(variables=vars, ENV=os.environ, tools=['gettexttool', mdTool]) 97 | env.Append(**buildVars.addon_info) 98 | 99 | if env["dev"]: 100 | import datetime 101 | buildDate = datetime.datetime.now() 102 | year, month, day = str(buildDate.year), str(buildDate.month), str(buildDate.day) 103 | versionTimestamp = "".join([year, month.zfill(2), day.zfill(2)]) 104 | env["addon_version"] = f"{versionTimestamp}-dev" 105 | env["versionNumber"] = f"{versionTimestamp}.0.0" 106 | env["channel"] = "dev" 107 | elif env["version"] is not None: 108 | env["addon_version"] = env["version"] 109 | if "channel" in env and env["channel"] is not None: 110 | env["addon_updateChannel"] = env["channel"] 111 | 112 | buildVars.addon_info["addon_version"] = env["addon_version"] 113 | buildVars.addon_info["addon_updateChannel"] = env["addon_updateChannel"] 114 | 115 | addonFile = env.File("${addon_name}-${addon_version}.nvda-addon") 116 | 117 | 118 | def addonGenerator(target, source, env, for_signature): 119 | action = env.Action( 120 | lambda target, source, env: createAddonBundleFromPath(source[0].abspath, target[0].abspath) and None, 121 | lambda target, source, env: "Generating Addon %s" % target[0] 122 | ) 123 | return action 124 | 125 | 126 | def manifestGenerator(target, source, env, for_signature): 127 | action = env.Action( 128 | lambda target, source, env: generateManifest(source[0].abspath, target[0].abspath) and None, 129 | lambda target, source, env: "Generating manifest %s" % target[0] 130 | ) 131 | return action 132 | 133 | 134 | def translatedManifestGenerator(target, source, env, for_signature): 135 | dir = os.path.abspath(os.path.join(os.path.dirname(str(source[0])), "..")) 136 | lang = os.path.basename(dir) 137 | action = env.Action( 138 | lambda target, source, env: generateTranslatedManifest(source[1].abspath, lang, target[0].abspath) and None, 139 | lambda target, source, env: "Generating translated manifest %s" % target[0] 140 | ) 141 | return action 142 | 143 | 144 | env['BUILDERS']['NVDAAddon'] = Builder(generator=addonGenerator) 145 | env['BUILDERS']['NVDAManifest'] = Builder(generator=manifestGenerator) 146 | env['BUILDERS']['NVDATranslatedManifest'] = Builder(generator=translatedManifestGenerator) 147 | 148 | 149 | def createAddonHelp(dir): 150 | docsDir = os.path.join(dir, "doc") 151 | if os.path.isfile("style.css"): 152 | cssPath = os.path.join(docsDir, "style.css") 153 | cssTarget = env.Command(cssPath, "style.css", Copy("$TARGET", "$SOURCE")) 154 | env.Depends(addon, cssTarget) 155 | if os.path.isfile("readme.md"): 156 | readmePath = os.path.join(docsDir, buildVars.baseLanguage, "readme.md") 157 | readmeTarget = env.Command(readmePath, "readme.md", Copy("$TARGET", "$SOURCE")) 158 | env.Depends(addon, readmeTarget) 159 | 160 | 161 | def createAddonBundleFromPath(path, dest): 162 | """ Creates a bundle from a directory that contains an addon manifest file.""" 163 | basedir = os.path.abspath(path) 164 | with zipfile.ZipFile(dest, 'w', zipfile.ZIP_DEFLATED) as z: 165 | # FIXME: the include/exclude feature may or may not be useful. Also python files can be pre-compiled. 166 | for dir, dirnames, filenames in os.walk(basedir): 167 | relativePath = os.path.relpath(dir, basedir) 168 | for filename in filenames: 169 | pathInBundle = os.path.join(relativePath, filename) 170 | absPath = os.path.join(dir, filename) 171 | if pathInBundle not in buildVars.excludedFiles: 172 | z.write(absPath, pathInBundle) 173 | createAddonStoreJson(dest) 174 | return dest 175 | 176 | 177 | def createAddonStoreJson(bundle): 178 | """Creates add-on store JSON file from an add-on package and manifest data.""" 179 | import json 180 | import hashlib 181 | # Set different json file names and version number properties based on version number parsing results. 182 | if env["versionNumber"] == "0.0.0": 183 | env["versionNumber"] = buildVars.addon_info["addon_version"] 184 | versionNumberParsed = env["versionNumber"].split(".") 185 | if all([part.isnumeric() for part in versionNumberParsed]): 186 | if len(versionNumberParsed) == 1: 187 | versionNumberParsed += ["0", "0"] 188 | elif len(versionNumberParsed) == 2: 189 | versionNumberParsed.append("0") 190 | else: 191 | versionNumberParsed = [] 192 | if len(versionNumberParsed): 193 | major, minor, patch = [int(part) for part in versionNumberParsed] 194 | jsonFilename = f'{major}.{minor}.{patch}.json' 195 | else: 196 | jsonFilename = f'{buildVars.addon_info["addon_version"]}.json' 197 | major, minor, patch = 0, 0, 0 198 | print('Generating % s' % jsonFilename) 199 | sha256 = hashlib.sha256() 200 | with open(bundle, "rb") as f: 201 | for byte_block in iter(lambda: f.read(65536), b""): 202 | sha256.update(byte_block) 203 | hashValue = sha256.hexdigest() 204 | try: 205 | minimumNVDAVersion = buildVars.addon_info["addon_minimumNVDAVersion"].split(".") 206 | except AttributeError: 207 | minimumNVDAVersion = [0, 0, 0] 208 | minMajor, minMinor = minimumNVDAVersion[:2] 209 | minPatch = minimumNVDAVersion[-1] if len(minimumNVDAVersion) == 3 else "0" 210 | try: 211 | lastTestedNVDAVersion = buildVars.addon_info["addon_lastTestedNVDAVersion"].split(".") 212 | except AttributeError: 213 | lastTestedNVDAVersion = [0, 0, 0] 214 | lastTestedMajor, lastTestedMinor = lastTestedNVDAVersion[:2] 215 | lastTestedPatch = lastTestedNVDAVersion[-1] if len(lastTestedNVDAVersion) == 3 else "0" 216 | channel = buildVars.addon_info["addon_updateChannel"] 217 | if channel is None: 218 | channel = "stable" 219 | addonStoreEntry = { 220 | "addonId": buildVars.addon_info["addon_name"], 221 | "displayName": buildVars.addon_info["addon_summary"], 222 | "URL": "", 223 | "description": buildVars.addon_info["addon_description"], 224 | "sha256": hashValue, 225 | "homepage": buildVars.addon_info["addon_url"], 226 | "addonVersionName": buildVars.addon_info["addon_version"], 227 | "addonVersionNumber": { 228 | "major": major, 229 | "minor": minor, 230 | "patch": patch 231 | }, 232 | "minNVDAVersion": { 233 | "major": int(minMajor), 234 | "minor": int(minMinor), 235 | "patch": int(minPatch) 236 | }, 237 | "lastTestedVersion": { 238 | "major": int(lastTestedMajor), 239 | "minor": int(lastTestedMinor), 240 | "patch": int(lastTestedPatch) 241 | }, 242 | "channel": channel, 243 | "publisher": "", 244 | "sourceURL": buildVars.addon_info["addon_sourceURL"], 245 | "license": buildVars.addon_info["addon_license"], 246 | "licenseURL": buildVars.addon_info["addon_licenseURL"], 247 | } 248 | with open(jsonFilename, "w") as addonStoreJson: 249 | json.dump(addonStoreEntry, addonStoreJson, indent="\t") 250 | 251 | 252 | def generateManifest(source, dest): 253 | addon_info = buildVars.addon_info 254 | with codecs.open(source, "r", "utf-8") as f: 255 | manifest_template = f.read() 256 | manifest = manifest_template.format(**addon_info) 257 | with codecs.open(dest, "w", "utf-8") as f: 258 | f.write(manifest) 259 | 260 | 261 | def generateTranslatedManifest(source, language, out): 262 | _ = gettext.translation("nvda", localedir=os.path.join("addon", "locale"), languages=[language]).gettext 263 | vars = {} 264 | for var in ("addon_summary", "addon_description"): 265 | vars[var] = _(buildVars.addon_info[var]) 266 | with codecs.open(source, "r", "utf-8") as f: 267 | manifest_template = f.read() 268 | result = manifest_template.format(**vars) 269 | with codecs.open(out, "w", "utf-8") as f: 270 | f.write(result) 271 | 272 | 273 | def expandGlobs(files): 274 | return [f for pattern in files for f in env.Glob(pattern)] 275 | 276 | 277 | addon = env.NVDAAddon(addonFile, env.Dir('addon')) 278 | 279 | langDirs = [f for f in env.Glob(os.path.join("addon", "locale", "*"))] 280 | 281 | # Allow all NVDA's gettext po files to be compiled in source/locale, and manifest files to be generated 282 | for dir in langDirs: 283 | poFile = dir.File(os.path.join("LC_MESSAGES", "nvda.po")) 284 | moFile = env.gettextMoFile(poFile) 285 | env.Depends(moFile, poFile) 286 | translatedManifest = env.NVDATranslatedManifest( 287 | dir.File("manifest.ini"), 288 | [moFile, os.path.join("manifest-translated.ini.tpl")] 289 | ) 290 | env.Depends(translatedManifest, ["buildVars.py"]) 291 | env.Depends(addon, [translatedManifest, moFile]) 292 | 293 | pythonFiles = expandGlobs(buildVars.pythonSources) 294 | for file in pythonFiles: 295 | env.Depends(addon, file) 296 | 297 | # Convert markdown files to html 298 | # We need at least doc in English and should enable the Help button for the add-on in Add-ons Manager 299 | createAddonHelp("addon") 300 | for mdFile in env.Glob(os.path.join('addon', 'doc', '*', '*.md')): 301 | htmlFile = env.markdown(mdFile) 302 | env.Depends(htmlFile, mdFile) 303 | env.Depends(addon, htmlFile) 304 | 305 | # Pot target 306 | i18nFiles = expandGlobs(buildVars.i18nSources) 307 | gettextvars = { 308 | 'gettext_package_bugs_address': 'nvda-translations@groups.io', 309 | 'gettext_package_name': buildVars.addon_info['addon_name'], 310 | 'gettext_package_version': buildVars.addon_info['addon_version'] 311 | } 312 | 313 | pot = env.gettextPotFile("${addon_name}.pot", i18nFiles, **gettextvars) 314 | env.Alias('pot', pot) 315 | env.Depends(pot, i18nFiles) 316 | mergePot = env.gettextMergePotFile("${addon_name}-merge.pot", i18nFiles, **gettextvars) 317 | env.Alias('mergePot', mergePot) 318 | env.Depends(mergePot, i18nFiles) 319 | 320 | # Generate Manifest path 321 | manifest = env.NVDAManifest(os.path.join("addon", "manifest.ini"), os.path.join("manifest.ini.tpl")) 322 | # Ensure manifest is rebuilt if buildVars is updated. 323 | env.Depends(manifest, "buildVars.py") 324 | 325 | env.Depends(addon, manifest) 326 | env.Default(addon) 327 | env.Clean(addon, ['.sconsign.dblite', 'addon/doc/' + buildVars.baseLanguage + '/']) 328 | -------------------------------------------------------------------------------- /site_scons/site_tools/gettexttool/__init__.py: -------------------------------------------------------------------------------- 1 | """ This tool allows generation of gettext .mo compiled files, pot files from source code files 2 | and pot files for merging. 3 | 4 | Three new builders are added into the constructed environment: 5 | 6 | - gettextMoFile: generates .mo file from .pot file using msgfmt. 7 | - gettextPotFile: Generates .pot file from source code files. 8 | - gettextMergePotFile: Creates a .pot file appropriate for merging into existing .po files. 9 | 10 | To properly configure get text, define the following variables: 11 | 12 | - gettext_package_bugs_address 13 | - gettext_package_name 14 | - gettext_package_version 15 | 16 | 17 | """ 18 | from SCons.Action import Action 19 | 20 | def exists(env): 21 | return True 22 | 23 | XGETTEXT_COMMON_ARGS = ( 24 | "--msgid-bugs-address='$gettext_package_bugs_address' " 25 | "--package-name='$gettext_package_name' " 26 | "--package-version='$gettext_package_version' " 27 | "-c -o $TARGET $SOURCES" 28 | ) 29 | 30 | def generate(env): 31 | env.SetDefault(gettext_package_bugs_address="example@example.com") 32 | env.SetDefault(gettext_package_name="") 33 | env.SetDefault(gettext_package_version="") 34 | 35 | env['BUILDERS']['gettextMoFile']=env.Builder( 36 | action=Action("msgfmt -o $TARGET $SOURCE", "Compiling translation $SOURCE"), 37 | suffix=".mo", 38 | src_suffix=".po" 39 | ) 40 | 41 | env['BUILDERS']['gettextPotFile']=env.Builder( 42 | action=Action("xgettext " + XGETTEXT_COMMON_ARGS, "Generating pot file $TARGET"), 43 | suffix=".pot") 44 | 45 | env['BUILDERS']['gettextMergePotFile']=env.Builder( 46 | action=Action("xgettext " + "--omit-header --no-location " + XGETTEXT_COMMON_ARGS, 47 | "Generating pot file $TARGET"), 48 | suffix=".pot") 49 | 50 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | body { 3 | font-family : Verdana, Arial, Helvetica, Sans-serif; 4 | line-height: 1.2em; 5 | } 6 | h1, h2 {text-align: center} 7 | dt { 8 | font-weight : bold; 9 | float : left; 10 | width: 10%; 11 | clear: left 12 | } 13 | dd { 14 | margin : 0 0 0.4em 0; 15 | float : left; 16 | width: 90%; 17 | display: block; 18 | } 19 | p { clear : both; 20 | } 21 | a { text-decoration : underline; 22 | } 23 | :active { 24 | text-decoration : none; 25 | } 26 | a:focus, a:hover {outline: solid} 27 | -------------------------------------------------------------------------------- /updateVersion.py: -------------------------------------------------------------------------------- 1 | import re, sys 2 | 3 | if len(sys.argv) < 2: 4 | print("the version was not detected") 5 | exit(1) 6 | version = sys.argv[1] 7 | print(f"the version recognized is: {version}") 8 | with open("buildVars.py", 'r+', encoding='utf-8') as f: 9 | text = f.read() 10 | text = re.sub('"addon_version" *:.*,', f'"addon_version" : "{version}",', text) 11 | f.seek(0) 12 | f.write(text) 13 | f.truncate() 14 | --------------------------------------------------------------------------------