// create a text field to show speech output
@IBOutlet weak var transcriptionTextField: UITextView!
// we need this audio player to play audio
var audioPlayer: AVAudioPlayer!
override func viewDidLoad()
// this function is required to stop audio on audio completion otherwise it will play same audio again and again
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool)
// this function is required to get a speech recognizer and after that make and request to speech recognizer
SFSpeechRecognizer.requestAuthorization { authStatus in
if authStatus == SFSpeechRecognizerAuthorizationStatus.authorized {
if let path = Bundle.main.url(forResource: "mpthreetest", withExtension: "m4a") {
let sound = try AVAudioPlayer(contentsOf: path)
self.audioPlayer.delegate = self
let recognizer = SFSpeechRecognizer()
let request = SFSpeechURLRecognitionRequest(url:path)
recognizer?.recognitionTask(with: request) { (result, error) in
print("there is a error\(error)")
// here you are printing out the audio output basically showing it on uitext field
self.transcriptionTextField.text = result?.bestTranscription.formattedString
// here you are calling requestSpeechAuth function on UIButton press
@IBAction func playButtonPress(_ sender: AnyObject)