Upgrade to Pro — share decks privately, control downloads, hide ads and more …

夢の声優体験!パーソナルボイスでゲームのキャラクターをあなたの声で喋らせる

 夢の声優体験!パーソナルボイスでゲームのキャラクターをあなたの声で喋らせる

皆さんは声優さんになりたいと思ったことはありませんか?例えば、自分が声を当てたキャラクターがゲームで活躍する妄想をすると、ワクワクしてこないでしょうか。しかし、アフレコの実力や膨大な文章の収録などの技術面・コスト面の障壁があり、素人がキャラクターに声を当てるのは簡単ではありません。

本トークでは、誰でも自分の声のキャラクターをアプリに登場させる手段として、iOS 17にて追加されたアクセシビリティ機能「パーソナルボイス」を使用し、ユーザの声で自由に語句を発話させる方法について説明します。また、「誰でもゲームアプリ声優になれるアプリ」のデモを通じて、パーソナルボイスの実際の活用例をご紹介します。

具体的には次のトピックについて話します:

- AVSpeechSynthesizerを使用して学習したパーソナルボイスで発話させる方法
- AVSpeechSynthesisVoiceで定義された他の音声合成機能との共存方法
- パーソナルボイスを活用したゲームアプリの実例
- パーソナルボイス導入における課題

このトークを通じて、iOSの「パーソナルボイス」の導入および利活用方法と、ゲームキャラクターに命を吹き込む新しい方法を理解していただけます。「パーソナルボイス」があなたのアプリに「自分の声での発話」という新しい価値をもたらし、多くのユーザの夢を叶える一助となれば幸いです。

デモ動画はこちら: https://x.com/kuromelon257/status/1827001882797318431
iOSDC Japan 2024: https://fortee.jp/iosdc-japan-2024/proposal/753db2ce-ca26-4bc8-868d-705e0d771705

Other Decks in Technology

Transcript

  1. ࣄલ४උ: ύʔιφϧϘΠεͷ࿥Իɾֶश 1. [ઃఆ] -> [ΞΫηγϏϦςΟ] -> [ύʔιφϧϘΠε] 2. ର৅ݴޠͷ150छͷจষΛԻಡ͠࿥Ի

    3. ֶशͷͨΊະ࢖༻ঢ়ଶʢϩοΫঢ়ଶ ͔ͭ ॆిதʣͰ਺࣌ؒ์ஔ It’s more than two and a half miles deep. x150
  2. ࣄલ४උ: ύʔιφϧϘΠεͷ࿥Իɾֶश 1. [ઃఆ] -> [ΞΫηγϏϦςΟ] -> [ύʔιφϧϘΠε] 2. ର৅ݴޠͷ150छͷจষΛԻಡ͠࿥Ի

    3. ֶशͷͨΊະ࢖༻ঢ়ଶʢϩοΫঢ়ଶ ͔ͭ ॆిதʣͰ਺࣌ؒ์ஔ I'm speaking using the personal voice.
  3. खॱ1: ύʔιφϧϘΠεͷ࢖༻ڐՄ • AVSpeechSynthesizer ͷΫϥεϝιου requestPersonalVoiceAuthorization ͷ࣮ߦ /// ύʔιφϧϘΠεͷ࢖༻ڐՄΛٻΊΔ @available(iOS

    17.0, *) public func requestPersonalVoiceAuthorization() { AVSpeechSynthesizer.requestPersonalVoiceAuthorization { ɹɹɹɹɹɹɹ[weak self] status in guard let self = self else { return } switch status { case .authorized: print("ύʔιφϧϘΠεͷ࢖༻͕ڐՄ͞Ε·ͨ͠") case .denied: print("ύʔιφϧϘΠεͷ࢖༻͕ڋ൱͞Ε·ͨ͠") // ...লུ... } } }
  4. • AVSpeechSynthesisVoice ͷΫϥεϝιου speechVoices Ͱ ಡ্ՄೳͳϘΠεΛऔಘ • isPersonalVoice ͰϑΟϧλϦϯά खॱ2:

    ୺຤ͷύʔιφϧϘΠεΛऔಘ /// ࢦఆ͞ΕͨݴޠͷύʔιφϧϘΠεΛऔಘ͠·͢ɻ @available(iOS 17.0, *) func getPersonalVoices(for lang: VoiceLanguage) -> [AVSpeechSynthesisVoice] { AVSpeechSynthesisVoice.speechVoices().filter { $0.voiceTraits.contains(.isPersonalVoice) && $0.language == lang.rawValue } }
  5. • AVSpeechSynthesisVoice: Ի੠߹੒༻ͷΫϥε • ྫ1. Siriͷ੠ • ྫ2. NoveltyVoice (iOS17+):

    • ήʔϜ༻ͷ੠ɻμϛ੠ɺস͍੠ɺҖ෩ಊʑΛՎͬͨΓ15छ खॱ2: ୺຤ͷύʔιφϧϘΠεΛऔಘ
  6. • AVSpeechUtterance ʹऔಘͨ͠ AVSpeechSynthesisVoice ͱςΩετΛઃఆ • AVSpeechSynthesizer ͷ speak ϝιουʹઃఆࡁΈ

    AVSpeechUtterance Λ౉͢ खॱ3: AVSpeechSynthesizerͰಡΈ্͛ Siriͷ੠ɺNoveltyVoice ΋࢖༻Մೳ let synthesizer = AVSpeechSynthesizer() /// ࢦఆ͞ΕͨςΩετΛࢦఆ͞ΕͨԻ੠ͰಡΈ্͛·͢ɻ func speak(_ text: String, voice: AVSpeechSynthesisVoice) { let utterance = AVSpeechUtterance(string: text) utterance.voice = voice // ϐονʢԻͷߴ͞ʣɺσϑΥϧτ஋͸1.0ʢൣғ: 0.5ʙ2.0ʣ utterance.pitchMultiplier = 1.0 utterance.rate = AVSpeechUtteranceDefaultSpeechRate // ಡΈ্͛଎౓ utterance.volume = 1.0 // ԻྔɺσϑΥϧτ஋͸1.0ʢൣғ: 0.0ʙ1.0ʣ synthesizer.speak(utterance) }
  7. ࣗݾ঺հ • Ԭຊ ཾଠ࿠ʢ͓͔΋ͱ ΓΎ͏ͨΖ͏ʣ • 𝕏 : @kuromelon257 •

    LINEϠϑʔגࣜձࣾ • Yahoo!ϑϦϚ ( چ PayPayϑϦϚ ) iOS୲౰ • #ҭٳத👶 #ήʔϜ։ൃ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