WORLD speech analysis and synthesis in C++
A high-quality speech analysis, manipulation and synthesis system
At a glance
- What is it?
- WORLD is a C++ speech analysis and synthesis system built around F0, spectral envelope, and aperiodicity parameters. It suits developers who need explicit control of speech signals and can work through its native API or external language integrations.
- Who is it for?
- WORLD is appropriate for C++ developers who need access to its documented analysis, parameter manipulation, synthesis, and real-time interfaces rather than a high-level application. It is less suitable for users who need automatic transcription, text-to-speech linguistic modeling, or a documented installer and command-line tutorial.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 30 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 6, 2026, and from our analysis. They are not legal advice.
Star history
- mmorise/World1,359 ★ · +5
| Repository | 2026-10-17 | 2026-11-06 |
|---|---|---|
| mmorise/World | 1.4k | 1.4k |
5 Stars in the last 20 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
WORLD separates speech into editable parameters
WORLD addresses signal-level speech processing. According to the README, it estimates fundamental frequency, commonly written as F0, together with aperiodicity and the spectral envelope. Those components describe different properties of speech: the vocal fold's fundamental frequency, the periodic and aperiodic characteristics of the waveform, and the frequency-dependent shape of the spectrum. Once these values have been estimated, an application can modify the parameters and pass them to the synthesis function. The README states that synthesis can then generate speech similar to the input using only the estimated parameters.
This design makes WORLD useful to developers building vocoders, speech research code, voice transformation experiments, or applications that need direct access to speech parameters. It does not sit above the waveform as a complete natural-language speech system. The repository description and README do not mention transcription, pronunciation prediction, linguistic analysis, or a text-to-speech front end. WORLD is the analysis and synthesis layer beneath such uses, not a complete interface for turning written text into intelligible speech.
The parameter representation also creates a clear engineering boundary. An application can change F0 without making a separate edit to the spectral envelope, provided it understands the relationships between the parameter arrays and valid value ranges. The README does not present this editing work as a drag-and-drop workflow. It requires code that calls the analysis functions, stores the resulting parameters, changes selected values, and invokes synthesis.
DIO, Harvest, CheapTrick, and D4C form the analysis path
The README associates WORLD's analysis capabilities with named estimators that serve different roles. DIO and Harvest are fundamental frequency estimators. DIO is identified through its publication as a fast F0 estimation method, while Harvest is described as a high-performance F0 estimator intended for speech signals. CheapTrick estimates the spectral envelope, and its documentation refers to an F0-adaptive spectral-envelope estimator. D4C estimates band aperiodicity and is described as a component of WORLD's high-quality synthesis system.
A parameter-estimation workflow therefore involves selecting an F0 estimator, calculating a spectral envelope, deriving an aperiodicity representation, and retaining these results for later synthesis. The README does not include a complete API call sequence, sample audio file, expected parameter output, or sample rate settings. A functioning application must align those details with its own audio acquisition and file handling code.
WORLD also documents a low-dimensional spectral-envelope codec. The associated paper is cited for representing spectral envelopes without deterioration in the context of a full-band speech analysis and synthesis system. The README does not expose the codec's API or compression controls as a separate tutorial, so its precise integration cannot be confirmed from the repository.
For citations, the README requests the wording “WORLD [1] (D4C edition [2])”. It also provides references for CheapTrick, DIO, Harvest, the spectral-envelope codec, and the real-time waveform generator. This gives downstream projects explicit sources for the algorithms rather than requiring users to infer their origins from source code.
WORLD build files and language integration choices
The repository is primarily C++ and includes a top-level `CMakeLists.txt`, a `makefile`, source and example directories, tests, and Visual Studio project directories for Visual Studio 2015, 2019, and 2022. It also provides `world-config.cmake.in`, indicating that its build configuration can be prepared through CMake. The layout identifies several build entry points, but the README does not provide commands for configuring CMake, compiling, installing, or selecting a compiler.
That silence prevents a safe installation tutorial with copied commands. Inventing a `cmake` invocation, library output path, package version, or test command would risk giving readers a procedure unsupported by the documentation. The README links to the project homepage as the place where users can find information about WORLD. A first real use must begin by obtaining the source and consulting that homepage or the repository's build files.
WORLD is not limited to direct C++ use. The README lists Python-WORLD, PyWorldVocoder, world-class, World.JS, World.NET, WorldInApple, DotnetWorld, JA-WORLD, SPTK, diffsptk, and WorldNet. Some wrap the vocoder through Python, JavaScript, C#, Swift, or Java. SPTK exposes WORLD operations as UNIX-like commands such as `pitch`, `ap`, `pitch_spec`, and `world_synth`. diffsptk implements some components in the PyTorch framework. WorldNet describes itself as a C# port of the eleven WORLD source files and also lists a NuGet package and browser demo.
These integrations are introduced rather than supported as subprojects by the author. The README explicitly says they were not merged into the main repository, partly because the author cannot support every programming language. Developers should distinguish the native C++ library from the compatibility and maintenance work performed by each external wrapper.
Starting a WORLD project without documented commands
A new user can begin by cloning the repository and inspecting the available build files, but the README does not give a clone command or a complete build recipe. The repository has `examples/analysis_synthesis/`, `examples/codec_test/`, and `examples/parameter_io/` directories. Those names point to analysis and synthesis, codec behavior, and parameter input or output, respectively. They are the most concrete starting points documented by the repository layout.
The first real implementation needs to choose an F0 estimator. DIO and Harvest are the documented choices. The application must then obtain a spectral envelope and aperiodicity representation through CheapTrick and D4C before passing the estimated parameters to synthesis. This sequence follows the roles assigned to those components in the README and the mapping listed for SPTK.
The README does not specify the function signatures, required buffer sizes, sample rates, or valid F0 ranges that a native program must use. It would be inaccurate to provide invented C++ calls or claim what a particular audio file should produce. The repository's examples and headers are the appropriate sources for those implementation details, but their contents are not reproduced in the README.
After analysis succeeds, a developer can retain the parameter arrays, apply a deliberate transformation, and invoke the documented synthesis capability. The repository's `parameter_io` directory suggests that parameter persistence is an intended example area, but the README does not define its serialization format. Confirm that format before exchanging files between applications or wrappers.
WORLD synthesis limits and the real-time boundary
WORLD's main practical value is the separation between estimating parameters and generating a waveform. A program can analyze speech, retain F0, spectral envelope, and aperiodicity data, alter selected parameters, and synthesize from those values. This is more specific than a general signal filter because its internal representation is tied to a speech waveform model.
The README also identifies a sequential real-time waveform generator and provides a separate citation for its implementation. That indicates a real-time synthesis interface exists, but the README does not describe its calling contract, buffering requirements, latency, thread-safety rules, or supported sample formats. WORLD therefore cannot be claimed to meet a particular streaming latency target based only on the existence of that function.
Parameter conversion is another boundary. The repository includes a `parameter_io` example directory, while the README does not describe the file schema. It is not safe to assume that parameters saved by one wrapper use the same layout or defaults as another wrapper. The README also does not promise that every listed wrapper exposes DIO, Harvest, CheapTrick, D4C, the codec, and the real-time generator. Function coverage must be checked in the selected wrapper's own documentation.
WORLD is a poor fit when the requirement is text in, speech out without implementing or integrating a linguistic and pronunciation model. It is also a poor fit for users seeking a packaged desktop recorder or editor. Its explicit parameter API places the burden of audio I/O, parameter validation, file conventions, editing policy, and output buffering on the calling application.
SPTK provides a different integration model
SPTK is the clearest alternative listed in the README because it wraps WORLD functionality as UNIX-like commands. Its documented mapping associates DIO and Harvest with `pitch`, D4C with `ap`, CheapTrick with `pitch_spec`, and synthesis with `world_synth`. A developer who prefers separate command stages and shell-oriented processing may find that interface more direct than linking native C++ code.
The practical difference is packaging and integration. WORLD is the C++ repository containing the algorithms and its own examples, tests, build files, and Visual Studio directories. SPTK uses WORLD behind a separate toolkit and presents operations as commands. That can simplify a pipeline built around processes and files, but it introduces another project and version boundary. The README does not claim that SPTK exposes every WORLD function or that its output conventions are identical to the native examples.
Other alternatives solve narrower language-integration problems. Python-WORLD is described as a line-by-line implementation in Python, diffsptk implements selected components within PyTorch, and WorldNet ports the eleven source files to C#. A PyTorch user may prefer diffsptk for tensor-oriented work, while a C# user may prefer WorldNet. These descriptions come from the WORLD README and do not independently confirm feature completeness or release compatibility.
Selection should follow the required WORLD component and execution model. Native C++, command-line processing, PyTorch integration, and a C# port are different adoption choices, not interchangeable labels for the same installation.
WORLD releases, licensing, and upgrade boundaries
The repository is not archived. Its last push was on 2026-10-09, and the release history lists `v1.0.1` as the second formal release on 2026-02-18. The earlier `v1.0.0` formal release dates from 2021-02-15. This history shows a major version line extending across both releases, but the README does not publish a migration guide or compatibility matrix for applications written against `v1.0.0`.
The README describes the source code as released under a modified BSD license and states that its algorithms have no patent. The repository's license metadata classifies the license as custom and points to `LICENSE.txt`. That classification creates a documentation point that adopters must resolve from the actual license file rather than from a shorthand SPDX identifier. This article does not interpret patent language or provide legal advice. It only distinguishes the README's summary from the repository metadata.
Upgrade work may involve more than replacing a binary if native code, wrappers, parameter files, and toolkit integrations are involved. The README does not document API changes between `v1.0.0` and `v1.0.1`, dependency requirements, binary compatibility, or serialization compatibility. Projects should inspect release-specific build files and verify their analysis and synthesis paths against the licensed source before adopting a new version.
Editorial conclusion
WORLD is appropriate for C++ developers who need access to its documented analysis, parameter manipulation, synthesis, and real-time interfaces rather than a high-level application. It is less suitable for users who need automatic transcription, text-to-speech linguistic modeling, or a documented installer and command-line tutorial. Before adoption, verify that your required wrapper supports the WORLD functions you need, confirm the terms in LICENSE.txt, and test DIO or Harvest on representative speech before building parameter editing or synthesis around their outputs.
Frequently asked questions
What can WORLD analyze and synthesize?
WORLD estimates F0, aperiodicity, and the spectral envelope. According to the README, the synthesis function can generate speech similar to the input from those estimated parameters.
Does WORLD provide installation commands and a command-line interface?
The README does not document installation commands or provide a native command-line interface. It links to the project homepage, while the repository includes CMake and make build files plus Visual Studio directories.
Which programming language wrappers are listed for WORLD?
The README lists projects for Python, C++, JavaScript, C#, Swift, Java, UNIX-like command processing through SPTK, and PyTorch integration through diffsptk. The author says these external projects were not merged into the main repository.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/mmorise-world)Star history chart for your README
[](https://hysenlabs.com/projects/mmorise-world)Was this useful?