CoeFont API (2.0.0)

Download OpenAPI specification:Download

API Changelog
CoeFontのREST APIです。
アクセスキー及びアクセスシークレットは各ユーザーのユーザーページから取得してください。

認証方式

CoefontAPIの利用時にはHMAC-SHA256を用いて署名する必要があります。
以下の仕様に基づいて適切にヘッダーを設定してください。

ヘッダー 詳細
X-Coefont-Date UNIX時間 (UTC)
X-Coefont-Content アクセスシークレットを用いて以下のデータをHMAC-SHA256でハッシュ化した結果をhex形式で表した文字列
- UNIX時間(UTC)
- リクエストボディ
Authorization アクセスキー
Content-Type application/json

ハッシュ化について

データのハッシュ化については次のようなフローで行います。

  1. リクエストボディをjson形式にエンコードする。
  2. UNIX時間(UTC)とjsonエンコードされたリクエストボディをこの順で結合する。
  3. 以上のデータをアクセスシークレットを用いてHMAC-SHA256でハッシュ化する。
    リクエストボディが存在しない場合は現在時刻のみをハッシュ化します。

pythonでの実装例(/text2speech)

  import hmac
  import requests
  import hashlib
  import json
  from datetime import datetime, timezone

  accesskey = 'QY4Tuiug6XidAKjDS5zTQHGSI'
  access_secret = '62A03zCgPflc3NZwFHliphpKFt4tppOpdmUHgqPR'

  text = 'これはテストです。'
  date: str = str(int(datetime.utcnow().replace(tzinfo=timezone.utc).timestamp()))
  data: str = json.dumps({
    'coefont': '2b174967-1a8a-42e4-b1ae-5f6548cfa05d',
    'text': text
  })
  signature = hmac.new(bytes(access_secret, 'utf-8'), (date+data).encode('utf-8'), hashlib.sha256).hexdigest()

  response = requests.post('https://api.coefont.cloud/v2/text2speech', data=data, headers={
    'Content-Type': 'application/json',
    'Authorization': accesskey,
    'X-Coefont-Date': date,
    'X-Coefont-Content': signature
  })

  if response.status_code == 200:
    with open('response.wav', 'wb') as f:
      f.write(response.content)
  else:
    print(response.json())

Text2speech

POST /text2speech

テキストを合成音声に変換します。yomiaccentが両方指定された場合は、その読みアクセントを合成音声に変換します。

header Parameters
Content-Type
required
string

Content-Type

Authorization
required
string

アクセスキー

X-Coefont-Date
required
string

UNIX時間(UTC)

X-Coefont-Content
required
string

アクセスシークレットを用いて署名した文字列

Request Body schema: application/json

Text

coefont
required
string

音声変換を行うcoefontのID。coefont詳細画面のurlに表示される個別のuuidを参照。

text
required
string [ 1 .. 1000 ] characters

音声変換するテキスト

yomi
string non-empty

読み(ひらがな)

accent
string non-empty

アクセント。1と2からなる文字列で、1が低い音、2が高い音になる。読み(yomi)の文字1つずつと前方から対応関係にあり、文字列の長さを同じにする必要がある。

speed
number <float> [ 0.1 .. 10 ]
Default: 1

音声の速度。1.0で通常速度。0.5で半速。2.0で2倍速。

pitch
number <float> [ -3000 .. 3000 ]
Default: 0

音声のピッチ。±1200で1オクターブ変化。

kuten
number <float> [ 0 .. 5 ]
Default: 0.7

句点の間隔(秒)

toten
number <float> [ 0.2 .. 2 ]
Default: 0.4

読点の間隔(秒)

volume
number <float> [ 0.2 .. 2 ]
Default: 1

音量(倍)

intonation
number <float> [ 0 .. 2 ]
Default: 1

抑揚

format
string
Enum: "wav" "mp3"

音声ファイルのフォーマット

Responses

Request samples

Content type
application/json
{
  • "coefont": "1f58f1ae-2e9c-443a-9e3c-60d8e5dee3b8",
  • "text": "これはテストです",
  • "yomi": "これはてすとです。",
  • "accent": "122221221",
  • "speed": 1,
  • "pitch": 0,
  • "kuten": 0.7,
  • "toten": 0.4,
  • "volume": 1,
  • "intonation": 1,
  • "format": "wav"
}

Response samples

Content type
application/json
{
  • "message": "error message"
}

POST /text2speech/batch

テキストをまとめて合成音声に変換します。合計文字数を1000文字程度以内にしてください。

header Parameters
Content-Type
required
string

Content-Type

Authorization
required
string

アクセスキー

X-Coefont-Date
required
string

UNIX時間(UTC)

X-Coefont-Content
required
string

アクセスシークレットを用いて署名した文字列

Request Body schema: application/json

Text

required
Array of objects (PostText2SpeechBatchOne) non-empty

音声変換するテキストとCoeFontを指定した配列

format
string
Enum: "wav" "mp3"

音声ファイルのフォーマット

Responses

Request samples

Content type
application/json
{
  • "data": [
    ],
  • "format": "wav"
}

Response samples

Content type
application/json
{
  • "message": "error message"
}

Dict

GET /dict

ユーザー辞書の一覧を取得します

query Parameters
category
string

カテゴリー

header Parameters
Content-Type
required
string

Content-Type

Authorization
required
string

アクセスキー

X-Coefont-Date
required
string

UNIX時間(UTC)

X-Coefont-Content
required
string

アクセスシークレットを用いて署名した文字列

Responses

Response samples

Content type
application/json
[
  • {
    }
]

PUT /dict

ユーザ辞書のアイテムを追加します。単語とカテゴリーが重複している場合は上書きされます。

header Parameters
Content-Type
required
string

Content-Type

Authorization
required
string

アクセスキー

X-Coefont-Date
required
string

UNIX時間(UTC)

X-Coefont-Content
required
string

アクセスシークレットを用いて署名した文字列

Request Body schema: application/json

ユーザー辞書のアイテム

text
required
string [ 1 .. 100 ] characters

辞書に登録する単語

category
required
string non-empty

カテゴリー

yomi
required
string [ 1 .. 100 ] characters

読み(ひらがな または カタカナ)

accent
string non-empty

アクセント。1と2からなる文字列で、1が低い音、2が高い音になる。読み(yomi)の文字1つずつと前方から対応関係にあり、文字列の長さは同じになる。

Responses

Request samples

Content type
application/json
{
  • "text": "ユーザー辞書",
  • "category": "カテゴリー",
  • "yomi": "ゆーざーじしょ",
  • "accent": "1222212"
}

Response samples

Content type
application/json
{
  • "message": "error message"
}

DELETE /dict

ユーザー辞書のアイテムを削除します

header Parameters
Content-Type
required
string