Notionのデータベースに保存した内容を、クリック一つなどの最低限の操作で、ローカルにインストールしたVoiceVoxを使って音声化する方法はありますか?なお必要な場合に使用するスクリプトにはPowerShellを使用してください。

Notionのデータベースの内容をVoiceVoxで音声化するには、以下の手順でPowerShellスクリプトを構築することが可能です。


1. 必要な準備

(1) Notion APIトークンの取得

NotionのAPIを利用するため、Notion Developerにアクセスし、APIトークンを取得します。また、使用するデータベースに対してトークンのアクセス権を設定してください。

(2) VoiceVoxのセットアップ

(3) PowerShell環境の確認

以下のモジュールがPowerShellで利用可能であることを確認します。


2. スクリプト構築

以下の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"
}


3. スクリプトの実行方法

  1. PowerShellで上記スクリプトをファイル(例: NotionToVoiceVox.ps1)として保存します。