PHPackages                             johnfmorton/craft-bespoken - 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. johnfmorton/craft-bespoken

ActiveCraft-plugin[Utility &amp; Helpers](/categories/utility)

johnfmorton/craft-bespoken
==========================

Customizable, high-quality text-to-speech generation for Craft CMS using the ElevenLabs API.

5.3.4(1mo ago)10proprietaryPHPPHP &gt;=8.2CI passing

Since Sep 11Pushed 1w ago1 watchersCompare

[ Source](https://github.com/johnfmorton/craft-bespoken)[ Packagist](https://packagist.org/packages/johnfmorton/craft-bespoken)[ RSS](/packages/johnfmorton-craft-bespoken/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (4)Versions (21)Used By (0)

Bespoken, text-to-speech for Craft CMS
======================================

[](#bespoken-text-to-speech-for-craft-cms)

*Bespoken* uses the ElevenLabs API to bring customizable, high-quality narration to Craft CMS. With the click of a button in the control panel, your content becomes accessible to a broader audience.

Bespoken handles long-form content automatically — text is chunked at natural paragraph and sentence boundaries, generated in segments, and stitched into a single seamless MP3. ElevenLabs request stitching keeps voice and prosody consistent across chunk boundaries.

Audio files are stored as Craft Assets. Create them once and use them anywhere — embed them on your site, use them in your podcast, or share them on social media.

For complete documentation, see the [Bespoken Documentation](DOCUMENTATION.md) in this repo.

The [Bespoken Web Component](https://www.npmjs.com/package/bespoken-audio-player) is a companion piece to this plugin. It is a customizable and accessible web component that provides a rich audio playback experience. It supports playlists, playback controls, progress tracking, and is designed to be easily integrated into any web application.

Highlights
----------

[](#highlights)

- Generate audio narration of your content with a single click.
- Automatically chunks and stitches long-form content into a single seamless MP3.
- Real-time progress tracking with chunk-by-chunk updates during generation.
- ElevenLabs credit balance and model-aware cost estimates displayed in the field before you generate.
- Generation history for each entry to review past jobs and outputs.
- Full multisite support for audio generation, previews, and history.
- Customize the Bespoken field type to choose which fields to narrate.
- Supports CKEditor fields, Redactor fields, Plain Text fields, and Matrix fields containing them.
- Support for 32 languages.
- Use any of ElevenLabs' professional voice models.
- Use Voice Cloning to create custom voice models for your Craft site. See the [ElevenLabs Voice Cloning page](https://elevenlabs.io/voice-cloning) for more information.
- Create custom pronunciation rule sets to ensure unique words are pronounced correctly, with support for multiple languages.

Requirements
------------

[](#requirements)

This plugin requires Craft CMS 5.5.0 or later, and PHP 8.2 or later.

Installation
------------

[](#installation)

You can install this plugin from the Plugin Store or with Composer.

### From the Plugin Store

[](#from-the-plugin-store)

Go to the Plugin Store in your project’s Control Panel and search for “Bespoken”. Then press “Install”.

### With Composer

[](#with-composer)

Open your terminal and run the following commands:

```
# go to the project directory
cd /path/to/my-project.test

# tell Composer to load the plugin
composer require johnfmorton/craft-bespoken

# tell Craft to install the plugin
./craft plugin/install bespoken
```

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance95

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 95.7% 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

Every ~37 days

Recently: every ~21 days

Total

18

Last Release

46d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/119723?v=4)[John F Morton](/maintainers/johnfmorton)[@johnfmorton](https://github.com/johnfmorton)

---

Top Contributors

[![johnfmorton](https://avatars.githubusercontent.com/u/119723?v=4)](https://github.com/johnfmorton "johnfmorton (176 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (8 commits)")

### Embed Badge

![Health badge](/badges/johnfmorton-craft-bespoken/health.svg)

```
[![Health](https://phpackages.com/badges/johnfmorton-craft-bespoken/health.svg)](https://phpackages.com/packages/johnfmorton-craft-bespoken)
```

###  Alternatives

[pocketmine/pocketmine-mp

A server software for Minecraft: Bedrock Edition written in PHP

3.5k78.3k91](/packages/pocketmine-pocketmine-mp)[spicyweb/craft-neo

A Matrix-like field type with block hierarchy

393813.5k10](/packages/spicyweb-craft-neo)[verbb/vizy

A flexible visual editor field for Craft.

4250.4k](/packages/verbb-vizy)[verbb/hyper

A user-friendly links field for Craft.

24147.8k12](/packages/verbb-hyper)

PHPackages © 2026

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