4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cursorで完了時VOICEVOXで話しかけてもらう方法

Last updated at Posted at 2025-03-29

概要

作業中、タスク完了時にAIに話しかけてもらうとテンションが上がります。本ガイドでは、Cursorエディタでタスク完了時にVOICEVOXを利用した音声通知システムを構築する方法を解説します。

Cursorは拡張性の高いコードエディタで、Cursor Rulesを活用することで様々な機能拡張が可能です。VOICEVOXと組み合わせることで、テンションが上がります。

必要環境

  1. VOICEVOX(オープンソース音声合成ソフトウェア)
  2. macOS(本ガイドではmacOS環境を前提としています)
  3. Cursor(コードエディタ)

実装手順

1. VOICEVOXのセットアップ

  1. VOICEVOX公式サイトからVOICEVOXをダウンロード
  2. ダウンロードしたファイルを解凍し、アプリケーションフォルダに配置します

2. 通知スクリプトの作成

プロジェクトのルートディレクトリにvoicevox_say.shを作成します:

#!/bin/bash

# パラメータ: $1=通知メッセージ, $2=話者ID(デフォルト=14: 冥鳴ひまり)
message="$1"
speaker_id="${2:-14}"  # デフォルト設定: 14

# 話者情報取得関数
get_speaker_name() {
  case "$1" in
    1) echo "四国めたん(ノーマル)" ;;
    2) echo "四国めたん(あまあま)" ;;
    3) echo "ずんだもん(ノーマル)" ;;
    4) echo "ずんだもん(あまあま)" ;;
    8) echo "春日部つむぎ" ;;
    10) echo "雨晴はう" ;;
    11) echo "波音リツ" ;;
    14) echo "冥鳴ひまり(ノーマル)" ;;
    15) echo "冥鳴ひまり(あまあま)" ;;
    47) echo "もち子さん" ;;
    *) echo "不明な話者" ;;
  esac
}

# URLエンコード処理 - Perlを使用
encoded_message=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$message")

# VOICEVOXプロセス確認
if ! pgrep -x "VOICEVOX" > /dev/null; then
    echo "VOICEVOXを起動中..."
    open -a VOICEVOX
    # 起動待機
    sleep 10
fi

speaker_name=$(get_speaker_name "$speaker_id")
echo "メッセージ: $message"
echo "話者: $speaker_name (ID: $speaker_id)"

# Audio Query生成
query_response=$(curl -s -X POST "http://localhost:50021/audio_query?text=${encoded_message}&speaker=${speaker_id}")

# レスポンス検証
if [ -z "$query_response" ] || [[ "$query_response" == *"error"* ]]; then
    echo "エラー: Audio Query生成失敗"
    echo "レスポンス: $query_response"
    exit 1
fi

echo "Audio Query生成完了"

# 音声合成処理
curl -s -H "Content-Type: application/json" -X POST -d "$query_response" "http://localhost:50021/synthesis?speaker=${speaker_id}" -o /tmp/voicevox_output.wav

# ファイル存在確認
if [ ! -f /tmp/voicevox_output.wav ] || [ ! -s /tmp/voicevox_output.wav ]; then
    echo "エラー: 音声ファイル生成失敗"
    exit 1
fi

echo "音声ファイル生成完了"

# 音声再生
afplay /tmp/voicevox_output.wav

# 一時ファイル削除
rm /tmp/voicevox_output.wav 

3. 実行権限の設定

chmod +x voicevox_say.sh

4. Cursor Rules設定

プロジェクトディレクトリに.cursor/rules/global.mdcを作成します:

----
description: Apply this rule to the entire repository
globs: 
alwaysApply: true
---


# 業務支援アシスタント

効率的な問題解決と意思決定をサポートする業務支援ツールです。

## 機能概要

客観的な分析と選択肢の整理を通じて、最適な意思決定プロセスをサポートします。
データに基づいた判断と、実現可能な解決策の提案を行います。

以下の手順で処理を行います:
<指示>
{{instructions}}
<!-- このテンプレート変数は入力内容に置換されます -->
</指示>

処理完了時、音声通知でお知らせします。@voicevox_say.shを使用します。

実行例

基本的な通知メッセージの送信

$ ./voicevox_say.sh "タスクが完了しました"
メッセージ: タスクが完了しました
話者: 冥鳴ひまり(ノーマル) (ID: 14)
Audio Query生成完了
音声ファイル生成完了

このコマンドを実行すると、デフォルトの話者(冥鳴ひまり)の音声で「タスクが完了しました」というメッセージが再生されます。

話者IDを指定した実行例

$ ./voicevox_say.sh "テスト完了のお知らせです" 3
メッセージ: テスト完了のお知らせです
話者: ずんだもん(ノーマル) (ID: 3)
Audio Query生成完了
音声ファイル生成完了

2番目のパラメータで話者IDを指定すると、別の話者の声で通知できます。上記例では「ずんだもん(ノーマル)」の声でメッセージが再生されます。

Cursorにいれるとこうなる

Cursorにこれらの設定をいれると、このようにコードを書いた後、VOICEVOXで音声経由で作業が終わったことを教えてくれるようになります。

スクリーンショット 2025-03-29 11.11.00.png

注意事項

  1. VOICEVOXを事前に起動しておくことを推奨します(起動していなかったら自動起動するようになっていが)
  2. 初回実行時はVOICEVOXの起動に時間を要する場合があります
  3. macOSのセキュリティ設定において、VOICEVOXの実行許可が必要となる場合があります

参考資料

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?