PHPackages                             nr/processtextsynthesis - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. nr/processtextsynthesis

ActivePw-module[Utility &amp; Helpers](/categories/utility)

nr/processtextsynthesis
=======================

Syntheses text fields with the Google Cloud Api Text2Speech

1.0.2(1y ago)40MITPHP

Since Dec 16Pushed 1y ago1 watchersCompare

[ Source](https://github.com/neuerituale/ProcessTextSynthesis)[ Packagist](https://packagist.org/packages/nr/processtextsynthesis)[ Docs](https://github.com/neuerituale/ProcessTextSynthesis)[ RSS](/packages/nr-processtextsynthesis/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (1)Versions (3)Used By (0)

ProcessTextSynthesis
====================

[](#processtextsynthesis)

What it does
------------

[](#what-it-does)

The module can help you to make your website content more accessible. It synthesis text fields via the Google Text2Speech Api. Synthesis jobs are placed in a queue and processed one after the other. The text fields can be configured by selection or via SSML. Voice, language and speed are configured via JSON.

The module's queue supports LazyCron, but can also be triggered manually.

Features
--------

[](#features)

- Simple integration via the native file field.
- Support [SSML](https://en.wikipedia.org/wiki/Speech_Synthesis_Markup_Language).
- Direct synthesis via save action
- Queue for many synthesis jobs
- Process page for an overview of the queue

Install
-------

[](#install)

1. Copy the files for this module to /site/modules/ProcessTextSynthesis/
2. In admin: Modules &gt; Refresh. Install ProcessTextSynthesis.
3. Create a new file field of the type ‘TextSynthesis’.
4. Configure the text synthesis in the Input tab. More on this in the ‘Configuration’ section.

Install via composer
--------------------

[](#install-via-composer)

1. Execute the following command in your website root directory. ```
    composer require nr/processtextsynthesis
    ```

Process view
------------

[](#process-view)

[![ProcessView](https://private-user-images.githubusercontent.com/11630948/393030336-272aa8c5-a54d-4097-a996-a9519ad8922f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzM5NTQ0MTgsIm5iZiI6MTc3Mzk1NDExOCwicGF0aCI6Ii8xMTYzMDk0OC8zOTMwMzAzMzYtMjcyYWE4YzUtYTU0ZC00MDk3LWE5OTYtYTk1MTlhZDg5MjJmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMTklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzE5VDIxMDE1OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRjNTNjZDZhZjk3ZGY1ZGQ1YjQ2NzQwNGVlODZlMjY1ZDQ3ZTBlM2IxOWIzYmQ5MTRlOWZlYzhkOWFiNTA3ZDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.e0kzlFUqb9bunhz_oBXjE18Al5xtT4iN1xlBvY_9VgE)](https://private-user-images.githubusercontent.com/11630948/393030336-272aa8c5-a54d-4097-a996-a9519ad8922f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzM5NTQ0MTgsIm5iZiI6MTc3Mzk1NDExOCwicGF0aCI6Ii8xMTYzMDk0OC8zOTMwMzAzMzYtMjcyYWE4YzUtYTU0ZC00MDk3LWE5OTYtYTk1MTlhZDg5MjJmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMTklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzE5VDIxMDE1OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRjNTNjZDZhZjk3ZGY1ZGQ1YjQ2NzQwNGVlODZlMjY1ZDQ3ZTBlM2IxOWIzYmQ5MTRlOWZlYzhkOWFiNTA3ZDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.e0kzlFUqb9bunhz_oBXjE18Al5xtT4iN1xlBvY_9VgE)

Field configuration
-------------------

[](#field-configuration)

`Setup` &gt; `Fields` &gt; `my_synthesis_field`

Switch to the Input tab to configure the field. You can use text mode and select the text fields to synthesise. The selected fields will appear in a row. In SSML mode, you can change the emphasis, speed or pitch of individual text fields. You can also add background noise or ambience (``). You can find out more about this in the `SSML Example` fieldset.

Here are all the supported [markup tags](https://cloud.google.com/text-to-speech/docs/ssml) for the Google Cloud API.

### Request

[](#request)

Adjust voice, language and audio parameters such as pitch, encoding and sample rate. All setting options can be found in the request documentation. Note that in SSML mode you must define pitch and rate with an enclosing `` tag.

```
{my_field_name}

```

Module configuration
--------------------

[](#module-configuration)

`Modules` &gt; `Configure` &gt; `ProcessTextSynthesis`

### API URL

[](#api-url)

Here you can customise the URL for the Google endpoint. The beta url is entered here by default.

### API Key

[](#api-key)

Enter your API key here. If you do not yet have an API key, you can generate one in the [Credentials area](https://console.cloud.google.com/apis/credentials) of the Google Cloud Console.

### LazyCron (Cron)

[](#lazycron-cron)

The queue can be started via the LazyCron module. The module must be installed for this. After installation, the schedule and the jobs to be executed in parallel can be configured.

Alternatively, the queue can also be executed via a real cronjob and by calling the method `ProcessTextSynthesis::runQueue(int $parallelJobs)`.

```
/** @var ProcessTextSynthesis $processTextSynthesis */
$processTextSynthesis = wire()->modules->get('ProcessTextSynthesis');
if($processTextSynthesis instanceof ProcessTextSynthesis) $processTextSynthesis->runQueue(1);
// runQueue() accepts the number of jobs to be executed in parallel as parameter
```

### Should completed jobs be deleted?

[](#should-completed-jobs-be-deleted)

Once a synthesis job has been completed, it can be deleted immediately or after the specified time if required.

The `ProcessTextSynthesis::runMaintenance()` method is then executed after `ProcessTextSynthesis::runQueue()`.

Todos &amp; Ideas
-----------------

[](#todos--ideas)

- Add multilanguage support (`my_synthesis_field`, `my_synthesis_field_fr`, `my_synthesis_field_de`)
- Pronunciation database ()

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

518d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/61a0639a232837322b461271ef1775f769c3ff4e289141c9ee5bdcebc8f29835?d=identicon)[nr](/maintainers/nr)

---

Top Contributors

[![julianwinkel](https://avatars.githubusercontent.com/u/11630948?v=4)](https://github.com/julianwinkel "julianwinkel (23 commits)")

---

Tags

processwiremoduleaccessibility

### Embed Badge

![Health badge](/badges/nr-processtextsynthesis/health.svg)

```
[![Health](https://phpackages.com/badges/nr-processtextsynthesis/health.svg)](https://phpackages.com/packages/nr-processtextsynthesis)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
