Notionのデータベースの内容をVoiceVoxで音声化するには、以下の手順でPowerShellスクリプトを構築することが可能です。
NotionのAPIを利用するため、Notion Developerにアクセスし、APIトークンを取得します。また、使用するデータベースに対してトークンのアクセス権を設定してください。
以下のモジュールがPowerShellで利用可能であることを確認します。
Invoke-WebRequest
(デフォルトで利用可能)Invoke-RestMethod
(デフォルトで利用可能)以下のPowerShellスクリプトを作成します。
# Notion API設定
$notionToken = "YOUR_NOTION_API_TOKEN" # Notion APIトークン
$databaseId = "YOUR_DATABASE_ID" # NotionのデータベースID
$apiUrl = "<https://api.notion.com/v1/databases/$databaseId/query>"
# VoiceVox設定
$voicevoxUrl = "<http://127.0.0.1:50021>" # VoiceVoxのローカルサーバーURL
$speakerId = 1 # VoiceVoxで使用するスピーカーID(デフォルトで四国めたん)
# Notionデータベースからデータ取得
$response = Invoke-RestMethod -Uri $apiUrl -Method POST -Headers @{
"Authorization" = "Bearer $notionToken"
"Content-Type" = "application/json"
"Notion-Version" = "2022-06-28"
}
# データベースの内容を抽出(テキストデータのみ対象とする)
$textData = $response.results | ForEach-Object {
$_.properties.Name.title.plain_text
}
# データをVoiceVoxで音声化
foreach ($text in $textData) {
# 音声クエリ作成
$queryResponse = Invoke-RestMethod -Uri "$voicevoxUrl/audio_query" -Method POST -Body @{
text = $text
speaker = $speakerId
} -ContentType "application/json"
# 音声ファイル生成
$audioFilePath = "./output_${text.GetHashCode()}.wav"
Invoke-RestMethod -Uri "$voicevoxUrl/synthesis?speaker=$speakerId" -Method POST -Body ($queryResponse | ConvertTo-Json -Depth 10) -ContentType "application/json" -OutFile $audioFilePath
Write-Host "音声ファイルを生成しました: $audioFilePath"
}
NotionToVoiceVox.ps1
)として保存します。