How-To

How to Transcribe Zoom, Teams & Google Meet Recordings in Australia

Turn a meeting recording into a searchable, speaker-labelled transcript — without sending your audio offshore. Here's where to find the recording file for each platform, and how to transcribe it on Australian infrastructure.

Why transcribe meeting recordings?

A recording is only as useful as your ability to find things in it. A written transcript makes a meeting searchable, quotable, and skimmable: you can pull out action items, capture decisions, feed the text into meeting notes, or make the discussion accessible to people who couldn't attend. With speaker labels, you also get a clear record of who said what, which is invaluable for interviews, client calls, board meetings, and stakeholder workshops.

There's a privacy consideration that's easy to overlook, though. Meeting recordings very commonly contain personal information: names, opinions, financial and health discussions, and details about third parties. For an Australian organisation, sending that audio to a transcription service hosted overseas can trigger cross-border disclosure obligations under the Privacy Act. We'll come back to that below — but it's the reason this guide focuses on transcribing your recordings on Australian infrastructure.

The good news: meeting recordings are usually saved as .mp4 files, and our API accepts MP4 directly. There's no need to convert or extract the audio first. We also accept MP3, WAV, OGG, FLAC, M4A, and WebM, all via multipart/form-data.

Where to find your recording file

Before you can transcribe a meeting, you need the recording as a file on disk (or a download link). Each platform stores recordings a little differently, but the end result is almost always an MP4 you can download.

Zoom

Zoom recordings come in two flavours. Local recordings are saved straight to the host's computer when the meeting ends — typically an .mp4 video file (plus a separate .m4a audio-only file). Cloud recordings are stored in your Zoom account and can be downloaded from your Zoom recordings library as an MP4. Either way, grab the downloaded file and you're ready to transcribe it.

Microsoft Teams

Teams meeting recordings are saved to Microsoft 365 as MP4 video files. For a scheduled channel meeting the recording generally lands in the associated SharePoint site; for other meetings it's saved to the organiser's OneDrive. Open the recording from the meeting chat or from OneDrive/SharePoint, then download the MP4 to your machine.

Google Meet

Google Meet recordings (available on eligible Google Workspace plans) are saved to the organiser's Google Drive, usually in a "Meet Recordings" folder, as MP4 video files. Open Drive, find the recording, and download it. As with Zoom and Teams, that MP4 is exactly what the API expects.

Transcribing the recording

Once you have the file, transcription is a two-step process. The API is asynchronous: you POST the recording to /api/v1/transcribe and get back a job_id, then poll /api/v1/jobs/{job_id} until the status is complete. Set num_speakers to the number of people in the meeting so the transcript comes back split by speaker.

transcribe_meeting.py
import time
import requests

API_KEY = "your_api_key_here"
BASE_URL = "https://api.icana.ai/api/v1"
HEADERS = {"X-API-Key": API_KEY}


def transcribe_meeting(recording_path: str, num_speakers: int = 3):
    """Submit a meeting recording (e.g. a Zoom/Teams/Meet .mp4) and
    print the diarized, speaker-labelled transcript."""

    # Step 1: Submit the recording. MP4 is accepted directly —
    # no need to extract the audio first.
    with open(recording_path, "rb") as f:
        response = requests.post(
            f"{BASE_URL}/transcribe",
            headers=HEADERS,
            files={"file": f},
            data={"language": "en", "num_speakers": num_speakers},
        )
    response.raise_for_status()
    job_id = response.json()["job_id"]
    print(f"Job submitted: {job_id}")

    # Step 2: Poll until the job is complete.
    while True:
        result = requests.get(f"{BASE_URL}/jobs/{job_id}", headers=HEADERS)
        result.raise_for_status()
        data = result.json()

        status = data["status"]
        print(f"Status: {status}")

        if status == "complete":
            break
        elif status == "failed":
            raise RuntimeError(f"Transcription failed: {data.get('error')}")

        time.sleep(10)

    # Step 3: Print each speaker-labelled segment.
    segments = data.get("diarization", [])
    if not segments:
        print(data.get("transcription", ""))
        return

    for segment in segments:
        speaker = segment.get("speaker", "Unknown")
        start = segment.get("start", 0)
        text = segment.get("text", "")
        stamp = f"{int(start // 60)}:{int(start % 60):02d}"
        print(f"[{speaker} | {stamp}] {text}")


if __name__ == "__main__":
    # A Zoom/Teams/Meet recording downloaded to disk.
    transcribe_meeting("team_standup.mp4", num_speakers=4)

That's the whole flow. Diarization is included at no extra cost, so multi-person meetings come back neatly attributed to each speaker. During Australian business hours most jobs finish in a couple of minutes; outside business hours a cold start can add a little time, but the job always completes in the background regardless of how long you poll.

A note on privacy: keep meeting recordings onshore

Most transcription APIs process audio on US infrastructure. For an Australian organisation, that's a genuine compliance issue rather than a technicality. Meeting recordings routinely contain personal information about Australians, and sending that audio to an overseas server counts as cross-border disclosure under the Privacy Act 1988 (Cth). That triggers APP 8, which requires you to take reasonable steps to ensure the overseas recipient handles the data in line with the Australian Privacy Principles — an obligation most teams aren't set up to manage, and one that a standard vendor contract doesn't automatically satisfy.

Australian Transcription processes all audio exclusively on AWS infrastructure in Sydney (ap-southeast-2). Your recordings never leave the country, so there's no cross-border disclosure and APP 8 is never triggered. You get the transcript you need without having to conduct due diligence on an overseas provider, obtain individual consent, or explain to your customers why their meeting audio is being shipped offshore. For a fuller treatment of the compliance angle, see our explainer on APP 8 and transcription APIs.

Frequently asked questions

Can I transcribe a Zoom recording?

Yes. Whether you recorded locally or to the Zoom cloud, you end up with an audio or video file (usually an .mp4 or .m4a). Download that file, then submit it to the transcription API. We accept MP4 directly, so there's no need to convert it first.

What file format are Teams and Google Meet recordings in?

Both Microsoft Teams and Google Meet save meeting recordings as MP4 video files. Teams recordings land in OneDrive or SharePoint, and Google Meet recordings land in Google Drive. Our API accepts MP4 directly, along with MP3, WAV, OGG, FLAC, M4A, and WebM, so you can upload the recording as-is.

Will it label the different speakers in the meeting?

Yes. Speaker diarization is included at no extra cost. Set the num_speakers parameter (1 to 10, default 2) to the number of people in the meeting, and the transcript comes back split into speaker-labelled segments with timestamps.

Is it private, and does my meeting recording stay in Australia?

Yes. All audio is processed exclusively on AWS infrastructure in Sydney (ap-southeast-2), so your recording never leaves Australia. Because there is no cross-border disclosure, APP 8 obligations under the Privacy Act 1988 (Cth) are never triggered — which matters because meeting recordings often contain personal information about Australians.

How much does it cost to transcribe a meeting recording?

Transcription is $0.02 AUD per minute of audio, with speaker diarization included at no extra charge. New accounts get 60 minutes of transcription free, with no credit card required.

Transcribe your next meeting

Sign up and get 60 minutes of free transcription. No credit card required. Australian data residency included.