Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Call Me

Native iPhone app. Type a reminder, tap Call, and this iPhone rings. When you answer, it reads the message out loud — in a stock voice, or in a saved voice profile you recorded.

Built with Xcode and UIKit only — no SwiftUI, no web view.

Open in Xcode

  1. On a Mac, clone this repo and open CallMe.xcodeproj.
  2. Select the CallMe target → Signing & Capabilities.
  3. Choose your Team. The bundle id is com.ashishsin19.CallMe (change it if Xcode complains).
  4. Plug in an iPhone, or pick an iPhone simulator.
  5. Press Run (⌘R).

Requires Xcode 16+ and iOS 17.

How to use it

  1. On Keypad, type what should be read, or pick a suggestion.
  2. Optionally set the caller name, voice, and delay (Now / 15s / 30s / 1 min / 2 min).
  3. Tap Hear this line to preview, or the green Call button.
  4. Put the phone down. It rings with an Australian dual-tone and vibrates.
  5. Accept — it speaks the script in the chosen voice.
  6. Hang up, or let it finish. The call lands in Recents.

If the phone is locked during a delay, a time-sensitive notification appears. Tap it to pick up.

Saved voices (you or a friend)

This is not a replay of one take. You record a short sample, the app builds a named profile, and later it speaks any new sentence in that voice.

  1. Open Voice and tap Record New Voice.
  2. Name it (for example “Dad” or “Akki”).
  3. Allow the microphone, tap Record, and read the on-screen passage for 4–12 seconds.
  4. Save. The profile is selected automatically.
  5. Type a new reminder on Keypad. Tap Hear this line or Call.

How it works on-device:

  1. The sample is analysed for pitch (F0) and a 14-band spectral envelope.
  2. New text is spoken with Apple’s closest on-device voice.
  3. That speech is pitch-shifted and EQ-coloured to match the saved print.

It will sound closer to the recorded person (pitch and timbre), not a studio neural clone. You can keep up to six saved voices. Swipe to delete one.

What this is not

This app does not place a cellular or FaceTime call. It rings the iPhone it is running on and speaks locally. No carrier required.

Stack

Piece UIKit / system API
Screens UITableView inset grouped, UITabBarController, full-screen call UI
Incoming ring AVAudioEngine 400+450 Hz dual-tone, AudioServices vibrate
Spoken read-aloud AVSpeechSynthesizer
Voice profiles AVAudioRecorder + F0 / envelope print + biquad colouring
Delay while locked UserNotifications
Recents UserDefaults
CallMe/
  AppDelegate.swift
  SceneDelegate.swift
  Models/          Phase, voices, recents store
  Services/        Speech, ringtone, voice print, notifications, call session
  ViewControllers/ Keypad, Recents, record voice, waiting / incoming / in-call / ended
  Views/           Phone.app-style circle buttons

About

Native UIKit iPhone app that rings this device and reads a message aloud.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages