Subspace Institute

Moyin TTS API

Generates speech audio from the provided text using Moyin's Text-to-Speech service

POST
/tts-moyin

Request Body

application/jsonOptional
textRequiredstring
Minimum length: 1Maximum length: 3000
voicestring

The voice to use for speech generation

Default: "cissy_meet"
speednumber

Speaking speed, from 0.5 to 2.0

Default: 1Minimum: 0.5Maximum: 2
volumenumber

Speaking volume, from 0.1 to 1.0

Default: 1Minimum: 0.1Maximum: 1
pitchnumber

Speaking pitch, from -10 to 10

Default: 0Minimum: -10Maximum: 10
tokenRequiredstring

Moyin API appkey for authentication

Minimum length: 1
secretRequiredstring

Moyin API secret for authentication

Minimum length: 1
audioTypestring

Audio output format

Default: "mp3"Value in: "pcm" | "mp3" | "speex-wb-10" | "wav"
ignoreLimitboolean

Whether to ignore 1000 characters limit

Default: false
symbolSilstring

Symbol silence mapping, e.g. semi_200,exclamation_200,question_200,comma_200,stop_200

Response Body

Audio file containing the generated speech

TypeScript Definitions

Use the response body type in TypeScript.

responseRequiredunknown

Bad request - validation error

TypeScript Definitions

Use the response body type in TypeScript.

successRequiredboolean
Value in: false
messageRequiredstring
codeRequiredstring
typeRequiredstring

Server error or Moyin TTS API error

TypeScript Definitions

Use the response body type in TypeScript.

successRequiredboolean
Value in: false
messageRequiredstring
codeRequiredstring
typeRequiredstring
curl -X POST "https://edge-workers.laplace.cn/laplace/tts-moyin" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "感谢ドラゴンラプラスWeChat的SC:一发sc没被念到我就冷汗直流心跳加速头皮发麻双手痉挛两腿打颤,还不好意思刷弹幕说你漏了,我好怕你看到了装作没看到。我的sc通常很短只有一小时,只有短短的3600秒,但它存在的时候,我会用心跳来为它倒数。私のBANを解除してください。もう二度とスパムしません😭",
    "voice": "cissy_meet",
    "speed": 1,
    "volume": 1,
    "pitch": 0,
    "token": "string",
    "secret": "string",
    "audioType": "pcm",
    "ignoreLimit": false,
    "symbolSil": "string"
  }'
const body = JSON.stringify({
  "text": "感谢ドラゴンラプラスWeChat的SC:一发sc没被念到我就冷汗直流心跳加速头皮发麻双手痉挛两腿打颤,还不好意思刷弹幕说你漏了,我好怕你看到了装作没看到。我的sc通常很短只有一小时,只有短短的3600秒,但它存在的时候,我会用心跳来为它倒数。私のBANを解除してください。もう二度とスパムしません😭",
  "voice": "cissy_meet",
  "speed": 1,
  "volume": 1,
  "pitch": 0,
  "token": "string",
  "secret": "string",
  "audioType": "pcm",
  "ignoreLimit": false,
  "symbolSil": "string"
})

fetch("https://edge-workers.laplace.cn/laplace/tts-moyin", {
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://edge-workers.laplace.cn/laplace/tts-moyin"
  body := strings.NewReader(`{
    "text": "感谢ドラゴンラプラスWeChat的SC:一发sc没被念到我就冷汗直流心跳加速头皮发麻双手痉挛两腿打颤,还不好意思刷弹幕说你漏了,我好怕你看到了装作没看到。我的sc通常很短只有一小时,只有短短的3600秒,但它存在的时候,我会用心跳来为它倒数。私のBANを解除してください。もう二度とスパムしません😭",
    "voice": "cissy_meet",
    "speed": 1,
    "volume": 1,
    "pitch": 0,
    "token": "string",
    "secret": "string",
    "audioType": "pcm",
    "ignoreLimit": false,
    "symbolSil": "string"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://edge-workers.laplace.cn/laplace/tts-moyin"
body = {
  "text": "感谢ドラゴンラプラスWeChat的SC:一发sc没被念到我就冷汗直流心跳加速头皮发麻双手痉挛两腿打颤,还不好意思刷弹幕说你漏了,我好怕你看到了装作没看到。我的sc通常很短只有一小时,只有短短的3600秒,但它存在的时候,我会用心跳来为它倒数。私のBANを解除してください。もう二度とスパムしません😭",
  "voice": "cissy_meet",
  "speed": 1,
  "volume": 1,
  "pitch": 0,
  "token": "string",
  "secret": "string",
  "audioType": "pcm",
  "ignoreLimit": false,
  "symbolSil": "string"
}
response = requests.request("POST", url, json = body, headers = {
  "Content-Type": "application/json"
})

print(response.text)
null
{
  "success": false,
  "message": "string",
  "code": "string",
  "type": "string"
}
{
  "success": false,
  "message": "string",
  "code": "string",
  "type": "string"
}