GPTで作る iPhone版 話して!(その2)
OpenAIのGPT-4を使ってApp Inventor 2日本語版のチュートリアルにあるアプリと同じように動くiPhoneアプリを作ります。iPhoneアプリを作るにはMacで動くXcodeという開発環境が必要です。ここではmacOS 13.2.1上でXcode 14.3を使っています。このアプリではスマホを振るというジェスチャーを使うので、動作確認にはiPhone 11実機(iOS 16.4.1)を使いました。
準備
iPhone版 話して!(その1)を動くようにする
iPhone版 話して!(その1)のコードはiOSシミュレータでは動くもののiPhone 11実機では声が聞こえなかったので、以下のようにコードを修正しました。AVAudioSessionをリセットする部分を追加しています。GPT-4に聞いたのですが日本語ではなかなか動くコードを作れなかったので、英語でいろいろ試して最終的にこのコードで動きました。
import SwiftUI
import AVFoundation
struct ContentView: View {
@State private var speechSynthesizer = AVSpeechSynthesizer()
var body: some View {
VStack {
Button(action: {
self.configureAudioSession()
self.speakText("今日は新宿で映画を見よう")
}) {
Text("話して!")
.font(.title)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
}
func configureAudioSession() {
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(.playback, mode: .spokenAudio, options: [])
try audioSession.setActive(true, options: [])
} catch {
print("Failed to configure audio session: \(error.localizedDescription)")
}
}
func speakText(_ text: String) {
let utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
speechSynthesizer.speak(utterance)
}
}
iPhoneの振るジェスチャーを無効にする
iPhoneではデフォルトで振るジェスチャーは入力取り消しをするので、これを以下の手順で無効にします。
iPhoneの設定->アクセシビリティ->タッチ->シェイクで取り消しをOFF
GPT-4とのやり取り
プロンプト
このコードにスマホを振るとテキストフィールドに入力された言葉を話す機能を追加して