プロモーション動画にぴったりな声をAIでデザインする

プロモーション動画にぴったりな声をAIでデザインするプロモーション動画にぴったりな声をAIでデザインする

はじめに

こんにちは、プロダクトマネジメント部の髙橋です。
🎬 まずはこちらの動画をご覧ください。

ちなみに…このヌーマンの声もAIで作ってます。
かなり自然な音声ではないでしょうか。このブログでは、このような音声の作り方や、使用に至るまでの経緯についてお伝えします。

この記事はヌーラボブログリレー2025夏の5日目の記事として投稿しています。

使用までの経緯

弊社サービスのユーザー調査で、サービスを説明するためのプロモーション動画を作ることになりました。
動画の内容は準備できたのですが、課題は 「ナレーションをどうするか」
考えられる選択肢は大きく3つありました。

  • プロのナレーターに依頼する
    → クオリティは高いけれど、コストや準備の手間が大きい。
  • 自分の声で収録する
    → 最も手軽だけど、めちゃくちゃ恥ずかしい。これだけは絶対に避けたい。
  • TTS(Text-to-Speech)で生成する
    → 手軽だが、既存サービスは棒読み感が強く、単調で聞いていて眠くなってしまう。さらに、棒読みや不自然な発音に気を取られて、本来集中してほしい動画の内容ではなく「声の違和感」に意識が奪われてしまう

どの方法も一長一短。
そこで「生成AIを使って、雰囲気や声色までコントロールできるナレーションを作れないか?」と考えたのが今回の挑戦でした。

まず目的として

今回の動画の目的はシンプルです。

  • サービスについて、ユーザーに「共感」してもらう
  • どんなサービスかを「理解」してもらう
  • 最終的に「使ってみたい」と思ってもらう

つまり、単に機能を紹介するのではなく、
「共感 → 理解 → 期待」 という感情の流れをつくることがゴールでした。

課題

ナレーションは文章以上に「声の雰囲気」が印象を左右します。

例えば、同じ文章でも:

  • 明るくハキハキ → 期待感や前向きさを与える
  • 落ち着いた低音 → 信頼感や安心感を与える
  • 丁寧な説明口調 → 理解を助ける

従来のTTS(Text-to-Speech)は「声の種類」は選べても、
「共感できるか」「理解できるか」「使ってみたいと思えるか」 という目的に合わせた声色の設計までは難しいのが現状です。

今回のアプローチ

伝えたいことから逆算する

今回の調査で目指したのは「聞き手に共感・理解・期待を持たせる声」。
具体的にはこんなイメージです:

具体的にはこんなイメージです:

  • Affect / personality(人柄): 親しみやすく、頼れるガイド。聞き手に寄り添いながら案内する存在。
  • Tone(声のトーン): フレンドリーで明瞭、安心感を与える。落ち着いた雰囲気を保ちつつも、前向きさや期待感を自然に伝える。
  • Pronunciation(話し方): はっきりと丁寧で安定しており、一文一文が聞き取りやすい。過度に演技的にならず、自然な会話調を意識する。
  • Pause(一呼吸の置き方): 重要なポイントや理解してほしい部分の直後に短い間を置く。これにより情報が整理され、次の言葉に集中できる。
  • Emotion(感情のニュアンス): 温かくサポートするような雰囲気で、聞き手に「共感されている」「理解できた」「ちょっと使ってみたい」と思わせる。

ツール構成

  • 音声生成:OpenAI TTS API(モデル・声質指定)
  • 動画作成:Keynoteのプレゼンテーションモードでスライド録画
  • 編集:iMovieで音声と映像を合成

実装ステップ

今回はNode.jsで実装しました。

import 'dotenv/config';
import fs from "fs";
import path from "path";
import OpenAI from "openai";

// ファイル名に使えない文字を除去・整形する関数
const sanitizeFileName = (input: string): string => {
  return input
    .replace(/[\/\\:*?"<>|]/g, "")   // 禁止文字を削除
    .replace(/\s+/g, "_")            // 空白をアンダースコアに
    .slice(0, 30)                    // 最大30文字に制限
    .trim();
};

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY_NULAB });

