Skip to content

Commit

Permalink
Merge pull request #9 from kuwacom/develop
Browse files Browse the repository at this point in the history
v1.2.0 リリース
  • Loading branch information
kuwacom authored May 29, 2024
2 parents 5853071 + 0b8bf4c commit dc79e73
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 12 deletions.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 kuwa

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
87 changes: 81 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
CapCut の読み上げAPIのセルフホストRapperAPIです

# NEWS
### 2024/05/29
> **tokenが取得できないバグが修正されました!**
### 2024/05/27
> **新しい方法の糸口が見えた!!もうしばらくしたら修正アップデートします!!**
Expand All @@ -10,16 +13,88 @@ CapCut の読み上げAPIのセルフホストRapperAPIです
現在新しくtokenを取得する方法を準備中です。

# How To Use
envもしくは環境変数の

## .envファイルの作成
`.env.example`ファイルからコピーして`.env`ファイルを作成し、その中に以下の項目があるかを確認してください。
```
DEVICE_TIME=""
SIGN=""
```
それぞれに以下の画像のように取得した値を入れてください
それぞれの項目に以下の手順で取得した値を入力してください。

## 値の入手
![1](/images/1.png)

CapCutへログイン後、新規プロジェクトを空で作成し適当なテキストを作成します。

その後、テキスト読み上げタブへ移り、DevToolsの`Clear Network log`をクリックして一度ログを消して見やすくします。

![2](/images/2.png)

その後、適当な声を選択して生成させましょう。

すると、いくつかの通信が行われログが出てきます。

最初の`2000ms`程度をフィルタして見てみると画像のような通信ログがあるはずです。(もし数が多い場合は、`Filter`から`token`と検索してください。)

![Test Image](/images/capcut.png)
その中から`POST`で通信している`token`を見つけてください。

その通信のリクエストヘッダーから画像の二つの値、`Device-Time``Sign`をコピーして先ほど作成した`.env`ファイルの各変数へ記入します。

# API Docs
## ベースURL
```
http://<host>:<port>/v1/
```
## エンドポイント
### synthesize
#### リクエスト
```http
GET /v1/synthesize
```
#### クリエパラメーター
| パラメーター || 必須 | 説明 | デフォルト値 |
|--------------|----|------|------|--------------|
| `text` | string | はい | 読み上げるテキスト | - |
| `type` | number | いいえ | 使用する合成音声のタイプ | `0` |
| `pitch` | number | いいえ | 合成された音声のピッチ | `10` |
| `speed` | number | いいえ | 合成された音声のスピード | `10` |
| `volume` | number | いいえ | 合成された音声のボリューム | `10` |
| `method` | string | いいえ | 合成された音声のレスポンスに使用するメソッド<br>`buffer` または `stream` のいずれか | `buffer` |

#### レスポンス
| ステータスコード | 状態 | 説明 | 内容 |
|------------------|------|------|------|
| `200 OK` | 成功 | WAV形式の合成された音声を返します | `buffer` メソッドの場合: 完全なバッファとして音声を返します<br>`stream` メソッドの場合: 音声データをストリーム配信します |
| `400 Bad Request` | エラー | クエリパラメータが不足しています | ```json { "error": "Bad Request" } ``` |
| `500 Internal Server Error` | エラー | 音声生成に問題が発生しました | `buffer` メソッドの場合: ```json { "error": "can't get buffer" } ``` <br>`stream` メソッドの場合: ```json { "error": "can't get stream" } ``` |

#### リクエスト例
```http
GET http://localhost:8080/v1/synthesize?text=こんにちは&type=0&pitch=10&speed=10&volume=10&method=buffer
```

画像にある`token`へのリクエストは、合成音声を**初回生成時**もしくは時間がたってtokenが無効になった際にリクエストされます。
#### レスポンス例
| ステータスコード | Content-Type | 内容 |
|------------------|--------------|------|
| `200 OK` | audio/wav | WAV形式の音声バッファ |

取得する際には開発ツールを開いてから合成音声の生成をしてください。
## Voice Type List
| type | 声の種類 | スピーカーID |
|------|------------------|-------------------------|
| 0 | 謎1 男子1 | BV525_streaming |
| 1 | 謎2 坊や | BV528_streaming |
| 2 | カワボ | BV017_streaming |
| 3 | お姉さん | BV016_streaming |
| 4 | 少女 | BV023_streaming |
| 5 | 女子 | BV024_streaming |
| 6 | 男子2 | BV018_streaming |
| 7 | 坊ちゃん | BV523_streaming |
| 8 | 女子 | BV521_streaming |
| 9 | 女子アナ | BV522_streaming |
| 10 | 男性アナ | BV524_streaming |
| 11 | 元気ロリ | BV520_streaming |
| 12 | 明るいハニー | VOV401_bytesing3_kangkangwuqu |
| 13 | 優しいレディー | VOV402_bytesing3_oh |
| 14 | 風雅メゾソプラノ | VOV402_bytesing3_aidelizan |
| 15 | Sakura | jp_005 |
| その他/入力なし | お姉さん | BV016_streaming |
Binary file added images/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "capcut-tts",
"version": "1.0.0",
"version": "1.2.0",
"description": "",
"main": "index.js",
"scripts": {
Expand Down
6 changes: 3 additions & 3 deletions src/api/getToken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import logger from '../utils/log';

export default async function getToken(): Promise<GetTokenRes | null> {
const headers = new Headers();
headers.append('Appvr', '11.0.0');
headers.append('Appvr', '5.8.0');
headers.append('Device-Time', env.DeviceTime);
headers.append('Pf', '1');
headers.append('Origin', 'https://www.capcut.com');
headers.append('Pf', '7');
headers.append('Sign', env.Sign);
headers.append('Sign-Ver', '1');
headers.append('Tdid', 'web');
headers.append('User-Agent', env.UserAgent);

try {
Expand Down

0 comments on commit dc79e73

Please sign in to comment.