Title: Vbee AIVoice &#8211; Text to Speech
Author: vbeeai
Published: <strong>July 24, 2026</strong>
Last modified: July 24, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/vbee-aivoice-text-to-speech.svg)

# Vbee AIVoice – Text to Speech

 By [vbeeai](https://profiles.wordpress.org/vbeeai/)

[Download](https://downloads.wordpress.org/plugin/vbee-aivoice-text-to-speech.2.1.8.zip)

 * [Details](https://wordpress.org/plugins/vbee-aivoice-text-to-speech/#description)
 * [Reviews](https://wordpress.org/plugins/vbee-aivoice-text-to-speech/#reviews)
 *  [Installation](https://wordpress.org/plugins/vbee-aivoice-text-to-speech/#installation)
 * [Development](https://wordpress.org/plugins/vbee-aivoice-text-to-speech/#developers)

 [Support](https://wordpress.org/support/plugin/vbee-aivoice-text-to-speech/)

## Description

Vbee AIVoice – Text to Speech là công cụ chuyển văn bản thành giọng nói chuyên nghiệp
dành cho website WordPress, giúp nội dung trên website trở nên sinh động, dễ tiếp
cận và tối ưu trải nghiệm cho mọi nhóm người nghe.

Plugin hỗ trợ chuyển nội dung bài viết thành audio thông qua Vbee Text-to-Speech
API, lưu file audio về website và tự động hiển thị trình phát audio ở ngoài frontend.

Để được hỗ trợ cài đặt và kết nối API, bạn có thể liên hệ trực tiếp với đội ngũ 
Vbee qua Zalo: https://zalo.me/vbeeai, Facebook: https://www.facebook.com/vbeeai

Features:

 * Convert post content to audio with one click from the Posts list.
 * Support for multiple voices per post; the frontend player lets visitors switch
   between them.
 * Automatic frontend audio player insertion — no shortcode required.
 * Background polling and a webhook callback so audio appears as soon as it is ready.
 * “Kiểm tra lại” (check again) action and detailed error information if a conversion
   fails.
 * Bulk create and bulk delete audio from the Posts list.
 * Locally-hosted mp3 files stored in wp-content/uploads/vbee-audios/.

This plugin connects to the Vbee Text-to-Speech API, a third-party service operated
by Vbee, to perform the actual text-to-speech conversion. See “External Service”
below for full details of what is sent and when.

### External Service

This plugin connects to the Vbee Text-to-Speech API to convert post content into
audio.

When an administrator or editor clicks “Create audio” (including bulk create) for
a post, the plugin sends the following data to Vbee:

 * The text content of the selected WordPress post, after stripping HTML tags.
 * The selected voice code(s).
 * Audio settings such as output format, bitrate, and speed.
 * The site’s configured Vbee App ID and Token, for authentication.
 * A webhook URL (a WordPress REST route on this site) so Vbee can notify the site
   when audio generation is complete.
 * The header `x-application-type: WORDPRESS`, which allows Vbee to identify requests
   created from the WordPress plugin. This is the only tracking-related header sent;
   it does not contain a website identifier, install ID, or domain.

The plugin does not send a plugin install ID, a website tracking ID, the site domain
for analytics purposes, or WordPress user personal data.

This service is provided by Vbee (https://vbee.vn):

 * Vbee Terms of Use: https://policy.vbee.vn/chinh-sach-va-dieu-khoan/dieu-khoan-
   su-dung-dich-vu-vbee-aivoice
 * Vbee Privacy Policy: https://policy.vbee.vn/chinh-sach-va-dieu-khoan/chinh-sach-
   bao-mat

### Support

Để được hỗ trợ cài đặt và kết nối API, bạn có thể liên hệ trực tiếp với đội ngũ 
Vbee qua các kênh:

 * Hotline: 024 9999 3399
 * Zalo: https://zalo.me/vbeeai
 * Facebook: https://www.facebook.com/vbeeai

### License

This plugin is licensed under GPLv2 or later. See https://www.gnu.org/licenses/gpl-
2.0.html for the license text.

All plugin code and bundled assets are released under GPLv2 or later, unless otherwise
noted.

## Installation

 1. Create an account at https://vbee.vn and https://api.vbee.vn/apps, then subscribe
    to a plan.
 2. Create an App ID and Token for your application in the Vbee dashboard.
 3. In WordPress, go to Vbee Setting and enter:
 4.  * API Address URL (default: https://api.vbee.vn/v1/tts)
     * App ID
     * Token
     * Bit Rate (default: 128)
     * Speed (default: 1.0)
     * The voice(s) you want to generate audio for
 5. Go to Posts > All Posts and click “Tạo audio” (Create audio) on any post.

## FAQ

### Do I need to add a shortcode to show the player?

No. The audio player is inserted automatically at the top of a post’s content once
audio has been generated successfully. There is no supported shortcode. A legacy`[
vbee_audio]` tag left over from older versions is treated as a no-op: it will not
print as raw text and will not render an extra player.

### Where are the audio files stored?

Locally, in `wp-content/uploads/vbee-audios/`, named `{post_id}--{voice_code}.mp3`.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Vbee AIVoice – Text to Speech” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ vbeeai ](https://profiles.wordpress.org/vbeeai/)

[Translate “Vbee AIVoice – Text to Speech” into your language.](https://translate.wordpress.org/projects/wp-plugins/vbee-aivoice-text-to-speech)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/vbee-aivoice-text-to-speech/),
check out the [SVN repository](https://plugins.svn.wordpress.org/vbee-aivoice-text-to-speech/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/vbee-aivoice-text-to-speech/)
by [RSS](https://plugins.trac.wordpress.org/log/vbee-aivoice-text-to-speech/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.1.8

 * Fixed WordPress.org Plugin Review pre-review issues:
 * Text Domain changed from `vbee-aivoice` to `vbee-aivoice-text-to-speech` to match
   the assigned WordPress.org plugin slug, updated in the plugin header, `load_plugin_textdomain()`,
   and every translation function call.
 * Renamed the plugin folder to `vbee-aivoice-text-to-speech` and the main plugin
   file to `vbee-aivoice-text-to-speech.php` to match the slug.
 * Removed the inline `<style>` tag previously echoed by the settings page; its 
   CSS now lives in `assets/css/vbee-admin.css` and is loaded with `wp_enqueue_style()`
   only on the Vbee Setting page.
 * Added the standard `if ( ! defined( 'ABSPATH' ) ) { exit; }` direct-file-access
   guard to every PHP file in the plugin, replacing the previous non-standard guard.
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.7

 * Fixed a WordPress.org submission rejection: Plugin URI and Author URI were identical.
   Plugin URI is now `https://vbee.vn/text-to-speech` (the Vbee Text-to-Speech product
   page) and Author URI remains `https://vbee.vn` (the Vbee company website).
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.6

 * Renamed the plugin display name to “Vbee AIVoice – Text to Speech” (removed the
   word “Plugin”), in the plugin header Plugin Name, the readme title, the readme
   metadata, changelog mentions, and the privacy-policy display text, per WordPress.
   org’s restriction on using “Plugin” in a plugin’s display name/permalink.
 * Folder (`vbee-aivoice`), main plugin file (`vbee-aivoice.php`), and text domain(`
   vbee-aivoice`) are unchanged.
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.5

 * Renamed the plugin to “Vbee AIVoice – Text to Speech” (plugin header Plugin Name,
   readme title, and privacy-policy display text) for keyword optimization; the 
   plugin’s technical function names were not changed.
 * Renamed the plugin folder to `vbee-aivoice` and the main plugin file to `vbee-
   aivoice.php`.
 * Changed the text domain from `vbee-text-to-speech` to `vbee-aivoice` in the plugin
   header, `load_plugin_textdomain()`, and every translation function call.
 * Added `vietnamese voice` and `ai voice` tags and updated the readme short description.
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.4

 * Updated the plugin header Description (shown in WordPress Admin > Plugins) to
   the full Vietnamese marketing copy plus Zalo/Facebook contact links, kept on 
   a single line with no HTML.
 * Updated the readme Description section to match the same Vietnamese copy, and
   updated the Support section’s Zalo link to https.
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.3

 * Added the official Vbee Terms of Use and Privacy Policy URLs to the “External
   Service” section, replacing the previous TODO placeholders.
 * Updated readme Contributors to `vbeeai` and Description to include the Vietnamese
   marketing copy and Vbee contact channels, plus a new “Support” section with the
   same contact details.
 * Renamed the plugin folder and main plugin file to the `vbee-text-to-speech` slug
   for WordPress.org consistency (see final report for details).
 * Cleaned up the plugin header Description to short, plain text (no contact info,
   no HTML).
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.2

 * Text Domain changed from `vbee` to `vbee-text-to-speech` to match the intended
   plugin slug; all translation function calls and the `load_plugin_textdomain()`
   call were updated to match.
 * Reformatted the Vbee Terms of Use / Privacy Policy links in the “External Service”
   section into explicit TODO markers — the official URLs were not available and
   were intentionally not invented; they must be filled in before submission.
 * No functional changes: audio generation, polling, retry, error details, delete,
   bulk actions, the frontend player, and the `x-application-type: WORDPRESS` header
   are unchanged.

#### 2.1.1

 * Prepared for WordPress.org Plugin Directory submission: cleaned up the plugin
   header (removed HTML markup and contact info, added License / License URI), rewrote
   readme.txt in standard WordPress.org format, added LICENSE.txt, and added an “
   External Service” section disclosing exactly what data is sent to the Vbee API
   and when.
 * Added a short, non-intrusive admin notice on the Vbee Setting page near the App
   ID/Token fields disclosing that post text is sent to Vbee when audio is created,
   including the `x-application-type: WORDPRESS` header.
 * Added suggested Privacy Policy content via `wp_add_privacy_policy_content()` (
   Settings -> Privacy -> Policy Guide).
 * Replaced the bundled loading GIF with a CSS-only spinner and removed `assets/
   images/vbee-load.gif` (unclear image licensing) along with non-essential release
   files (`.gitignore`, a stale CSS source map).
 * No change to tracking or data sent: `x-application-type: WORDPRESS` remains the
   only tracking-related header; no install ID or website tracking was added.

#### 2.1.0

 * Added the `x-application-type: WORDPRESS` header to every request the plugin 
   sends to the Vbee API (Create TTS request and Get Request status polling), so
   Vbee’s backend can attribute requests to the WordPress plugin. No new endpoint,
   no install ID, and no site/domain/user data is sent.

#### 2.0.4

 * Removed the `[vbee_audio]` shortcode as a supported feature. The audio player
   now only ever appears via automatic insertion at the top of the post content 
   when that post has valid audio (`check_audio = 1`).
 * Older posts that still contain a literal `[vbee_audio]` tag no longer show it
   as raw text on the frontend; the tag is now a no-op that renders nothing and 
   does not affect auto-insertion.

#### 2.0.3

 * Fix: Get Request polling now normalizes every status alias Vbee may return (COMPLETED/
   SUCCESS/DONE, PROCESSING/IN_PROGRESS/QUEUED, FAILED/FAILURE) and reads the audio
   link from any of `audioLink`, `audio_link`, or nested `data`/`result` objects.
 * Fix: transient/unclear Get Request errors (empty response, HTTP 5xx, “not found”,
   timeouts) no longer immediately fail the whole post; they are treated as retryable
   and polling/”Kiểm tra lại” can recover once Vbee actually finishes.
 * Added raw Get Request debug meta (`_vbee_last_get_http_code`, `_vbee_last_get_raw_body`,`
   _vbee_last_get_response`) alongside the existing per-voice debug meta.
 * Admin column now offers a “Kiểm tra lại” action on both “Đang tạo audio” and “
   Convert audio lỗi” rows, which re-checks the existing request instead of creating
   a new one.
 * Added a “Chi tiết lỗi” action on failed rows that copies full debug info (voices,
   request IDs, last status/error, last Get Request response, last download result)
   to the clipboard for bug reports.
 * REST callback now accepts the same status/field aliases as polling, and secret/
   request_id mismatches are logged without wrongly marking a voice as permanently
   failed.

#### 2.0.2

 * Fix: polling and the REST callback could leave a post stuck on “Convert audio
   lỗi” even though Vbee had already generated the audio.
 * Added detailed per-voice debug/error meta (`_vbee_voice_states`, `_vbee_last_status`,`
   _vbee_last_error`, `_vbee_last_request_id`, `_vbee_last_audio_link`, `_vbee_last_download_result`)
   so failures show a real reason instead of a generic message.
 * Local audio detection now requires the mp3 to exist AND have a size greater than
   0 before it is considered valid.
 * The REST callback now updates only the voice it was called for and recalculates
   the post’s overall status from all requested voices, instead of one voice’s callback
   deciding the whole post’s state.
 * Admin list now shows the real failure reason (with a tooltip) instead of a generic“
   Convert audio lỗi”.
 * Admin JS no longer permanently marks a post as failed just because the browser’s
   polling timeout was reached; it offers a “Kiểm tra lại” action that re-checks
   the existing request instead of creating a new one.

#### 2.0.1

 * Packaging update.

#### 2.0.0

 * Rewritten for the new Vbee async TTS API (api.vbee.vn), PHP 8 compatibility, 
   REST webhook callback, and multi-voice support.

## Meta

 *  Version **2.1.8**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [AI voice](https://wordpress.org/plugins/tags/ai-voice/)[audio player](https://wordpress.org/plugins/tags/audio-player/)
   [text to speech](https://wordpress.org/plugins/tags/text-to-speech/)[tts](https://wordpress.org/plugins/tags/tts/)
 *  [Advanced View](https://wordpress.org/plugins/vbee-aivoice-text-to-speech/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/vbee-aivoice-text-to-speech/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/vbee-aivoice-text-to-speech/reviews/)

## Contributors

 *   [ vbeeai ](https://profiles.wordpress.org/vbeeai/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/vbee-aivoice-text-to-speech/)