const generateTTSFromFile = async () => {
  await fs.promises.mkdir("voices", { recursive: true });

  const text = await fs.promises.readFile("voice.txt", "utf-8");
  const lines = text.split(/\r?\n/).filter((line) => line.trim() !== "");
  const instructions = `Affect / personality: 親しみやすく、頼れるガイド。聞き手に寄り添いながら案内する存在。
Tone: フレンドリーで明瞭、安心感を与える。落ち着いた雰囲気を保ちつつも、前向きさや期待感を自然に伝える。
Pronunciation: はっきりと丁寧で安定しており、一文一文が聞き取りやすい。過度に演技的にならず、自然な会話調を意識する。
Pause: 重要なポイントや理解してほしい部分の直後に短い間を置く。これにより情報が整理され、次の言葉に集中できる。
Emotion: 温かくサポートするような雰囲気で、聞き手に「共感されている」「理解できた」「ちょっと使ってみたい」と思わせる。`


  for (const line of lines) {
    const sanitized = sanitizeFileName(line);
    const filename = path.resolve("voices", `${sanitized}.mp3`);

    console.log(`🎙️ Generating audio for: ${line}`);

    const response = await openai.audio.speech.create({
      model: 'gpt-4o-mini-tts',
      voice: "sage",
      input: line,
      instructions,
    });

    const buffer = Buffer.from(await response.arrayBuffer());
    await fs.promises.writeFile(filename, buffer);

    console.log(`✅ Saved: ${filename}`);
  }
};

generateTTSFromFile().catch(console.error);

 

GitHubリポジトリはこちら:generate-narration
ちなみに、手っ取り早く試したい!というかたはOpenAIが公式でツールを出しています。こちらは無料で使えるのでご興味ある方はお試しください!
OpenAI.fm

 

動作確認 & 編集

ユーザー調査用の動画はお見せできませんが、冒頭のヌーマンの動画のキャプチャと一緒にご紹介します。

  1. Keynoteで動画素材作成
    • スライドをプレゼンモードで録画
    • Keynote編集次のキャプチャKeynote編集次のキャプチャ

  2. iMovieで音声差し込み
    • AI生成した音声ファイルを読み込み、スライド動画に合わせる
    • iMovie編集時のキャプチャiMovie編集時のキャプチャ

  3. 各所調整
    • タイミング調整
    • アニメーション追加
    • SE追加など

まとめ

今回、生成AIを使ってプロモーション動画のナレーションを作るという取り組みをしてみて感じたのは、動画制作って想像以上に大変だということです。
音声を用意して、映像に合わせて編集して、細かいタイミングを調整して……。やってみて初めて、テレビディレクターやYouTuberといった人たちの凄さを実感しました。

同時に、作業の中でYouTubeでよく聞く効果音(SE)の出所を知れたのも面白い発見でした。身近で聞いていた音が、実はこんなところから来ていたのかと。

そして、今回の一番の収穫は、やはりAIナレーションの可能性です。声のバリエーションが豊富で、目的に合わせた”ぴったりな声”を作ることができます。クオリティもかなり高く、人間が話すときの細かな息継ぎまで再現されていました。おかげで「声」という大きなハードルが一気に下がり、動画を完成させることができました。

次に動画を作るときは、この経験を活かして「より伝わる動画」に挑戦してみたいと思います。
……とにかく、生成AIすごい!!

おまけ:声色・雰囲気比較

生成AIナレーションは、指示の書き方次第で驚くほど雰囲気が変わります。
どれくらい違うかをぜひ体感してみてください!

明るくハキハキ

指示

  • Voice: 明るくハリのある声、若々しいトーン
  • Tone: 前向きでエネルギッシュ
  • Personality: 聞き手を巻き込む熱量と親しみやすさ
  • Pronunciation: ハキハキ、強調部分は少し大げさに
  • Phrasing: テンポよく、語尾を上げて盛り上げる

セリフ

「みなさん!お待たせしました!いよいよ、新しいサービスの登場です!
これで、あなたの毎日がもっとワクワクするはずです!」

落ち着いた低音

指示

  • Voice: 落ち着いた低めの声
  • Tone: 穏やかで安心感のあるトーン
  • Personality: 信頼できるガイドのような存在感
  • Pronunciation: ゆっくりめ、言葉を噛みしめるように
  • Phrasing: 余白を持たせ、聞き手に寄り添うリズム

セリフ

「日々の業務、お疲れさまです。
このサービスは、あなたの負担を減らし、安心して仕事に取り組めるように設計されています。」

丁寧な説明口調

指示

  • Voice: 明瞭で丁寧な声、やや高め
  • Tone: 優しくフラット、聞き取りやすい
  • Personality: 教室で教える先生のように親しみやすい
  • Pronunciation: はっきり区切り、専門用語もわかりやすく
  • Phrasing: ステップごとに区切って説明

セリフ

「まず、画面右上の『新規作成』ボタンをクリックしてください。
次に表示されるフォームに、タイトルを入力しましょう。」

番外編:世界征服を企む悪役

指示

  • Voice: 低く響く声、誇張された演技
  • Tone: 劇的で威圧感のあるトーン
  • Personality: 自信満々で狂気を帯びた悪役キャラ
  • Pronunciation: 強弱を極端に、笑いを交える
  • Phrasing: ゆっくりと溜めてから爆発的に発声

セリフ

「フハハハ!ついに完成したぞ!
このサービスで、世界の仕事を我が手に収めてやる!」

開発メンバー募集中

より良いチームワークを生み出す

チームの創造力を高めるコラボレーションツール

製品をみる