From c345538243c7dc9d7df48f7f6cdfd8a4d2dd16ed Mon Sep 17 00:00:00 2001 From: Michael Ikehi Date: Thu, 24 Apr 2025 10:15:13 +0100 Subject: [PATCH] Add tiered summarization based on pricing plans - Implement advanced AI summarization with action items for Pro plan - Create basic bullet-point summarization for Freemium plan - Add plan tier validation and feature differentiation - Support speaker identification in transcripts - Define plan limits (600 mins Pro/200 mins Freemium) --- .gitignore | 170 ++ API_DOCUMENTATION.md | 368 +++ README.md | 2 + app.py | 176 ++ config.py | 0 docs/transcript.txt | 0 notebooks/Untitled-1.txt | 5563 +++++++++++++++++++++++++++++++++++ notebooks/test.py | 5 + notebooks/trials.ipynb | 5563 +++++++++++++++++++++++++++++++++++ requirements.txt | 28 + scripts/generate_summary.py | 61 + scripts/transcriber.py | 190 ++ src/models.py | 44 + src/prompt.py | 206 ++ src/utils.py | 6 + test1.py | 102 + 16 files changed, 12484 insertions(+) create mode 100644 .gitignore create mode 100644 API_DOCUMENTATION.md create mode 100644 README.md create mode 100644 app.py create mode 100644 config.py create mode 100644 docs/transcript.txt create mode 100644 notebooks/Untitled-1.txt create mode 100644 notebooks/test.py create mode 100644 notebooks/trials.ipynb create mode 100644 requirements.txt create mode 100644 scripts/generate_summary.py create mode 100644 scripts/transcriber.py create mode 100644 src/models.py create mode 100644 src/prompt.py create mode 100644 src/utils.py create mode 100644 test1.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0dbf2f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,170 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +#uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + diff --git a/API_DOCUMENTATION.md b/API_DOCUMENTATION.md new file mode 100644 index 0000000..0b9f573 --- /dev/null +++ b/API_DOCUMENTATION.md @@ -0,0 +1,368 @@ +# Microdot AI API Documentation + +## Overview + +Microdot AI provides a powerful API for transcribing audio/video content and generating AI-powered summaries. The API supports different pricing tiers with varying features and capabilities. + +## Base URL + +``` +https://api.microdot.ai +``` + +## Authentication + +All API requests require authentication using a Bearer token. + +``` +Authorization: Bearer YOUR_API_KEY +``` + +## Endpoints + +### 1. Transcribe Media + +Transcribes audio or video content from a URL. + +**Endpoint:** `/microdot-ai/transcribe` + +**Method:** POST + +**Request Body:** + +```json +{ + "media_url": "https://example.com/audio-file.mp3", + "media_type": "audio" // "audio" or "video" +} +``` + +**Response:** + +```json +{ + "transcript": { + "sentences": [ + { + "sentence": "Hello and welcome to the meeting.", + "speaker": "speaker_0", + "start": 0.0, + "end": 2.5, + "words": [ + { + "word": "Hello", + "start": 0.0, + "end": 0.4 + }, + // Additional words... + ] + }, + // Additional sentences... + ] + } +} +``` + +### 2. Generate General Summary + +Generates a summary of a transcript based on the user's plan tier. + +**Endpoint:** `/microdot-ai/general-summary` + +**Method:** POST + +**Request Body:** + +```json +{ + "transcript": "JSON_STRING_OF_TRANSCRIPT", + "plan_tier": "pro" // "freemium" or "pro" +} +``` + +#### Freemium Plan Response: + +```json +{ + "transcript": { + "Key_Points": [ + { + "text": "Team discussed Q3 marketing strategy.", + "timestamp": 120.5 + }, + { + "text": "Budget approval needed by Friday.", + "timestamp": 360.2 + }, + { + "text": "New product launch delayed until September.", + "timestamp": 480.7 + } + ], + "Summary": { + "text": "Marketing team meeting to review Q3 plans and budget requirements. Team agreed on strategy but product launch delayed.", + "duration_minutes": 15.5 + } + } +} +``` + +#### Pro Plan Response: + +```json +{ + "transcript": { + "Purpose": { + "text": "Discuss project progress and define upcoming milestones." + }, + "Chapters": { + "minutes_total": 3, + "content": [ + { + "chapter": "Project Overview", + "time_stamp": {"start": 5.12, "end": 5.68}, + "content": [ + {"text": "- overview of the project's objectives.", "original_transcript_start": 3.4, "original_transcript_end": 5.7}, + // Additional content... + ], + "words_time_stamp": [ + {"word": "Project", "timestamp": 5.12}, + {"word": "Overview", "timestamp": 5.12} + ] + }, + // Additional chapters... + ] + }, + "Outcomes": { + "minutes_total": 3, + "content": [ + // Outcome content... + ] + }, + "Action_Items_Per_User": [ + { + "speaker": "Speaker_A", + "minutes_total": 3, + "action_items": [ + // Action items... + ] + } + ] + } +} +``` + +### 3. Generate Template Summary + +Generates a custom summary based on a user-defined template. + +**Endpoint:** `/microdot-ai/template-summary` + +**Method:** POST + +**Request Body:** + +```json +{ + "transcript": "JSON_STRING_OF_TRANSCRIPT", + "template": "JSON_STRING_OF_TEMPLATE" +} +``` + +**Example Template:** + +```json +{ + "Key_Points": "Summarize the most critical discussion points from the meeting.", + "Summary": "Provide a brief overall summary of what was discussed.", + "Next_Steps": "List the next steps decided during the meeting, including any action items." +} +``` + +**Response:** + +```json +{ + "transcript": { + "Key_Points": { + "minutes_total": 3.5, + "content": [ + { + "text": "Introductions between Diane Taylor and Cody Smith.", + "time_stamp": {"start": 5.12, "end": 5.68}, + "words_time_stamp": [ + {"word": "Introductions", "timestamp": 5.12}, + // Additional words... + ] + } + ] + }, + "Summary": { + // Summary content... + }, + "Next_Steps": { + // Next steps content... + } + } +} +``` + +## Plan Features + +### Freemium Plan + +- 200 minutes of transcription per month +- Basic AI summarization (short bullet points) +- 7-day transcript history +- Limited integrations (Google Meet & Zoom only) + +### Pro Plan + +- 600 minutes of transcription per month +- Advanced AI summarization with action items +- Speaker identification +- 30-day transcript history +- Multi-platform integrations (Slack, Notion, Asana, Microsoft Teams) + +## Error Responses + +All endpoints return standard HTTP status codes: + +- `200 OK`: Request successful +- `400 Bad Request`: Invalid request parameters +- `401 Unauthorized`: Invalid or missing API key +- `500 Internal Server Error`: Server-side error + +Error response format: + +```json +{ + "detail": { + "error": "Error type", + "message": "Detailed error message" + } +} +``` + +## Rate Limits + +- Freemium Plan: 100 requests per day +- Pro Plan: 1000 requests per day + +Exceeding your plan's transcription minutes will result in a `402 Payment Required` response until the next billing cycle. + +## Code Examples + +### Python + +```python +import requests +import json + +# API endpoint +base_url = "https://api.microdot.ai" + +# Your API key +api_key = "your_api_key_here" + +# Headers +headers = { + "Authorization": f"Bearer {api_key}", + "Content-Type": "application/json" +} + +# 1. Transcribe an audio file +transcribe_payload = { + "media_url": "https://example.com/meeting-recording.mp3", + "media_type": "audio" +} + +transcribe_response = requests.post( + f"{base_url}/microdot-ai/transcribe", + headers=headers, + json=transcribe_payload +) + +# Check if transcription was successful +if transcribe_response.status_code == 200: + transcript_data = transcribe_response.json() + transcript_json = json.dumps(transcript_data["transcript"]) + + # 2. Generate a summary (Pro plan) + summary_payload = { + "transcript": transcript_json, + "plan_tier": "pro" + } + + summary_response = requests.post( + f"{base_url}/microdot-ai/general-summary", + headers=headers, + json=summary_payload + ) + + if summary_response.status_code == 200: + summary_data = summary_response.json() + print("Summary generated successfully!") + print(json.dumps(summary_data["transcript"], indent=2)) + else: + print(f"Summary generation failed: {summary_response.text}") +else: + print(f"Transcription failed: {transcribe_response.text}") +``` + +### JavaScript + +```javascript +const axios = require('axios'); + +// API endpoint +const baseUrl = 'https://api.microdot.ai'; + +// Your API key +const apiKey = 'your_api_key_here'; + +// Headers +const headers = { + 'Authorization': `Bearer ${apiKey}`, + 'Content-Type': 'application/json' +}; + +// 1. Transcribe an audio file +const transcribeAudio = async () => { + const transcribePayload = { + media_url: 'https://example.com/meeting-recording.mp3', + media_type: 'audio' + }; + + try { + const transcribeResponse = await axios.post( + `${baseUrl}/microdot-ai/transcribe`, + transcribePayload, + { headers } + ); + + const transcriptData = transcribeResponse.data; + const transcriptJson = JSON.stringify(transcriptData.transcript); + + // 2. Generate a summary (Pro plan) + const summaryPayload = { + transcript: transcriptJson, + plan_tier: 'pro' + }; + + const summaryResponse = await axios.post( + `${baseUrl}/microdot-ai/general-summary`, + summaryPayload, + { headers } + ); + + console.log('Summary generated successfully!'); + console.log(JSON.stringify(summaryResponse.data.transcript, null, 2)); + + } catch (error) { + console.error('Error:', error.response ? error.response.data : error.message); + } +}; + +transcribeAudio(); +``` diff --git a/README.md b/README.md new file mode 100644 index 0000000..d13d593 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# ds_microdot + diff --git a/app.py b/app.py new file mode 100644 index 0000000..174a9ba --- /dev/null +++ b/app.py @@ -0,0 +1,176 @@ +import os +from typing import Optional +from fastapi import FastAPI, HTTPException, Security, Depends +from fastapi.security import APIKeyHeader +from fastapi.middleware.cors import CORSMiddleware +from dotenv import load_dotenv +import json +from pydantic import BaseModel +from fastapi import HTTPException +import os +from scripts.transcriber import transcribe_media, group_words_into_sentences +from scripts.generate_summary import general_summary, custom_summary +from src.models import PlanTier, PlanLimits +# Load environment variables +load_dotenv() +API_KEY = os.getenv("API_KEY_ACCESS") + +# Initialize FastAPI app +app = FastAPI( + title="Microdot AI API", + description="API For fire fighter", + version="1.0.0" +) + +# Add CORS middleware +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# Setup API key authentication +api_key_header = APIKeyHeader(name="Authorization", auto_error=False) + + +async def get_api_key(api_key_header: str = Security(api_key_header)) -> str: + """Validate API key from header""" + if not api_key_header or not api_key_header.startswith('Bearer '): + raise HTTPException( + status_code=401, + detail={"error": "Unauthorized", "message": "API key is missing or invalid."} + ) + + token = api_key_header.split(' ')[1] + if token != API_KEY: + raise HTTPException( + status_code=401, + detail={"error": "Unauthorized", "message": "API key does not match."} + ) + + return token + +class TranscribeRequest(BaseModel): + media_url: Optional[str] = None + media_type: Optional[str] # Corrected type hint for media_type + +class ChatResp(BaseModel): # Added BaseModel inheritance + error: Optional[str] = None +class TranscriptResponse(BaseModel): + transcript: dict # Changed type hint for transcript to a dictionary + + + +class GeneralSummaryRequest(BaseModel): + transcript: Optional[str] = None + plan_tier: Optional[str] = "pro" # Default to pro plan if not specified + +class TemplateSummaryRequest(BaseModel): + transcript: Optional[str] = None + template: Optional[str] = None + + +@app.post("/microdot-ai/transcribe") +async def chat_endpoint( + request: TranscribeRequest, + api_key: str = Depends(get_api_key) +): + try: + + # Use the transcribe_media function to transcribe the media + if request.media_url: + transcription_response = transcribe_media(request.media_url, media_type=request.media_type) + if transcription_response is None: + raise HTTPException(status_code=500, detail="Transcription failed.") + print(f"Transcription response: {transcription_response}") # Debugging print + + # Parse response + words = transcription_response["results"]["channels"][0]["alternatives"][0]["words"] + transcript = group_words_into_sentences(words=words) + return TranscriptResponse( + transcript=transcript, # Corrected to return the transcript + error=None + ) + + except Exception as e: + print(f"Error processing chat request: {str(e)}") # Print statement added + raise HTTPException( + status_code=500, + detail=f"Error processing chat request: {str(e)}" + ) + + +@app.post("/microdot-ai/general-summary") +async def general_summary_endpoint( + request: GeneralSummaryRequest, + api_key: str = Depends(get_api_key) +): + try: + if not request.transcript: + raise HTTPException(status_code=400, detail="Transcript is required.") + + # Get the plan tier from the request or default to pro + plan_tier = request.plan_tier.lower() if request.plan_tier else "pro" + + # Validate plan tier using our PlanTier enum + valid_tiers = [t.value for t in PlanTier] + if plan_tier not in valid_tiers: + plan_tier = PlanTier.PRO.value # Default to pro if invalid tier + + # Get the appropriate summary type for this plan tier + summary_type = PlanLimits.get_limit(plan_tier, "summary_type") + + # Generate the summary based on the plan tier + response = general_summary(json.loads(request.transcript), plan_tier=plan_tier) + + return TranscriptResponse( + transcript=response + ) + + except Exception as e: + print(f"Error processing general summary request: {str(e)}") + raise HTTPException( + status_code=500, + detail=f"Error processing general summary request: {str(e)}" + ) + + +@app.post("/microdot-ai/template-summary") +async def template_summary_endpoint( # Corrected function name to avoid conflict + request: TemplateSummaryRequest, + api_key: str = Depends(get_api_key) +): + try: + if not request.transcript: + raise HTTPException(status_code=400, detail="Transcript is required.") + + if not request.template: + raise HTTPException(status_code=400, detail="Template is required.") + + transcript = json.loads(request.transcript) + template = json.loads(request.template) # Removed the check for missing template as it's now required + response = custom_summary(template, transcript) + + return TranscriptResponse( + transcript=response + ) + + except Exception as e: + print(f"Error processing template summary request: {str(e)}") # Updated print statement for clarity + raise HTTPException( + status_code=500, + detail=f"Error processing template summary request: {str(e)}" + ) + + +@app.on_event("startup") +async def startup_event(): + """Initialize required components on startup""" + pass + +if __name__ == "__main__": + import uvicorn + uvicorn.run("app:app", host="0.0.0.0", port=5056, reload=True) + diff --git a/config.py b/config.py new file mode 100644 index 0000000..e69de29 diff --git a/docs/transcript.txt b/docs/transcript.txt new file mode 100644 index 0000000..e69de29 diff --git a/notebooks/Untitled-1.txt b/notebooks/Untitled-1.txt new file mode 100644 index 0000000..13a5b65 --- /dev/null +++ b/notebooks/Untitled-1.txt @@ -0,0 +1,5563 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Transcription" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using Deepgram API Key: f772035645279e5a56b46c2b01cbf86310362416\n", + "Renamed file to: ../uploads\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_4572a928681e482d924daf705fe8cc3e.mp3\n", + "Extracted audio to: c:\\Users\\User\\Desktop\\Blessing_AI\\MKD\\ds_microdot\\uploads\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_4572a928681e482d924daf705fe8cc3e.mp3\n", + "Deleted local audio file: c:\\Users\\User\\Desktop\\Blessing_AI\\MKD\\ds_microdot\\uploads\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_4572a928681e482d924daf705fe8cc3e.mp3\n", + "Transcription response: {\n", + " \"metadata\": {\n", + " \"transaction_key\": \"deprecated\",\n", + " \"request_id\": \"cf9f2d6e-4e4b-4ca4-994a-a422ca179e56\",\n", + " \"sha256\": \"6c4875f9241745ecbdae1fce078168dc958f1d6b3b843c7addaca5db277cfba7\",\n", + " \"created\": \"2025-02-14T17:17:49.647Z\",\n", + " \"duration\": 62.302,\n", + " \"channels\": 1,\n", + " \"models\": [\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\"\n", + " ],\n", + " \"model_info\": {\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\": {\n", + " \"name\": \"general-nova-3\",\n", + " \"version\": \"2024-12-20.0\",\n", + " \"arch\": \"nova-3\"\n", + " }\n", + " }\n", + " },\n", + " \"results\": {\n", + " \"channels\": [\n", + " {\n", + " \"alternatives\": [\n", + " {\n", + " \"transcript\": \"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\",\n", + " \"confidence\": 0.9980469,\n", + " \"words\": [\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68,\n", + " \"confidence\": 0.82910156,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 5.68,\n", + " \"end\": 5.8399997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 5.8399997,\n", + " \"end\": 6.0,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 6.0,\n", + " \"end\": 6.16,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 6.16,\n", + " \"end\": 6.72,\n", + " \"confidence\": 0.94628906,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 6.72,\n", + " \"end\": 7.52,\n", + " \"confidence\": 0.99560547,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 7.52,\n", + " \"end\": 7.7599998,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 7.7599998,\n", + " \"end\": 7.9199996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 7.9199996,\n", + " \"end\": 8.24,\n", + " \"confidence\": 0.9614258,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 8.24,\n", + " \"end\": 9.04,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 9.28,\n", + " \"end\": 9.76,\n", + " \"confidence\": 0.96533203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 9.76,\n", + " \"end\": 10.4,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 10.4,\n", + " \"end\": 10.639999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 10.639999,\n", + " \"end\": 11.04,\n", + " \"confidence\": 0.9003906,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 11.04,\n", + " \"end\": 11.759999,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.24,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 12.24,\n", + " \"end\": 12.32,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 12.32,\n", + " \"end\": 12.559999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 12.559999,\n", + " \"end\": 12.719999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 13.224999,\n", + " \"end\": 13.544999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 13.544999,\n", + " \"end\": 13.705,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 13.705,\n", + " \"end\": 13.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 13.865,\n", + " \"end\": 14.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 14.105,\n", + " \"end\": 14.664999,\n", + " \"confidence\": 0.89624023,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 14.745,\n", + " \"end\": 15.065,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 15.065,\n", + " \"end\": 15.304999,\n", + " \"confidence\": 0.98095703,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 15.304999,\n", + " \"end\": 15.384999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 15.384999,\n", + " \"end\": 15.545,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 15.545,\n", + " \"end\": 15.705,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 15.705,\n", + " \"end\": 15.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 15.865,\n", + " \"end\": 16.025,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 16.025,\n", + " \"end\": 16.345,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 16.345,\n", + " \"end\": 17.064999,\n", + " \"confidence\": 0.9890137,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 17.545,\n", + " \"end\": 17.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 17.865,\n", + " \"end\": 18.265,\n", + " \"confidence\": 0.92700195,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 18.265,\n", + " \"end\": 18.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 18.425,\n", + " \"end\": 18.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 18.585,\n", + " \"end\": 18.744999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 18.744999,\n", + " \"end\": 18.985,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 18.985,\n", + " \"end\": 19.465,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 19.465,\n", + " \"end\": 19.705,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 19.705,\n", + " \"end\": 20.185,\n", + " \"confidence\": 0.9975586,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 20.425,\n", + " \"end\": 20.824999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 20.824999,\n", + " \"end\": 20.984999,\n", + " \"confidence\": 0.97265625,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 20.984999,\n", + " \"end\": 21.145,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 21.145,\n", + " \"end\": 21.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 21.544998,\n", + " \"end\": 22.185,\n", + " \"confidence\": 0.9824219,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 22.185,\n", + " \"end\": 22.425,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 22.425,\n", + " \"end\": 22.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 22.585,\n", + " \"end\": 23.064999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 23.064999,\n", + " \"end\": 23.305,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 23.305,\n", + " \"end\": 23.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 23.544998,\n", + " \"end\": 24.265,\n", + " \"confidence\": 0.9724121,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 24.345,\n", + " \"end\": 24.664999,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 24.664999,\n", + " \"end\": 25.064999,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 25.064999,\n", + " \"end\": 25.465,\n", + " \"confidence\": 0.64501953,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 25.465,\n", + " \"end\": 25.704998,\n", + " \"confidence\": 0.8857422,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 25.704998,\n", + " \"end\": 26.265,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999,\n", + " \"confidence\": 0.91381836,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 27.21,\n", + " \"end\": 27.609999,\n", + " \"confidence\": 0.98339844,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 27.609999,\n", + " \"end\": 27.689999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 27.689999,\n", + " \"end\": 27.849998,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 27.849998,\n", + " \"end\": 28.009998,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 28.009998,\n", + " \"end\": 28.169998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 28.169998,\n", + " \"end\": 28.49,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 28.49,\n", + " \"end\": 28.65,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 28.65,\n", + " \"end\": 29.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 29.05,\n", + " \"end\": 29.849998,\n", + " \"confidence\": 0.98999023,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09,\n", + " \"confidence\": 0.8376465,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 36.09,\n", + " \"end\": 36.25,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 36.25,\n", + " \"end\": 36.41,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 36.41,\n", + " \"end\": 36.57,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 36.57,\n", + " \"end\": 37.05,\n", + " \"confidence\": 0.93408203,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 37.05,\n", + " \"end\": 37.93,\n", + " \"confidence\": 0.9875488,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 37.93,\n", + " \"end\": 38.17,\n", + " \"confidence\": 0.9921875,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 38.17,\n", + " \"end\": 38.329998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 38.329998,\n", + " \"end\": 38.649998,\n", + " \"confidence\": 0.9589844,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 38.649998,\n", + " \"end\": 39.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.184998,\n", + " \"confidence\": 0.9033203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 40.184998,\n", + " \"end\": 40.745,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 40.745,\n", + " \"end\": 40.984997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 40.984997,\n", + " \"end\": 41.385,\n", + " \"confidence\": 0.9140625,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 41.385,\n", + " \"end\": 42.105,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 42.265,\n", + " \"end\": 42.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 42.585,\n", + " \"end\": 42.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 42.745,\n", + " \"end\": 42.905,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 42.905,\n", + " \"end\": 43.385,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 43.464996,\n", + " \"end\": 43.945,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 43.945,\n", + " \"end\": 44.105,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 44.105,\n", + " \"end\": 44.265,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 44.265,\n", + " \"end\": 44.504997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 44.504997,\n", + " \"end\": 45.065,\n", + " \"confidence\": 0.91918945,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 45.144997,\n", + " \"end\": 45.464996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 45.464996,\n", + " \"end\": 45.625,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 45.625,\n", + " \"end\": 45.785,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 45.785,\n", + " \"end\": 45.945,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 45.945,\n", + " \"end\": 46.105,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 46.105,\n", + " \"end\": 46.184998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 46.184998,\n", + " \"end\": 46.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 46.425,\n", + " \"end\": 46.664997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 46.664997,\n", + " \"end\": 47.385,\n", + " \"confidence\": 0.9946289,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.265,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 48.265,\n", + " \"end\": 48.664997,\n", + " \"confidence\": 0.96972656,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 48.664997,\n", + " \"end\": 48.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 48.745,\n", + " \"end\": 48.985,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 48.985,\n", + " \"end\": 49.144997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 49.144997,\n", + " \"end\": 49.385,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 49.385,\n", + " \"end\": 49.864998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 49.864998,\n", + " \"end\": 50.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 50.105,\n", + " \"end\": 50.265,\n", + " \"confidence\": 0.99853516,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 50.797,\n", + " \"end\": 51.197,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 51.197,\n", + " \"end\": 51.357,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 51.357,\n", + " \"end\": 51.517,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 51.517,\n", + " \"end\": 51.917,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 51.917,\n", + " \"end\": 52.557,\n", + " \"confidence\": 0.9863281,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 52.557,\n", + " \"end\": 52.797,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 52.797,\n", + " \"end\": 52.957,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 52.957,\n", + " \"end\": 53.357,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 53.357,\n", + " \"end\": 53.677,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 53.677,\n", + " \"end\": 53.917,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 53.917,\n", + " \"end\": 54.636997,\n", + " \"confidence\": 0.9655762,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 54.637,\n", + " \"end\": 55.037,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 55.037,\n", + " \"end\": 55.437,\n", + " \"confidence\": 0.9941406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 55.437,\n", + " \"end\": 55.836998,\n", + " \"confidence\": 0.6328125,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 55.836998,\n", + " \"end\": 56.077,\n", + " \"confidence\": 0.88671875,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 56.077,\n", + " \"end\": 56.636997,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677,\n", + " \"confidence\": 0.82128906,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 57.677,\n", + " \"end\": 57.917,\n", + " \"confidence\": 0.9628906,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 57.917,\n", + " \"end\": 58.077,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 58.077,\n", + " \"end\": 58.237,\n", + " \"confidence\": 0.97314453,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 58.237,\n", + " \"end\": 58.397,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 58.397,\n", + " \"end\": 58.557,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 58.557,\n", + " \"end\": 58.877,\n", + " \"confidence\": 0.99121094,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 58.877,\n", + " \"end\": 59.037,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 59.037,\n", + " \"end\": 59.437,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 59.437,\n", + " \"end\": 59.836998,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " }\n", + " ],\n", + " \"paragraphs\": {\n", + " \"transcript\": \"\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\\n\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\",\n", + " \"paragraphs\": [\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 5.68,\n", + " \"end\": 7.52\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 7.52,\n", + " \"end\": 9.04\n", + " }\n", + " ],\n", + " \"start\": 5.12,\n", + " \"end\": 9.04,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 9.28,\n", + " \"end\": 10.4\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 10.4,\n", + " \"end\": 11.759999\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.719999\n", + " }\n", + " ],\n", + " \"start\": 9.28,\n", + " \"end\": 12.719999,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 13.224999,\n", + " \"end\": 14.664999\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 14.745,\n", + " \"end\": 17.064999\n", + " }\n", + " ],\n", + " \"start\": 13.224999,\n", + " \"end\": 17.064999,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 17.545,\n", + " \"end\": 18.265\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 18.265,\n", + " \"end\": 20.185\n", + " }\n", + " ],\n", + " \"start\": 17.545,\n", + " \"end\": 20.185,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 20.425,\n", + " \"end\": 22.185\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 22.185,\n", + " \"end\": 26.265\n", + " }\n", + " ],\n", + " \"start\": 20.425,\n", + " \"end\": 26.265,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 27.21,\n", + " \"end\": 29.849998\n", + " }\n", + " ],\n", + " \"start\": 26.425,\n", + " \"end\": 29.849998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 36.09,\n", + " \"end\": 37.93\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 37.93,\n", + " \"end\": 39.05\n", + " }\n", + " ],\n", + " \"start\": 35.53,\n", + " \"end\": 39.05,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.745\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 40.745,\n", + " \"end\": 42.105\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 42.265,\n", + " \"end\": 43.385\n", + " }\n", + " ],\n", + " \"start\": 39.704998,\n", + " \"end\": 43.385,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 43.464996,\n", + " \"end\": 45.065\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 45.144997,\n", + " \"end\": 47.385\n", + " }\n", + " ],\n", + " \"start\": 43.464996,\n", + " \"end\": 47.385,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.664997\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 48.664997,\n", + " \"end\": 50.265\n", + " }\n", + " ],\n", + " \"start\": 47.945,\n", + " \"end\": 50.265,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 50.797,\n", + " \"end\": 52.557\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 52.557,\n", + " \"end\": 56.636997\n", + " }\n", + " ],\n", + " \"start\": 50.797,\n", + " \"end\": 56.636997,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 57.677,\n", + " \"end\": 59.836998\n", + " }\n", + " ],\n", + " \"start\": 56.957,\n", + " \"end\": 59.836998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " }\n", + " ]\n", + " }\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + " }\n", + "}\n", + "\n", + "\n", + "{\n", + " \"metadata\": {\n", + " \"transaction_key\": \"deprecated\",\n", + " \"request_id\": \"cf9f2d6e-4e4b-4ca4-994a-a422ca179e56\",\n", + " \"sha256\": \"6c4875f9241745ecbdae1fce078168dc958f1d6b3b843c7addaca5db277cfba7\",\n", + " \"created\": \"2025-02-14T17:17:49.647Z\",\n", + " \"duration\": 62.302,\n", + " \"channels\": 1,\n", + " \"models\": [\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\"\n", + " ],\n", + " \"model_info\": {\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\": {\n", + " \"name\": \"general-nova-3\",\n", + " \"version\": \"2024-12-20.0\",\n", + " \"arch\": \"nova-3\"\n", + " }\n", + " }\n", + " },\n", + " \"results\": {\n", + " \"channels\": [\n", + " {\n", + " \"alternatives\": [\n", + " {\n", + " \"transcript\": \"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\",\n", + " \"confidence\": 0.9980469,\n", + " \"words\": [\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68,\n", + " \"confidence\": 0.82910156,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 5.68,\n", + " \"end\": 5.8399997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 5.8399997,\n", + " \"end\": 6.0,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 6.0,\n", + " \"end\": 6.16,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 6.16,\n", + " \"end\": 6.72,\n", + " \"confidence\": 0.94628906,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 6.72,\n", + " \"end\": 7.52,\n", + " \"confidence\": 0.99560547,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 7.52,\n", + " \"end\": 7.7599998,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 7.7599998,\n", + " \"end\": 7.9199996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 7.9199996,\n", + " \"end\": 8.24,\n", + " \"confidence\": 0.9614258,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 8.24,\n", + " \"end\": 9.04,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 9.28,\n", + " \"end\": 9.76,\n", + " \"confidence\": 0.96533203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 9.76,\n", + " \"end\": 10.4,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 10.4,\n", + " \"end\": 10.639999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 10.639999,\n", + " \"end\": 11.04,\n", + " \"confidence\": 0.9003906,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 11.04,\n", + " \"end\": 11.759999,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.24,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 12.24,\n", + " \"end\": 12.32,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 12.32,\n", + " \"end\": 12.559999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 12.559999,\n", + " \"end\": 12.719999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 13.224999,\n", + " \"end\": 13.544999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 13.544999,\n", + " \"end\": 13.705,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 13.705,\n", + " \"end\": 13.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 13.865,\n", + " \"end\": 14.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 14.105,\n", + " \"end\": 14.664999,\n", + " \"confidence\": 0.89624023,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 14.745,\n", + " \"end\": 15.065,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 15.065,\n", + " \"end\": 15.304999,\n", + " \"confidence\": 0.98095703,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 15.304999,\n", + " \"end\": 15.384999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 15.384999,\n", + " \"end\": 15.545,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 15.545,\n", + " \"end\": 15.705,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 15.705,\n", + " \"end\": 15.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 15.865,\n", + " \"end\": 16.025,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 16.025,\n", + " \"end\": 16.345,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 16.345,\n", + " \"end\": 17.064999,\n", + " \"confidence\": 0.9890137,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 17.545,\n", + " \"end\": 17.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 17.865,\n", + " \"end\": 18.265,\n", + " \"confidence\": 0.92700195,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 18.265,\n", + " \"end\": 18.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 18.425,\n", + " \"end\": 18.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 18.585,\n", + " \"end\": 18.744999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 18.744999,\n", + " \"end\": 18.985,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 18.985,\n", + " \"end\": 19.465,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 19.465,\n", + " \"end\": 19.705,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 19.705,\n", + " \"end\": 20.185,\n", + " \"confidence\": 0.9975586,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 20.425,\n", + " \"end\": 20.824999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 20.824999,\n", + " \"end\": 20.984999,\n", + " \"confidence\": 0.97265625,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 20.984999,\n", + " \"end\": 21.145,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 21.145,\n", + " \"end\": 21.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 21.544998,\n", + " \"end\": 22.185,\n", + " \"confidence\": 0.9824219,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 22.185,\n", + " \"end\": 22.425,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 22.425,\n", + " \"end\": 22.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 22.585,\n", + " \"end\": 23.064999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 23.064999,\n", + " \"end\": 23.305,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 23.305,\n", + " \"end\": 23.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 23.544998,\n", + " \"end\": 24.265,\n", + " \"confidence\": 0.9724121,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 24.345,\n", + " \"end\": 24.664999,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 24.664999,\n", + " \"end\": 25.064999,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 25.064999,\n", + " \"end\": 25.465,\n", + " \"confidence\": 0.64501953,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 25.465,\n", + " \"end\": 25.704998,\n", + " \"confidence\": 0.8857422,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 25.704998,\n", + " \"end\": 26.265,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999,\n", + " \"confidence\": 0.91381836,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 27.21,\n", + " \"end\": 27.609999,\n", + " \"confidence\": 0.98339844,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 27.609999,\n", + " \"end\": 27.689999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 27.689999,\n", + " \"end\": 27.849998,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 27.849998,\n", + " \"end\": 28.009998,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 28.009998,\n", + " \"end\": 28.169998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 28.169998,\n", + " \"end\": 28.49,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 28.49,\n", + " \"end\": 28.65,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 28.65,\n", + " \"end\": 29.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 29.05,\n", + " \"end\": 29.849998,\n", + " \"confidence\": 0.98999023,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09,\n", + " \"confidence\": 0.8376465,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 36.09,\n", + " \"end\": 36.25,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 36.25,\n", + " \"end\": 36.41,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 36.41,\n", + " \"end\": 36.57,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 36.57,\n", + " \"end\": 37.05,\n", + " \"confidence\": 0.93408203,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 37.05,\n", + " \"end\": 37.93,\n", + " \"confidence\": 0.9875488,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 37.93,\n", + " \"end\": 38.17,\n", + " \"confidence\": 0.9921875,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 38.17,\n", + " \"end\": 38.329998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 38.329998,\n", + " \"end\": 38.649998,\n", + " \"confidence\": 0.9589844,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 38.649998,\n", + " \"end\": 39.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.184998,\n", + " \"confidence\": 0.9033203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 40.184998,\n", + " \"end\": 40.745,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 40.745,\n", + " \"end\": 40.984997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 40.984997,\n", + " \"end\": 41.385,\n", + " \"confidence\": 0.9140625,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 41.385,\n", + " \"end\": 42.105,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 42.265,\n", + " \"end\": 42.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 42.585,\n", + " \"end\": 42.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 42.745,\n", + " \"end\": 42.905,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 42.905,\n", + " \"end\": 43.385,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 43.464996,\n", + " \"end\": 43.945,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 43.945,\n", + " \"end\": 44.105,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 44.105,\n", + " \"end\": 44.265,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 44.265,\n", + " \"end\": 44.504997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 44.504997,\n", + " \"end\": 45.065,\n", + " \"confidence\": 0.91918945,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 45.144997,\n", + " \"end\": 45.464996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 45.464996,\n", + " \"end\": 45.625,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 45.625,\n", + " \"end\": 45.785,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 45.785,\n", + " \"end\": 45.945,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 45.945,\n", + " \"end\": 46.105,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 46.105,\n", + " \"end\": 46.184998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 46.184998,\n", + " \"end\": 46.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 46.425,\n", + " \"end\": 46.664997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 46.664997,\n", + " \"end\": 47.385,\n", + " \"confidence\": 0.9946289,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.265,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 48.265,\n", + " \"end\": 48.664997,\n", + " \"confidence\": 0.96972656,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 48.664997,\n", + " \"end\": 48.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 48.745,\n", + " \"end\": 48.985,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 48.985,\n", + " \"end\": 49.144997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 49.144997,\n", + " \"end\": 49.385,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 49.385,\n", + " \"end\": 49.864998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 49.864998,\n", + " \"end\": 50.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 50.105,\n", + " \"end\": 50.265,\n", + " \"confidence\": 0.99853516,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 50.797,\n", + " \"end\": 51.197,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 51.197,\n", + " \"end\": 51.357,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 51.357,\n", + " \"end\": 51.517,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 51.517,\n", + " \"end\": 51.917,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 51.917,\n", + " \"end\": 52.557,\n", + " \"confidence\": 0.9863281,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 52.557,\n", + " \"end\": 52.797,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 52.797,\n", + " \"end\": 52.957,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 52.957,\n", + " \"end\": 53.357,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 53.357,\n", + " \"end\": 53.677,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 53.677,\n", + " \"end\": 53.917,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 53.917,\n", + " \"end\": 54.636997,\n", + " \"confidence\": 0.9655762,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 54.637,\n", + " \"end\": 55.037,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 55.037,\n", + " \"end\": 55.437,\n", + " \"confidence\": 0.9941406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 55.437,\n", + " \"end\": 55.836998,\n", + " \"confidence\": 0.6328125,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 55.836998,\n", + " \"end\": 56.077,\n", + " \"confidence\": 0.88671875,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 56.077,\n", + " \"end\": 56.636997,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677,\n", + " \"confidence\": 0.82128906,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 57.677,\n", + " \"end\": 57.917,\n", + " \"confidence\": 0.9628906,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 57.917,\n", + " \"end\": 58.077,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 58.077,\n", + " \"end\": 58.237,\n", + " \"confidence\": 0.97314453,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 58.237,\n", + " \"end\": 58.397,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 58.397,\n", + " \"end\": 58.557,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 58.557,\n", + " \"end\": 58.877,\n", + " \"confidence\": 0.99121094,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 58.877,\n", + " \"end\": 59.037,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 59.037,\n", + " \"end\": 59.437,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 59.437,\n", + " \"end\": 59.836998,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " }\n", + " ],\n", + " \"paragraphs\": {\n", + " \"transcript\": \"\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\\n\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\",\n", + " \"paragraphs\": [\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 5.68,\n", + " \"end\": 7.52\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 7.52,\n", + " \"end\": 9.04\n", + " }\n", + " ],\n", + " \"start\": 5.12,\n", + " \"end\": 9.04,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 9.28,\n", + " \"end\": 10.4\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 10.4,\n", + " \"end\": 11.759999\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.719999\n", + " }\n", + " ],\n", + " \"start\": 9.28,\n", + " \"end\": 12.719999,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 13.224999,\n", + " \"end\": 14.664999\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 14.745,\n", + " \"end\": 17.064999\n", + " }\n", + " ],\n", + " \"start\": 13.224999,\n", + " \"end\": 17.064999,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 17.545,\n", + " \"end\": 18.265\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 18.265,\n", + " \"end\": 20.185\n", + " }\n", + " ],\n", + " \"start\": 17.545,\n", + " \"end\": 20.185,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 20.425,\n", + " \"end\": 22.185\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 22.185,\n", + " \"end\": 26.265\n", + " }\n", + " ],\n", + " \"start\": 20.425,\n", + " \"end\": 26.265,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 27.21,\n", + " \"end\": 29.849998\n", + " }\n", + " ],\n", + " \"start\": 26.425,\n", + " \"end\": 29.849998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 36.09,\n", + " \"end\": 37.93\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 37.93,\n", + " \"end\": 39.05\n", + " }\n", + " ],\n", + " \"start\": 35.53,\n", + " \"end\": 39.05,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.745\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 40.745,\n", + " \"end\": 42.105\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 42.265,\n", + " \"end\": 43.385\n", + " }\n", + " ],\n", + " \"start\": 39.704998,\n", + " \"end\": 43.385,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 43.464996,\n", + " \"end\": 45.065\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 45.144997,\n", + " \"end\": 47.385\n", + " }\n", + " ],\n", + " \"start\": 43.464996,\n", + " \"end\": 47.385,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.664997\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 48.664997,\n", + " \"end\": 50.265\n", + " }\n", + " ],\n", + " \"start\": 47.945,\n", + " \"end\": 50.265,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 50.797,\n", + " \"end\": 52.557\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 52.557,\n", + " \"end\": 56.636997\n", + " }\n", + " ],\n", + " \"start\": 50.797,\n", + " \"end\": 56.636997,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 57.677,\n", + " \"end\": 59.836998\n", + " }\n", + " ],\n", + " \"start\": 56.957,\n", + " \"end\": 59.836998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " }\n", + " ]\n", + " }\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "import os\n", + "import logging\n", + "import re\n", + "import uuid\n", + "import yt_dlp\n", + "from deepgram.utils import verboselogs\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "from deepgram import DeepgramClient, PrerecordedOptions, FileSource\n", + "\n", + "# Define your URLs (example URLs)\n", + "audio_url = \"https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/019933724441Business%20English%20Conversation%20Lesson%2045_%20Meeting%20a%20New%20Colleague.mp3\"\n", + "video_url = \"https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/038426704141Business%20English%20Conversation%20Lesson%2045_%20%20Meeting%20a%20New%20Colleague.mp4\"\n", + "\n", + "# Folder for file uploads/downloads\n", + "\n", + "# Folder for file uploads/downloads\n", + "UPLOAD_FOLDER = \"../uploads\"\n", + "os.makedirs(UPLOAD_FOLDER, exist_ok=True)\n", + "\n", + "def sanitize_filename(name: str) -> str:\n", + " \"\"\"\n", + " Remove characters from the filename that are not allowed in many file systems.\n", + " \"\"\"\n", + " return re.sub(r'[^\\w\\s-]', '', name).strip().replace(' ', '_')\n", + "\n", + "def extract_audio(url: str, output_template=os.path.join(UPLOAD_FOLDER, \"%(title)s.%(ext)s\")) -> str:\n", + " \"\"\"\n", + " Download and extract audio from a video URL using yt-dlp.\n", + " The file will be saved in the 'upload' folder.\n", + " \n", + " Returns:\n", + " str: The absolute path to the downloaded audio file (with a unique id appended).\n", + " \"\"\"\n", + " ydl_opts = {\n", + " \"format\": \"bestaudio/best\",\n", + " \"outtmpl\": output_template,\n", + " \"postprocessors\": [{\n", + " \"key\": \"FFmpegExtractAudio\",\n", + " \"preferredcodec\": \"mp3\",\n", + " \"preferredquality\": \"192\",\n", + " }],\n", + " \"quiet\": True,\n", + " }\n", + " \n", + " with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", + " info = ydl.extract_info(url, download=True)\n", + " # Prepare the filename from the info.\n", + " # Note: prepare_filename returns the filename *before* postprocessing,\n", + " # so we change the extension to mp3.\n", + " original_filepath = os.path.splitext(ydl.prepare_filename(info))[0] + \".mp3\"\n", + " \n", + " # Debug: list files in the upload folder\n", + " if not os.path.exists(original_filepath):\n", + " files = os.listdir(UPLOAD_FOLDER)\n", + " print(\"Warning: Could not find expected file.\")\n", + " print(\"Files in upload folder:\", files)\n", + " raise FileNotFoundError(f\"Expected audio file not found: {original_filepath}\")\n", + " \n", + " # Get the video's title and sanitize it\n", + " title = info.get('title', 'audio')\n", + " safe_title = sanitize_filename(title)\n", + " \n", + " # Generate a unique identifier\n", + " unique_id = uuid.uuid4().hex # Unique identifier in hex format\n", + " \n", + " # Construct the new filename with the unique id appended.\n", + " new_audio_filename = f\"{safe_title}_{unique_id}.mp3\"\n", + " new_audio_filepath = os.path.join(UPLOAD_FOLDER, new_audio_filename)\n", + " \n", + " # Rename the downloaded file to include the unique ID.\n", + " os.rename(original_filepath, new_audio_filepath)\n", + " print(f\"Renamed file to: {new_audio_filepath}\")\n", + " \n", + " # Return the absolute path to the renamed audio file.\n", + " return os.path.abspath(new_audio_filepath)\n", + "\n", + "def transcribe_media(file_loc: str, media_type: str = \"audio\"):\n", + " \"\"\"\n", + " Transcribe media using Deepgram.\n", + " \n", + " If media_type is \"audio\" (remote URL), use Deepgram's URL transcription.\n", + " If media_type is \"video\" (remote URL), extract audio locally (in the upload folder),\n", + " transcribe via file, and then delete the local audio file.\n", + " \n", + " Args:\n", + " file_loc (str): URL to the remote audio or video file.\n", + " media_type (str): \"audio\" or \"video\".\n", + " \n", + " Returns:\n", + " dict: The transcription response from Deepgram.\n", + " \"\"\"\n", + " api_key = os.getenv(\"DEEPGRAM_API_KEY2\")\n", + " print(f\"Using Deepgram API Key: {api_key}\")\n", + " local_audio_path=\"some_rand\"\n", + " try:\n", + " deepgram: DeepgramClient = DeepgramClient(api_key=api_key)\n", + " options: PrerecordedOptions = PrerecordedOptions(\n", + " model=\"nova-3\",\n", + " smart_format=True,\n", + " diarize=True,\n", + " )\n", + " \n", + " if media_type.lower() == \"audio\":\n", + " # For remote audio files, use the URL transcription method.\n", + " response = deepgram.listen.rest.v(\"1\").transcribe_url({\"url\": file_loc}, options)\n", + " \n", + " elif media_type.lower() == \"video\":\n", + " # For remote video files, first extract the audio locally.\n", + " local_audio_path = extract_audio(file_loc)\n", + " print(f\"Extracted audio to: {local_audio_path}\")\n", + " \n", + " # Transcribe using the local file method.\n", + " with open(local_audio_path, \"rb\") as file:\n", + " buffer_data = file.read()\n", + " payload: FileSource = {\"buffer\": buffer_data}\n", + " response = deepgram.listen.rest.v(\"1\").transcribe_file(payload, options)\n", + " \n", + " # Clean up: delete the local audio file.\n", + " if os.path.exists(local_audio_path):\n", + " os.remove(local_audio_path)\n", + " print(f\"Deleted local audio file: {local_audio_path}\")\n", + " else:\n", + " raise ValueError(\"media_type must be either 'audio' or 'video'.\")\n", + "\n", + " print(f\"Transcription response: {response}\\n\\n\")\n", + " return response\n", + "\n", + " except Exception as e:\n", + " print(f\"Exception during transcription: {e}\")\n", + " return None\n", + " finally:\n", + " # Clean up: delete the local audio file.\n", + " if os.path.exists(local_audio_path):\n", + " os.remove(local_audio_path)\n", + " print(f\"Deleted local audio file: {local_audio_path}\")\n", + "\n", + "\n", + "\n", + "if __name__ == \"__main__\":\n", + " \n", + " response = transcribe_media(video_url, media_type=\"video\")\n", + " print(response)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"alternatives\": [\n", + " {\n", + " \"transcript\": \"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\",\n", + " \"confidence\": 0.9980469,\n", + " \"words\": [\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68,\n", + " \"confidence\": 0.82910156,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 5.68,\n", + " \"end\": 5.8399997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 5.8399997,\n", + " \"end\": 6.0,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 6.0,\n", + " \"end\": 6.16,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 6.16,\n", + " \"end\": 6.72,\n", + " \"confidence\": 0.94628906,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 6.72,\n", + " \"end\": 7.52,\n", + " \"confidence\": 0.99560547,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 7.52,\n", + " \"end\": 7.7599998,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 7.7599998,\n", + " \"end\": 7.9199996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 7.9199996,\n", + " \"end\": 8.24,\n", + " \"confidence\": 0.9614258,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 8.24,\n", + " \"end\": 9.04,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 9.28,\n", + " \"end\": 9.76,\n", + " \"confidence\": 0.96533203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 9.76,\n", + " \"end\": 10.4,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 10.4,\n", + " \"end\": 10.639999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 10.639999,\n", + " \"end\": 11.04,\n", + " \"confidence\": 0.9003906,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 11.04,\n", + " \"end\": 11.759999,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.24,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 12.24,\n", + " \"end\": 12.32,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 12.32,\n", + " \"end\": 12.559999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 12.559999,\n", + " \"end\": 12.719999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 13.224999,\n", + " \"end\": 13.544999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 13.544999,\n", + " \"end\": 13.705,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 13.705,\n", + " \"end\": 13.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 13.865,\n", + " \"end\": 14.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 14.105,\n", + " \"end\": 14.664999,\n", + " \"confidence\": 0.89624023,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 14.745,\n", + " \"end\": 15.065,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 15.065,\n", + " \"end\": 15.304999,\n", + " \"confidence\": 0.98095703,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 15.304999,\n", + " \"end\": 15.384999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 15.384999,\n", + " \"end\": 15.545,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 15.545,\n", + " \"end\": 15.705,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 15.705,\n", + " \"end\": 15.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 15.865,\n", + " \"end\": 16.025,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 16.025,\n", + " \"end\": 16.345,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 16.345,\n", + " \"end\": 17.064999,\n", + " \"confidence\": 0.9890137,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 17.545,\n", + " \"end\": 17.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 17.865,\n", + " \"end\": 18.265,\n", + " \"confidence\": 0.92700195,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 18.265,\n", + " \"end\": 18.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 18.425,\n", + " \"end\": 18.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 18.585,\n", + " \"end\": 18.744999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 18.744999,\n", + " \"end\": 18.985,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 18.985,\n", + " \"end\": 19.465,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 19.465,\n", + " \"end\": 19.705,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 19.705,\n", + " \"end\": 20.185,\n", + " \"confidence\": 0.9975586,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 20.425,\n", + " \"end\": 20.824999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 20.824999,\n", + " \"end\": 20.984999,\n", + " \"confidence\": 0.97265625,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 20.984999,\n", + " \"end\": 21.145,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 21.145,\n", + " \"end\": 21.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 21.544998,\n", + " \"end\": 22.185,\n", + " \"confidence\": 0.9824219,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 22.185,\n", + " \"end\": 22.425,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 22.425,\n", + " \"end\": 22.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 22.585,\n", + " \"end\": 23.064999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 23.064999,\n", + " \"end\": 23.305,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 23.305,\n", + " \"end\": 23.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 23.544998,\n", + " \"end\": 24.265,\n", + " \"confidence\": 0.9724121,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 24.345,\n", + " \"end\": 24.664999,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 24.664999,\n", + " \"end\": 25.064999,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 25.064999,\n", + " \"end\": 25.465,\n", + " \"confidence\": 0.64501953,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 25.465,\n", + " \"end\": 25.704998,\n", + " \"confidence\": 0.8857422,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 25.704998,\n", + " \"end\": 26.265,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999,\n", + " \"confidence\": 0.91381836,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 27.21,\n", + " \"end\": 27.609999,\n", + " \"confidence\": 0.98339844,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 27.609999,\n", + " \"end\": 27.689999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 27.689999,\n", + " \"end\": 27.849998,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 27.849998,\n", + " \"end\": 28.009998,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 28.009998,\n", + " \"end\": 28.169998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 28.169998,\n", + " \"end\": 28.49,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 28.49,\n", + " \"end\": 28.65,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 28.65,\n", + " \"end\": 29.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 29.05,\n", + " \"end\": 29.849998,\n", + " \"confidence\": 0.98999023,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09,\n", + " \"confidence\": 0.8376465,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 36.09,\n", + " \"end\": 36.25,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 36.25,\n", + " \"end\": 36.41,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 36.41,\n", + " \"end\": 36.57,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 36.57,\n", + " \"end\": 37.05,\n", + " \"confidence\": 0.93408203,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 37.05,\n", + " \"end\": 37.93,\n", + " \"confidence\": 0.9875488,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 37.93,\n", + " \"end\": 38.17,\n", + " \"confidence\": 0.9921875,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 38.17,\n", + " \"end\": 38.329998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 38.329998,\n", + " \"end\": 38.649998,\n", + " \"confidence\": 0.9589844,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 38.649998,\n", + " \"end\": 39.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.184998,\n", + " \"confidence\": 0.9033203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 40.184998,\n", + " \"end\": 40.745,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 40.745,\n", + " \"end\": 40.984997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 40.984997,\n", + " \"end\": 41.385,\n", + " \"confidence\": 0.9140625,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 41.385,\n", + " \"end\": 42.105,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 42.265,\n", + " \"end\": 42.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 42.585,\n", + " \"end\": 42.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 42.745,\n", + " \"end\": 42.905,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 42.905,\n", + " \"end\": 43.385,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 43.464996,\n", + " \"end\": 43.945,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 43.945,\n", + " \"end\": 44.105,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 44.105,\n", + " \"end\": 44.265,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 44.265,\n", + " \"end\": 44.504997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 44.504997,\n", + " \"end\": 45.065,\n", + " \"confidence\": 0.91918945,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 45.144997,\n", + " \"end\": 45.464996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 45.464996,\n", + " \"end\": 45.625,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 45.625,\n", + " \"end\": 45.785,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 45.785,\n", + " \"end\": 45.945,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 45.945,\n", + " \"end\": 46.105,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 46.105,\n", + " \"end\": 46.184998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 46.184998,\n", + " \"end\": 46.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 46.425,\n", + " \"end\": 46.664997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 46.664997,\n", + " \"end\": 47.385,\n", + " \"confidence\": 0.9946289,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.265,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 48.265,\n", + " \"end\": 48.664997,\n", + " \"confidence\": 0.96972656,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 48.664997,\n", + " \"end\": 48.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 48.745,\n", + " \"end\": 48.985,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 48.985,\n", + " \"end\": 49.144997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 49.144997,\n", + " \"end\": 49.385,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 49.385,\n", + " \"end\": 49.864998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 49.864998,\n", + " \"end\": 50.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 50.105,\n", + " \"end\": 50.265,\n", + " \"confidence\": 0.99853516,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 50.797,\n", + " \"end\": 51.197,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 51.197,\n", + " \"end\": 51.357,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 51.357,\n", + " \"end\": 51.517,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 51.517,\n", + " \"end\": 51.917,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 51.917,\n", + " \"end\": 52.557,\n", + " \"confidence\": 0.9863281,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 52.557,\n", + " \"end\": 52.797,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 52.797,\n", + " \"end\": 52.957,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 52.957,\n", + " \"end\": 53.357,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 53.357,\n", + " \"end\": 53.677,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 53.677,\n", + " \"end\": 53.917,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 53.917,\n", + " \"end\": 54.636997,\n", + " \"confidence\": 0.9655762,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 54.637,\n", + " \"end\": 55.037,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 55.037,\n", + " \"end\": 55.437,\n", + " \"confidence\": 0.9941406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 55.437,\n", + " \"end\": 55.836998,\n", + " \"confidence\": 0.6328125,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 55.836998,\n", + " \"end\": 56.077,\n", + " \"confidence\": 0.88671875,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 56.077,\n", + " \"end\": 56.636997,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677,\n", + " \"confidence\": 0.82128906,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 57.677,\n", + " \"end\": 57.917,\n", + " \"confidence\": 0.9628906,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 57.917,\n", + " \"end\": 58.077,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 58.077,\n", + " \"end\": 58.237,\n", + " \"confidence\": 0.97314453,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 58.237,\n", + " \"end\": 58.397,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 58.397,\n", + " \"end\": 58.557,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 58.557,\n", + " \"end\": 58.877,\n", + " \"confidence\": 0.99121094,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 58.877,\n", + " \"end\": 59.037,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 59.037,\n", + " \"end\": 59.437,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 59.437,\n", + " \"end\": 59.836998,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " }\n", + " ],\n", + " \"paragraphs\": {\n", + " \"transcript\": \"\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\\n\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\",\n", + " \"paragraphs\": [\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 5.68,\n", + " \"end\": 7.52\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 7.52,\n", + " \"end\": 9.04\n", + " }\n", + " ],\n", + " \"start\": 5.12,\n", + " \"end\": 9.04,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 9.28,\n", + " \"end\": 10.4\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 10.4,\n", + " \"end\": 11.759999\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.719999\n", + " }\n", + " ],\n", + " \"start\": 9.28,\n", + " \"end\": 12.719999,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 13.224999,\n", + " \"end\": 14.664999\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 14.745,\n", + " \"end\": 17.064999\n", + " }\n", + " ],\n", + " \"start\": 13.224999,\n", + " \"end\": 17.064999,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 17.545,\n", + " \"end\": 18.265\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 18.265,\n", + " \"end\": 20.185\n", + " }\n", + " ],\n", + " \"start\": 17.545,\n", + " \"end\": 20.185,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 20.425,\n", + " \"end\": 22.185\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 22.185,\n", + " \"end\": 26.265\n", + " }\n", + " ],\n", + " \"start\": 20.425,\n", + " \"end\": 26.265,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 27.21,\n", + " \"end\": 29.849998\n", + " }\n", + " ],\n", + " \"start\": 26.425,\n", + " \"end\": 29.849998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 36.09,\n", + " \"end\": 37.93\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 37.93,\n", + " \"end\": 39.05\n", + " }\n", + " ],\n", + " \"start\": 35.53,\n", + " \"end\": 39.05,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.745\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 40.745,\n", + " \"end\": 42.105\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 42.265,\n", + " \"end\": 43.385\n", + " }\n", + " ],\n", + " \"start\": 39.704998,\n", + " \"end\": 43.385,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 43.464996,\n", + " \"end\": 45.065\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 45.144997,\n", + " \"end\": 47.385\n", + " }\n", + " ],\n", + " \"start\": 43.464996,\n", + " \"end\": 47.385,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.664997\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 48.664997,\n", + " \"end\": 50.265\n", + " }\n", + " ],\n", + " \"start\": 47.945,\n", + " \"end\": 50.265,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 50.797,\n", + " \"end\": 52.557\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 52.557,\n", + " \"end\": 56.636997\n", + " }\n", + " ],\n", + " \"start\": 50.797,\n", + " \"end\": 56.636997,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 57.677,\n", + " \"end\": 59.836998\n", + " }\n", + " ],\n", + " \"start\": 56.957,\n", + " \"end\": 59.836998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " }\n", + " ]\n", + " }\n", + " }\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "print(response[\"results\"][\"channels\"][0])\n", + "\n", + "transcript = response[\"results\"][\"channels\"][0][\"alternatives\"][0][\"transcript\"]\n", + "words = response[\"results\"][\"channels\"][0][\"alternatives\"][0][\"words\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\"" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "transcript" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'sentences': [{'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 5.12, 'end': 9.04, 'words': [{'word': 'Hi.', 'start': 5.12, 'end': 5.68}, {'word': 'My', 'start': 5.68, 'end': 5.8399997}, {'word': 'name', 'start': 5.8399997, 'end': 6.0}, {'word': 'is', 'start': 6.0, 'end': 6.16}, {'word': 'Diane', 'start': 6.16, 'end': 6.72}, {'word': 'Taylor.', 'start': 6.72, 'end': 7.52}, {'word': \"I'm\", 'start': 7.52, 'end': 7.7599998}, {'word': 'the', 'start': 7.7599998, 'end': 7.9199996}, {'word': 'office', 'start': 7.9199996, 'end': 8.24}, {'word': 'manager.', 'start': 8.24, 'end': 9.04}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 9.28, 'end': 12.719999, 'words': [{'word': 'Hi,', 'start': 9.28, 'end': 9.76}, {'word': 'Diane.', 'start': 9.76, 'end': 10.4}, {'word': \"I'm\", 'start': 10.4, 'end': 10.639999}, {'word': 'Cody', 'start': 10.639999, 'end': 11.04}, {'word': 'Smith.', 'start': 11.04, 'end': 11.759999}, {'word': 'Nice', 'start': 11.84, 'end': 12.24}, {'word': 'to', 'start': 12.24, 'end': 12.32}, {'word': 'meet', 'start': 12.32, 'end': 12.559999}, {'word': 'you.', 'start': 12.559999, 'end': 12.719999}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 13.224999, 'end': 17.064999, 'words': [{'word': 'Nice', 'start': 13.224999, 'end': 13.544999}, {'word': 'to', 'start': 13.544999, 'end': 13.705}, {'word': 'meet', 'start': 13.705, 'end': 13.865}, {'word': 'you', 'start': 13.865, 'end': 14.105}, {'word': 'too.', 'start': 14.105, 'end': 14.664999}, {'word': 'Please', 'start': 14.745, 'end': 15.065}, {'word': 'let', 'start': 15.065, 'end': 15.304999}, {'word': 'me', 'start': 15.304999, 'end': 15.384999}, {'word': 'know', 'start': 15.384999, 'end': 15.545}, {'word': 'if', 'start': 15.545, 'end': 15.705}, {'word': 'you', 'start': 15.705, 'end': 15.865}, {'word': 'have', 'start': 15.865, 'end': 16.025}, {'word': 'any', 'start': 16.025, 'end': 16.345}, {'word': 'questions.', 'start': 16.345, 'end': 17.064999}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 17.545, 'end': 20.185, 'words': [{'word': 'I', 'start': 17.545, 'end': 17.865}, {'word': 'will.', 'start': 17.865, 'end': 18.265}, {'word': 'I', 'start': 18.265, 'end': 18.425}, {'word': \"don't\", 'start': 18.425, 'end': 18.585}, {'word': 'have', 'start': 18.585, 'end': 18.744999}, {'word': 'any', 'start': 18.744999, 'end': 18.985}, {'word': 'questions', 'start': 18.985, 'end': 19.465}, {'word': 'right', 'start': 19.465, 'end': 19.705}, {'word': 'now.', 'start': 19.705, 'end': 20.185}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 20.425, 'end': 25.704998, 'words': [{'word': 'Here', 'start': 20.425, 'end': 20.824999}, {'word': 'is', 'start': 20.824999, 'end': 20.984999}, {'word': 'my', 'start': 20.984999, 'end': 21.145}, {'word': 'business', 'start': 21.145, 'end': 21.544998}, {'word': 'card.', 'start': 21.544998, 'end': 22.185}, {'word': 'You', 'start': 22.185, 'end': 22.425}, {'word': 'can', 'start': 22.425, 'end': 22.585}, {'word': 'contact', 'start': 22.585, 'end': 23.064999}, {'word': 'me', 'start': 23.064999, 'end': 23.305}, {'word': 'by', 'start': 23.305, 'end': 23.544998}, {'word': 'email,', 'start': 23.544998, 'end': 24.265}, {'word': 'office', 'start': 24.345, 'end': 24.664999}, {'word': 'phone', 'start': 24.664999, 'end': 25.064999}, {'word': 'or', 'start': 25.064999, 'end': 25.465}, {'word': 'cell', 'start': 25.465, 'end': 25.704998}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 25.704998, 'end': 26.265, 'words': [{'word': 'phone.', 'start': 25.704998, 'end': 26.265}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 26.425, 'end': 29.849998, 'words': [{'word': 'Great.', 'start': 26.425, 'end': 27.064999}, {'word': \"I'm\", 'start': 27.21, 'end': 27.609999}, {'word': 'sure', 'start': 27.609999, 'end': 27.689999}, {'word': 'I', 'start': 27.689999, 'end': 27.849998}, {'word': 'will', 'start': 27.849998, 'end': 28.009998}, {'word': 'have', 'start': 28.009998, 'end': 28.169998}, {'word': 'lots', 'start': 28.169998, 'end': 28.49}, {'word': 'of', 'start': 28.49, 'end': 28.65}, {'word': 'questions', 'start': 28.65, 'end': 29.05}, {'word': 'soon.', 'start': 29.05, 'end': 29.849998}]}, {'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 35.53, 'end': 39.05, 'words': [{'word': 'Hi.', 'start': 35.53, 'end': 36.09}, {'word': 'My', 'start': 36.09, 'end': 36.25}, {'word': 'name', 'start': 36.25, 'end': 36.41}, {'word': 'is', 'start': 36.41, 'end': 36.57}, {'word': 'Diane', 'start': 36.57, 'end': 37.05}, {'word': 'Taylor.', 'start': 37.05, 'end': 37.93}, {'word': \"I'm\", 'start': 37.93, 'end': 38.17}, {'word': 'the', 'start': 38.17, 'end': 38.329998}, {'word': 'office', 'start': 38.329998, 'end': 38.649998}, {'word': 'manager.', 'start': 38.649998, 'end': 39.05}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 39.704998, 'end': 43.385, 'words': [{'word': 'Hi,', 'start': 39.704998, 'end': 40.184998}, {'word': 'Diane.', 'start': 40.184998, 'end': 40.745}, {'word': \"I'm\", 'start': 40.745, 'end': 40.984997}, {'word': 'Cody', 'start': 40.984997, 'end': 41.385}, {'word': 'Smith.', 'start': 41.385, 'end': 42.105}, {'word': 'Nice', 'start': 42.265, 'end': 42.585}, {'word': 'to', 'start': 42.585, 'end': 42.745}, {'word': 'meet', 'start': 42.745, 'end': 42.905}, {'word': 'you.', 'start': 42.905, 'end': 43.385}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 43.464996, 'end': 47.385, 'words': [{'word': 'Nice', 'start': 43.464996, 'end': 43.945}, {'word': 'to', 'start': 43.945, 'end': 44.105}, {'word': 'meet', 'start': 44.105, 'end': 44.265}, {'word': 'you', 'start': 44.265, 'end': 44.504997}, {'word': 'too.', 'start': 44.504997, 'end': 45.065}, {'word': 'Please', 'start': 45.144997, 'end': 45.464996}, {'word': 'let', 'start': 45.464996, 'end': 45.625}, {'word': 'me', 'start': 45.625, 'end': 45.785}, {'word': 'know', 'start': 45.785, 'end': 45.945}, {'word': 'if', 'start': 45.945, 'end': 46.105}, {'word': 'you', 'start': 46.105, 'end': 46.184998}, {'word': 'have', 'start': 46.184998, 'end': 46.425}, {'word': 'any', 'start': 46.425, 'end': 46.664997}, {'word': 'questions.', 'start': 46.664997, 'end': 47.385}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 47.945, 'end': 50.265, 'words': [{'word': 'I', 'start': 47.945, 'end': 48.265}, {'word': 'will.', 'start': 48.265, 'end': 48.664997}, {'word': 'I', 'start': 48.664997, 'end': 48.745}, {'word': \"don't\", 'start': 48.745, 'end': 48.985}, {'word': 'have', 'start': 48.985, 'end': 49.144997}, {'word': 'any', 'start': 49.144997, 'end': 49.385}, {'word': 'questions', 'start': 49.385, 'end': 49.864998}, {'word': 'right', 'start': 49.864998, 'end': 50.105}, {'word': 'now.', 'start': 50.105, 'end': 50.265}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 50.797, 'end': 56.077, 'words': [{'word': 'Here', 'start': 50.797, 'end': 51.197}, {'word': 'is', 'start': 51.197, 'end': 51.357}, {'word': 'my', 'start': 51.357, 'end': 51.517}, {'word': 'business', 'start': 51.517, 'end': 51.917}, {'word': 'card.', 'start': 51.917, 'end': 52.557}, {'word': 'You', 'start': 52.557, 'end': 52.797}, {'word': 'can', 'start': 52.797, 'end': 52.957}, {'word': 'contact', 'start': 52.957, 'end': 53.357}, {'word': 'me', 'start': 53.357, 'end': 53.677}, {'word': 'by', 'start': 53.677, 'end': 53.917}, {'word': 'email,', 'start': 53.917, 'end': 54.636997}, {'word': 'office', 'start': 54.637, 'end': 55.037}, {'word': 'phone', 'start': 55.037, 'end': 55.437}, {'word': 'or', 'start': 55.437, 'end': 55.836998}, {'word': 'cell', 'start': 55.836998, 'end': 56.077}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 56.077, 'end': 56.636997, 'words': [{'word': 'phone.', 'start': 56.077, 'end': 56.636997}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 56.957, 'end': 59.836998, 'words': [{'word': 'Great.', 'start': 56.957, 'end': 57.677}, {'word': \"I'm\", 'start': 57.677, 'end': 57.917}, {'word': 'sure', 'start': 57.917, 'end': 58.077}, {'word': 'I', 'start': 58.077, 'end': 58.237}, {'word': 'will', 'start': 58.237, 'end': 58.397}, {'word': 'have', 'start': 58.397, 'end': 58.557}, {'word': 'lots', 'start': 58.557, 'end': 58.877}, {'word': 'of', 'start': 58.877, 'end': 59.037}, {'word': 'questions', 'start': 59.037, 'end': 59.437}, {'word': 'soon.', 'start': 59.437, 'end': 59.836998}]}]}\n" + ] + } + ], + "source": [ + "def group_words_into_sentences(words, max_words=15):\n", + " sentences = []\n", + " current_sentence = []\n", + " current_speaker = None\n", + " start_time = None\n", + " \n", + " for i, word_info in enumerate(words):\n", + " word = word_info[\"punctuated_word\"]\n", + " speaker = word_info[\"speaker\"]\n", + " start = word_info[\"start\"]\n", + " end = word_info[\"end\"]\n", + " \n", + " # If speaker changes or sentence reaches max length, start a new sentence\n", + " if speaker != current_speaker or len(current_sentence) >= max_words:\n", + " if current_sentence:\n", + " sentences.append({\n", + " \"sentence\": \" \".join([w[\"word\"] for w in current_sentence]),\n", + " \"speaker\": current_speaker,\n", + " \"start\": start_time,\n", + " \"end\": words[i-1][\"end\"],\n", + " \"words\": current_sentence\n", + " })\n", + " current_sentence = []\n", + " current_speaker = speaker\n", + " start_time = start\n", + " \n", + " # Append word with metadata inside the current sentence\n", + " current_sentence.append({\"word\": word, \"start\": start, \"end\": end})\n", + "\n", + " # Append the last sentence if any words remain\n", + " if current_sentence:\n", + " sentences.append({\n", + " \"sentence\": \" \".join([w[\"word\"] for w in current_sentence]),\n", + " \"speaker\": current_speaker,\n", + " \"start\": start_time,\n", + " \"end\": words[-1][\"end\"],\n", + " \"words\": current_sentence\n", + " })\n", + " \n", + " return {\"sentences\": sentences}\n", + "\n", + "\n", + "\n", + "# Example usage\n", + "'''words = [\n", + " {\"word\": \"hi\", \"start\": 5.12, \"end\": 5.68, \"confidence\": 0.850096, \"punctuated_word\": \"Hi.\", \"speaker\": 0, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"my\", \"start\": 5.68, \"end\": 5.8399997, \"confidence\": 0.997789, \"punctuated_word\": \"My\", \"speaker\": 0, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"name\", \"start\": 5.84, \"end\": 6.00, \"confidence\": 0.997789, \"punctuated_word\": \"name\", \"speaker\": 0, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"is\", \"start\": 6.01, \"end\": 6.10, \"confidence\": 0.997789, \"punctuated_word\": \"is\", \"speaker\": 1, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"John\", \"start\": 6.11, \"end\": 6.50, \"confidence\": 0.997789, \"punctuated_word\": \"John.\", \"speaker\": 1, \"speaker_confidence\": 0.93792623},\n", + "]'''\n", + "\n", + "result = group_words_into_sentences(words)\n", + "print(result)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 5.12, 'end': 9.04, 'words': [{'word': 'Hi.', 'start': 5.12, 'end': 5.68}, {'word': 'My', 'start': 5.68, 'end': 5.8399997}, {'word': 'name', 'start': 5.8399997, 'end': 6.0}, {'word': 'is', 'start': 6.0, 'end': 6.16}, {'word': 'Diane', 'start': 6.16, 'end': 6.72}, {'word': 'Taylor.', 'start': 6.72, 'end': 7.52}, {'word': \"I'm\", 'start': 7.52, 'end': 7.7599998}, {'word': 'the', 'start': 7.7599998, 'end': 7.9199996}, {'word': 'office', 'start': 7.9199996, 'end': 8.24}, {'word': 'manager.', 'start': 8.24, 'end': 9.04}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 9.28, 'end': 12.719999, 'words': [{'word': 'Hi,', 'start': 9.28, 'end': 9.76}, {'word': 'Diane.', 'start': 9.76, 'end': 10.4}, {'word': \"I'm\", 'start': 10.4, 'end': 10.639999}, {'word': 'Cody', 'start': 10.639999, 'end': 11.04}, {'word': 'Smith.', 'start': 11.04, 'end': 11.759999}, {'word': 'Nice', 'start': 11.84, 'end': 12.24}, {'word': 'to', 'start': 12.24, 'end': 12.32}, {'word': 'meet', 'start': 12.32, 'end': 12.559999}, {'word': 'you.', 'start': 12.559999, 'end': 12.719999}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 13.224999, 'end': 17.064999, 'words': [{'word': 'Nice', 'start': 13.224999, 'end': 13.544999}, {'word': 'to', 'start': 13.544999, 'end': 13.705}, {'word': 'meet', 'start': 13.705, 'end': 13.865}, {'word': 'you', 'start': 13.865, 'end': 14.105}, {'word': 'too.', 'start': 14.105, 'end': 14.664999}, {'word': 'Please', 'start': 14.745, 'end': 15.065}, {'word': 'let', 'start': 15.065, 'end': 15.304999}, {'word': 'me', 'start': 15.304999, 'end': 15.384999}, {'word': 'know', 'start': 15.384999, 'end': 15.545}, {'word': 'if', 'start': 15.545, 'end': 15.705}, {'word': 'you', 'start': 15.705, 'end': 15.865}, {'word': 'have', 'start': 15.865, 'end': 16.025}, {'word': 'any', 'start': 16.025, 'end': 16.345}, {'word': 'questions.', 'start': 16.345, 'end': 17.064999}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 17.545, 'end': 20.185, 'words': [{'word': 'I', 'start': 17.545, 'end': 17.865}, {'word': 'will.', 'start': 17.865, 'end': 18.265}, {'word': 'I', 'start': 18.265, 'end': 18.425}, {'word': \"don't\", 'start': 18.425, 'end': 18.585}, {'word': 'have', 'start': 18.585, 'end': 18.744999}, {'word': 'any', 'start': 18.744999, 'end': 18.985}, {'word': 'questions', 'start': 18.985, 'end': 19.465}, {'word': 'right', 'start': 19.465, 'end': 19.705}, {'word': 'now.', 'start': 19.705, 'end': 20.185}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 20.425, 'end': 25.704998, 'words': [{'word': 'Here', 'start': 20.425, 'end': 20.824999}, {'word': 'is', 'start': 20.824999, 'end': 20.984999}, {'word': 'my', 'start': 20.984999, 'end': 21.145}, {'word': 'business', 'start': 21.145, 'end': 21.544998}, {'word': 'card.', 'start': 21.544998, 'end': 22.185}, {'word': 'You', 'start': 22.185, 'end': 22.425}, {'word': 'can', 'start': 22.425, 'end': 22.585}, {'word': 'contact', 'start': 22.585, 'end': 23.064999}, {'word': 'me', 'start': 23.064999, 'end': 23.305}, {'word': 'by', 'start': 23.305, 'end': 23.544998}, {'word': 'email,', 'start': 23.544998, 'end': 24.265}, {'word': 'office', 'start': 24.345, 'end': 24.664999}, {'word': 'phone', 'start': 24.664999, 'end': 25.064999}, {'word': 'or', 'start': 25.064999, 'end': 25.465}, {'word': 'cell', 'start': 25.465, 'end': 25.704998}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 25.704998, 'end': 26.265, 'words': [{'word': 'phone.', 'start': 25.704998, 'end': 26.265}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 26.425, 'end': 29.849998, 'words': [{'word': 'Great.', 'start': 26.425, 'end': 27.064999}, {'word': \"I'm\", 'start': 27.21, 'end': 27.609999}, {'word': 'sure', 'start': 27.609999, 'end': 27.689999}, {'word': 'I', 'start': 27.689999, 'end': 27.849998}, {'word': 'will', 'start': 27.849998, 'end': 28.009998}, {'word': 'have', 'start': 28.009998, 'end': 28.169998}, {'word': 'lots', 'start': 28.169998, 'end': 28.49}, {'word': 'of', 'start': 28.49, 'end': 28.65}, {'word': 'questions', 'start': 28.65, 'end': 29.05}, {'word': 'soon.', 'start': 29.05, 'end': 29.849998}]}, {'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 35.53, 'end': 39.05, 'words': [{'word': 'Hi.', 'start': 35.53, 'end': 36.09}, {'word': 'My', 'start': 36.09, 'end': 36.25}, {'word': 'name', 'start': 36.25, 'end': 36.41}, {'word': 'is', 'start': 36.41, 'end': 36.57}, {'word': 'Diane', 'start': 36.57, 'end': 37.05}, {'word': 'Taylor.', 'start': 37.05, 'end': 37.93}, {'word': \"I'm\", 'start': 37.93, 'end': 38.17}, {'word': 'the', 'start': 38.17, 'end': 38.329998}, {'word': 'office', 'start': 38.329998, 'end': 38.649998}, {'word': 'manager.', 'start': 38.649998, 'end': 39.05}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 39.704998, 'end': 43.385, 'words': [{'word': 'Hi,', 'start': 39.704998, 'end': 40.184998}, {'word': 'Diane.', 'start': 40.184998, 'end': 40.745}, {'word': \"I'm\", 'start': 40.745, 'end': 40.984997}, {'word': 'Cody', 'start': 40.984997, 'end': 41.385}, {'word': 'Smith.', 'start': 41.385, 'end': 42.105}, {'word': 'Nice', 'start': 42.265, 'end': 42.585}, {'word': 'to', 'start': 42.585, 'end': 42.745}, {'word': 'meet', 'start': 42.745, 'end': 42.905}, {'word': 'you.', 'start': 42.905, 'end': 43.385}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 43.464996, 'end': 47.385, 'words': [{'word': 'Nice', 'start': 43.464996, 'end': 43.945}, {'word': 'to', 'start': 43.945, 'end': 44.105}, {'word': 'meet', 'start': 44.105, 'end': 44.265}, {'word': 'you', 'start': 44.265, 'end': 44.504997}, {'word': 'too.', 'start': 44.504997, 'end': 45.065}, {'word': 'Please', 'start': 45.144997, 'end': 45.464996}, {'word': 'let', 'start': 45.464996, 'end': 45.625}, {'word': 'me', 'start': 45.625, 'end': 45.785}, {'word': 'know', 'start': 45.785, 'end': 45.945}, {'word': 'if', 'start': 45.945, 'end': 46.105}, {'word': 'you', 'start': 46.105, 'end': 46.184998}, {'word': 'have', 'start': 46.184998, 'end': 46.425}, {'word': 'any', 'start': 46.425, 'end': 46.664997}, {'word': 'questions.', 'start': 46.664997, 'end': 47.385}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 47.945, 'end': 50.265, 'words': [{'word': 'I', 'start': 47.945, 'end': 48.265}, {'word': 'will.', 'start': 48.265, 'end': 48.664997}, {'word': 'I', 'start': 48.664997, 'end': 48.745}, {'word': \"don't\", 'start': 48.745, 'end': 48.985}, {'word': 'have', 'start': 48.985, 'end': 49.144997}, {'word': 'any', 'start': 49.144997, 'end': 49.385}, {'word': 'questions', 'start': 49.385, 'end': 49.864998}, {'word': 'right', 'start': 49.864998, 'end': 50.105}, {'word': 'now.', 'start': 50.105, 'end': 50.265}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 50.797, 'end': 56.077, 'words': [{'word': 'Here', 'start': 50.797, 'end': 51.197}, {'word': 'is', 'start': 51.197, 'end': 51.357}, {'word': 'my', 'start': 51.357, 'end': 51.517}, {'word': 'business', 'start': 51.517, 'end': 51.917}, {'word': 'card.', 'start': 51.917, 'end': 52.557}, {'word': 'You', 'start': 52.557, 'end': 52.797}, {'word': 'can', 'start': 52.797, 'end': 52.957}, {'word': 'contact', 'start': 52.957, 'end': 53.357}, {'word': 'me', 'start': 53.357, 'end': 53.677}, {'word': 'by', 'start': 53.677, 'end': 53.917}, {'word': 'email,', 'start': 53.917, 'end': 54.636997}, {'word': 'office', 'start': 54.637, 'end': 55.037}, {'word': 'phone', 'start': 55.037, 'end': 55.437}, {'word': 'or', 'start': 55.437, 'end': 55.836998}, {'word': 'cell', 'start': 55.836998, 'end': 56.077}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 56.077, 'end': 56.636997, 'words': [{'word': 'phone.', 'start': 56.077, 'end': 56.636997}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 56.957, 'end': 59.836998, 'words': [{'word': 'Great.', 'start': 56.957, 'end': 57.677}, {'word': \"I'm\", 'start': 57.677, 'end': 57.917}, {'word': 'sure', 'start': 57.917, 'end': 58.077}, {'word': 'I', 'start': 58.077, 'end': 58.237}, {'word': 'will', 'start': 58.237, 'end': 58.397}, {'word': 'have', 'start': 58.397, 'end': 58.557}, {'word': 'lots', 'start': 58.557, 'end': 58.877}, {'word': 'of', 'start': 58.877, 'end': 59.037}, {'word': 'questions', 'start': 59.037, 'end': 59.437}, {'word': 'soon.', 'start': 59.437, 'end': 59.836998}]}]\n" + ] + } + ], + "source": [ + "print(result[\"sentences\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### llm summary and output formatting" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "prompt = \"\"\" \n", + "You are an AI meeting transcript summary formatter. You will be provided with a sentence-level and word-level summary of a meeting, including timestamps for each sentence (in seconds), speaker details, and word-level timestamps. Your task is to generate a concise summary of the meeting organized into four sections:\n", + "\n", + "1. **Purpose:** A brief description of the meeting's purpose.\n", + "2. **Chapters:** A list of chapter titles that segment the meeting into key parts. Each chapter must include a timestamp (in seconds) indicating when that segment starts.\n", + "3. **Outcomes:** A coherent description of the meeting outcomes. For each outcome, include a timestamp corresponding to the relevant moment.\n", + "4. **Action Items:** A list of actionable items based on the meeting discussion. Each action item should include a timestamp indicating when it was mentioned.\n", + "\n", + "**Instructions:**\n", + "- Return a JSON response containing only the required fields with no additional commentary.\n", + "- For each section that includes a timestamp, include the timestamp exactly as provided (in seconds).\n", + "- Ensure the JSON is properly formatted and valid.\n", + "\n", + "**Example Output JSON:**\n", + "\n", + "{\n", + " \"Purpose\": {\n", + " \"text\": \"Discuss project progress and define upcoming milestones.\",\n", + " \"time_stamp\": \"1.25\"\n", + " },\n", + " \"Chapters\": [\n", + " {\n", + " \"chapter\": \"Project Overview\",\n", + " \"time_stamp\": \"1.25\"\n", + " },\n", + " {\n", + " \"chapter\": \"Budget Review\",\n", + " \"time_stamp\": \"10.50\"\n", + " },\n", + " {\n", + " \"chapter\": \"Risk Assessment\",\n", + " \"time_stamp\": \"20.00\"\n", + " }\n", + " ],\n", + " \"Outcomes\": [\n", + " {\n", + " \"text\": \"Key performance metrics were defined and improvement areas identified.\",\n", + " \"time_stamp\": \"15.30\"\n", + " },\n", + " {\n", + " \"text\": \"A revised project timeline was agreed upon.\",\n", + " \"time_stamp\": \"25.75\"\n", + " }\n", + " ],\n", + " \"Action_Items\": [\n", + " {\n", + " \"text\": \"Prepare a detailed budget report for the next meeting.\",\n", + " \"time_stamp\": \"30.45\"\n", + " },\n", + " {\n", + " \"text\": \"Schedule a follow-up meeting with all stakeholders.\",\n", + " \"time_stamp\": \"35.60\"\n", + " }\n", + " ]\n", + "}\n", + "NOTE: do not put ```json before or after the text , just return the json output format please\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Claude key 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\n" + ] + }, + { + "ename": "BadRequestError", + "evalue": "Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}}", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mBadRequestError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[25], line 11\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mClaude key \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclaude_key\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 7\u001b[0m client \u001b[38;5;241m=\u001b[39m anthropic\u001b[38;5;241m.\u001b[39mAnthropic(\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# defaults to os.environ.get(\"ANTHROPIC_API_KEY\")\u001b[39;00m\n\u001b[0;32m 9\u001b[0m api_key\u001b[38;5;241m=\u001b[39mos\u001b[38;5;241m.\u001b[39mgetenv(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mANTHTROPIC_API_KEY\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 10\u001b[0m )\n\u001b[1;32m---> 11\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mclaude-3-5-sonnet-20241022\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m4000\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\n\u001b[0;32m 15\u001b[0m \n\u001b[0;32m 16\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrole\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msystem\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcontent\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mprompt\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 17\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrole\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43muser\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcontent\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHello, Claude\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\n\u001b[0;32m 18\u001b[0m \u001b[43m \u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m 19\u001b[0m \u001b[43m)\u001b[49m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(message\u001b[38;5;241m.\u001b[39mcontent)\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_utils\\_utils.py:275\u001b[0m, in \u001b[0;36mrequired_args..inner..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 273\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing required argument: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mquote(missing[\u001b[38;5;241m0\u001b[39m])\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(msg)\n\u001b[1;32m--> 275\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\resources\\messages\\messages.py:904\u001b[0m, in \u001b[0;36mMessages.create\u001b[1;34m(self, max_tokens, messages, model, metadata, stop_sequences, stream, system, temperature, tool_choice, tools, top_k, top_p, extra_headers, extra_query, extra_body, timeout)\u001b[0m\n\u001b[0;32m 897\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m model \u001b[38;5;129;01min\u001b[39;00m DEPRECATED_MODELS:\n\u001b[0;32m 898\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 899\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe model \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m is deprecated and will reach end-of-life on \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDEPRECATED_MODELS[model]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 900\u001b[0m \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m,\n\u001b[0;32m 901\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m,\n\u001b[0;32m 902\u001b[0m )\n\u001b[1;32m--> 904\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_post\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 905\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/v1/messages\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 906\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaybe_transform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 907\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[0;32m 908\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax_tokens\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 909\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmessages\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 910\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 911\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmetadata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 912\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstop_sequences\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop_sequences\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 913\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstream\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 914\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msystem\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msystem\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 915\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtemperature\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtool_choice\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtool_choice\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtools\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtools\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_k\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_k\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_p\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_p\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 920\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 921\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage_create_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMessageCreateParams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 922\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 923\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmake_request_options\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 924\u001b[0m \u001b[43m \u001b[49m\u001b[43mextra_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_headers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_query\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_query\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_body\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\n\u001b[0;32m 925\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 926\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mMessage\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 927\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 928\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mStream\u001b[49m\u001b[43m[\u001b[49m\u001b[43mRawMessageStreamEvent\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 929\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_base_client.py:1282\u001b[0m, in \u001b[0;36mSyncAPIClient.post\u001b[1;34m(self, path, cast_to, body, options, files, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1268\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mpost\u001b[39m(\n\u001b[0;32m 1269\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1270\u001b[0m path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1277\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 1278\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[0;32m 1279\u001b[0m opts \u001b[38;5;241m=\u001b[39m FinalRequestOptions\u001b[38;5;241m.\u001b[39mconstruct(\n\u001b[0;32m 1280\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url\u001b[38;5;241m=\u001b[39mpath, json_data\u001b[38;5;241m=\u001b[39mbody, files\u001b[38;5;241m=\u001b[39mto_httpx_files(files), \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39moptions\n\u001b[0;32m 1281\u001b[0m )\n\u001b[1;32m-> 1282\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m cast(ResponseT, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_base_client.py:959\u001b[0m, in \u001b[0;36mSyncAPIClient.request\u001b[1;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[0;32m 956\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 957\u001b[0m retries_taken \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m--> 959\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 960\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 961\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 962\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 963\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 964\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries_taken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries_taken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 965\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_base_client.py:1063\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[1;34m(self, cast_to, options, retries_taken, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1060\u001b[0m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mread()\n\u001b[0;32m 1062\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRe-raising status error\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m-> 1063\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_status_error_from_response(err\u001b[38;5;241m.\u001b[39mresponse) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1065\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_response(\n\u001b[0;32m 1066\u001b[0m cast_to\u001b[38;5;241m=\u001b[39mcast_to,\n\u001b[0;32m 1067\u001b[0m options\u001b[38;5;241m=\u001b[39moptions,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1071\u001b[0m retries_taken\u001b[38;5;241m=\u001b[39mretries_taken,\n\u001b[0;32m 1072\u001b[0m )\n", + "\u001b[1;31mBadRequestError\u001b[0m: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}}" + ] + } + ], + "source": [ + "import anthropic\n", + "import os\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "claude_key = os.getenv(\"ANTHTROPIC_API_KEY\")\n", + "print(f\"Claude key {claude_key}\")\n", + "client = anthropic.Anthropic(\n", + " # defaults to os.environ.get(\"ANTHROPIC_API_KEY\")\n", + " api_key=os.getenv(\"ANTHTROPIC_API_KEY\"),\n", + ")\n", + "message = client.messages.create(\n", + " model=\"claude-3-5-sonnet-20241022\",\n", + " max_tokens=4000,\n", + " messages=[\n", + "\n", + " {\"role\": \"system\", \"content\": f\"{prompt}\"},\n", + " {\"role\": \"user\", \"content\": \"Hello, Claude\"}\n", + " ]\n", + ")\n", + "print(message.content)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"Hi. My name is Diane Taylor. I'm the office manager.\",\n", + " \"Hi, Diane. I'm Cody Smith. Nice to meet you.\",\n", + " 'Nice to meet you too. Please let me know if you have any questions.',\n", + " \"I will. I don't have any questions right now.\",\n", + " 'Here is my business card. You can contact me by email, office phone or cell',\n", + " 'phone.',\n", + " \"Great. I'm sure I will have lots of questions soon.\",\n", + " \"Hi. My name is Diane Taylor. I'm the office manager.\",\n", + " \"Hi, Diane. I'm Cody Smith. Nice to meet you.\",\n", + " 'Nice to meet you too. Please let me know if you have any questions.',\n", + " \"I will. I don't have any questions right now.\",\n", + " 'Here is my business card. You can contact me by email, office phone or cell',\n", + " 'phone.',\n", + " \"Great. I'm sure I will have lots of questions soon.\"]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sentences" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ListenRESTWord(word='hi', start=5.12, end=5.68, confidence=0.850096, punctuated_word='Hi.', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=5.68, end=5.8399997, confidence=0.997789, punctuated_word='My', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='name', start=5.8399997, end=6.0, confidence=0.99926835, punctuated_word='name', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=6.0, end=6.16, confidence=0.99669075, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=6.16, end=6.72, confidence=0.9475148, punctuated_word='Diane', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='taylor', start=6.72, end=7.52, confidence=0.9952364, punctuated_word='Taylor.', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=7.52, end=7.7599998, confidence=0.9967487, punctuated_word=\"I'm\", speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='the', start=7.7599998, end=7.9199996, confidence=0.9995815, punctuated_word='the', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=7.9199996, end=8.24, confidence=0.9646264, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='manager', start=8.24, end=9.04, confidence=0.992903, punctuated_word='manager.', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='hi', start=9.28, end=9.76, confidence=0.965518, punctuated_word='Hi,', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=9.76, end=10.4, confidence=0.9970196, punctuated_word='Diane.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=10.4, end=10.639999, confidence=0.9990172, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cody', start=10.639999, end=11.04, confidence=0.9035979, punctuated_word='Cody', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='smith', start=11.04, end=11.759999, confidence=0.99773884, punctuated_word='Smith.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=11.84, end=12.24, confidence=0.9996824, punctuated_word='Nice', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=12.24, end=12.32, confidence=0.99977976, punctuated_word='to', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=12.32, end=12.559999, confidence=0.99973255, punctuated_word='meet', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=12.559999, end=12.719999, confidence=0.99866223, punctuated_word='you.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=13.224999, end=13.544999, confidence=0.9992798, punctuated_word='Nice', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=13.544999, end=13.705, confidence=0.9995739, punctuated_word='to', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=13.705, end=13.865, confidence=0.9988772, punctuated_word='meet', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=13.865, end=14.105, confidence=0.99925274, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='too', start=14.105, end=14.664999, confidence=0.9016343, punctuated_word='too.', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='please', start=14.745, end=15.065, confidence=0.9992387, punctuated_word='Please', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='let', start=15.065, end=15.304999, confidence=0.98098606, punctuated_word='let', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=15.304999, end=15.384999, confidence=0.9992964, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='know', start=15.384999, end=15.545, confidence=0.9994412, punctuated_word='know', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='if', start=15.545, end=15.705, confidence=0.9976265, punctuated_word='if', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=15.705, end=15.865, confidence=0.9991308, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=15.865, end=16.025, confidence=0.9991092, punctuated_word='have', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=16.025, end=16.345, confidence=0.99459064, punctuated_word='any', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=16.345, end=17.064999, confidence=0.988152, punctuated_word='questions.', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=17.545, end=17.865, confidence=0.99904555, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=17.865, end=18.265, confidence=0.9280047, punctuated_word='will.', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=18.265, end=18.425, confidence=0.99965835, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"don't\", start=18.425, end=18.585, confidence=0.99987173, punctuated_word=\"don't\", speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=18.585, end=18.744999, confidence=0.99926573, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=18.744999, end=18.985, confidence=0.9960824, punctuated_word='any', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=18.985, end=19.465, confidence=0.9986945, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='right', start=19.465, end=19.705, confidence=0.99768794, punctuated_word='right', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='now', start=19.705, end=20.185, confidence=0.9974798, punctuated_word='now.', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='here', start=20.425, end=20.824999, confidence=0.99939764, punctuated_word='Here', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=20.824999, end=20.984999, confidence=0.9719598, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=20.984999, end=21.145, confidence=0.99968374, punctuated_word='my', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='business', start=21.145, end=21.544998, confidence=0.9982492, punctuated_word='business', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='card', start=21.544998, end=22.185, confidence=0.98301756, punctuated_word='card.', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=22.185, end=22.425, confidence=0.99935585, punctuated_word='You', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='can', start=22.425, end=22.585, confidence=0.9995994, punctuated_word='can', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='contact', start=22.585, end=23.064999, confidence=0.99952483, punctuated_word='contact', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=23.064999, end=23.305, confidence=0.99856913, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='by', start=23.305, end=23.544998, confidence=0.99770606, punctuated_word='by', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='email', start=23.544998, end=24.265, confidence=0.971478, punctuated_word='email,', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=24.345, end=24.664999, confidence=0.9964013, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=24.664999, end=25.064999, confidence=0.9928808, punctuated_word='phone', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='or', start=25.064999, end=25.465, confidence=0.6600872, punctuated_word='or', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cell', start=25.465, end=25.704998, confidence=0.8836563, punctuated_word='cell', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=25.704998, end=26.265, confidence=0.9960382, punctuated_word='phone.', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='great', start=26.425, end=27.064999, confidence=0.9100342, punctuated_word='Great.', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=27.21, end=27.609999, confidence=0.98228633, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='sure', start=27.609999, end=27.689999, confidence=0.99953175, punctuated_word='sure', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=27.689999, end=27.849998, confidence=0.98055536, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=27.849998, end=28.009998, confidence=0.9949708, punctuated_word='will', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=28.009998, end=28.169998, confidence=0.9977138, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='lots', start=28.169998, end=28.49, confidence=0.9862031, punctuated_word='lots', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='of', start=28.49, end=28.65, confidence=0.99797314, punctuated_word='of', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=28.65, end=29.05, confidence=0.9926537, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='soon', start=29.05, end=29.849998, confidence=0.9892111, punctuated_word='soon.', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='hi', start=35.53, end=36.09, confidence=0.8361318, punctuated_word='Hi.', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=36.09, end=36.25, confidence=0.9970067, punctuated_word='My', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='name', start=36.25, end=36.41, confidence=0.99931157, punctuated_word='name', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=36.41, end=36.57, confidence=0.99615246, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=36.57, end=37.05, confidence=0.9333365, punctuated_word='Diane', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='taylor', start=37.05, end=37.93, confidence=0.98755586, punctuated_word='Taylor.', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=37.93, end=38.17, confidence=0.9915285, punctuated_word=\"I'm\", speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='the', start=38.17, end=38.329998, confidence=0.99903524, punctuated_word='the', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=38.329998, end=38.649998, confidence=0.9606139, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='manager', start=38.649998, end=39.05, confidence=0.9932635, punctuated_word='manager.', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='hi', start=39.704998, end=40.184998, confidence=0.9040867, punctuated_word='Hi,', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=40.184998, end=40.745, confidence=0.99451363, punctuated_word='Diane.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=40.745, end=40.984997, confidence=0.9980361, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cody', start=40.984997, end=41.385, confidence=0.91505414, punctuated_word='Cody', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='smith', start=41.385, end=42.105, confidence=0.9930361, punctuated_word='Smith.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=42.265, end=42.585, confidence=0.9996131, punctuated_word='Nice', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=42.585, end=42.745, confidence=0.99959916, punctuated_word='to', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=42.745, end=42.905, confidence=0.9997062, punctuated_word='meet', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=42.905, end=43.385, confidence=0.9968122, punctuated_word='you.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=43.464996, end=43.945, confidence=0.99911886, punctuated_word='Nice', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=43.945, end=44.105, confidence=0.9995363, punctuated_word='to', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=44.105, end=44.265, confidence=0.99923074, punctuated_word='meet', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=44.265, end=44.504997, confidence=0.99961686, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='too', start=44.504997, end=45.065, confidence=0.9195763, punctuated_word='too.', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='please', start=45.144997, end=45.464996, confidence=0.99944204, punctuated_word='Please', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='let', start=45.464996, end=45.625, confidence=0.9877528, punctuated_word='let', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=45.625, end=45.785, confidence=0.999493, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='know', start=45.785, end=45.945, confidence=0.99970347, punctuated_word='know', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='if', start=45.945, end=46.105, confidence=0.9986369, punctuated_word='if', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=46.105, end=46.184998, confidence=0.9993949, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=46.184998, end=46.425, confidence=0.9995105, punctuated_word='have', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=46.425, end=46.664997, confidence=0.9977247, punctuated_word='any', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=46.664997, end=47.385, confidence=0.9945705, punctuated_word='questions.', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=47.945, end=48.265, confidence=0.99928015, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=48.265, end=48.664997, confidence=0.9706428, punctuated_word='will.', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=48.664997, end=48.745, confidence=0.99981517, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"don't\", start=48.745, end=48.985, confidence=0.9999059, punctuated_word=\"don't\", speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=48.985, end=49.144997, confidence=0.9995772, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=49.144997, end=49.385, confidence=0.9978538, punctuated_word='any', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=49.385, end=49.704998, confidence=0.9990778, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='right', start=49.704998, end=50.105, confidence=0.9986975, punctuated_word='right', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='now', start=50.105, end=50.265, confidence=0.9981499, punctuated_word='now.', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='here', start=50.797, end=51.197, confidence=0.9993298, punctuated_word='Here', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=51.197, end=51.357, confidence=0.9788765, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=51.357, end=51.517, confidence=0.9996809, punctuated_word='my', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='business', start=51.517, end=51.917, confidence=0.99878675, punctuated_word='business', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='card', start=51.917, end=52.557, confidence=0.98543835, punctuated_word='card.', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=52.557, end=52.797, confidence=0.9990195, punctuated_word='You', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='can', start=52.797, end=52.957, confidence=0.9994305, punctuated_word='can', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='contact', start=52.957, end=53.357, confidence=0.99931026, punctuated_word='contact', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=53.357, end=53.677, confidence=0.99791497, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='by', start=53.677, end=53.917, confidence=0.9978271, punctuated_word='by', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='email', start=53.917, end=54.636997, confidence=0.96484137, punctuated_word='email,', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=54.637, end=55.037, confidence=0.9954987, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=55.037, end=55.437, confidence=0.9935929, punctuated_word='phone', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='or', start=55.437, end=55.836998, confidence=0.6401216, punctuated_word='or', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cell', start=55.836998, end=56.077, confidence=0.88851297, punctuated_word='cell', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=56.077, end=56.636997, confidence=0.9945084, punctuated_word='phone.', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='great', start=57.197, end=57.677, confidence=0.82068324, punctuated_word='Great.', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=57.677, end=57.917, confidence=0.9640242, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='sure', start=57.917, end=58.077, confidence=0.99950755, punctuated_word='sure', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=58.077, end=58.237, confidence=0.97311676, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=58.237, end=58.397, confidence=0.9965449, punctuated_word='will', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=58.397, end=58.557, confidence=0.99820924, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='lots', start=58.557, end=58.877, confidence=0.9911178, punctuated_word='lots', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='of', start=58.877, end=59.037, confidence=0.99819773, punctuated_word='of', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=59.037, end=59.437, confidence=0.99324834, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='soon', start=59.437, end=59.836998, confidence=0.9936868, punctuated_word='soon.', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None)]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "words" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Metadata' object has no attribute 'results'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[13], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresults\u001b[49m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'Metadata' object has no attribute 'results'" + ] + } + ], + "source": [ + "response" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'moviepy.editor'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[39], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mos\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mrandom\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mmoviepy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01meditor\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m VideoFileClip\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mextract_audio\u001b[39m(\u001b[38;5;28mself\u001b[39m, video_path, audio_output_path\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 5\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;124;03m Extract audio from video file using MoviePy\u001b[39;00m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'moviepy.editor'" + ] + } + ], + "source": [ + "import os\n", + "import random\n", + "from moviepy.editor import VideoFileClip\n", + "def extract_audio(self, video_path, audio_output_path=None):\n", + " \"\"\"\n", + " Extract audio from video file using MoviePy\n", + " \"\"\"\n", + " try:\n", + " video_clip = VideoFileClip(video_path)\n", + " audio_clip = video_clip.audio\n", + "\n", + " # Generate output path if not provided\n", + " if audio_output_path is None:\n", + " audio_extension = \"mp3\" if audio_clip.fps == 44100 else \"wav\"\n", + " audio_output_path = os.path.splitext(video_path)[0] + \"_audio.\" + audio_extension\n", + "\n", + " # Write the audio to a file\n", + " audio_clip.write_audiofile(audio_output_path)\n", + "\n", + " # Close the video and audio clips\n", + " video_clip.close()\n", + " audio_clip.close()\n", + "\n", + " return audio_output_path\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error extracting audio: {str(e)}\")\n", + " return None\n", + " \n", + "res = extract_audio(audio_url)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[generic] Extracting URL: https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/038426704141Business%20English%...0New%20Colleague.mp4\n", + "[generic] 038426704141Business English Conversation Lesson 45_ Meeting a New Colleague: Downloading webpage\n", + "[info] 038426704141Business English Conversation Lesson 45_ Meeting a New Colleague: Downloading 1 format(s): mp4\n", + "[download] Destination: downloaded_video.mp4\n", + "[download] 100% of 1.37MiB in 00:00:02 at 653.53KiB/s \n" + ] + } + ], + "source": [ + "import subprocess\n", + "import yt_dlp\n", + "import os\n", + "\n", + "def download_video(url, output_path=\"downloaded_video.mp4\"):\n", + " \"\"\"Download video from URL using yt-dlp.\"\"\"\n", + " ydl_opts = {\"outtmpl\": output_path}\n", + " with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", + " ydl.download([url])\n", + " return output_path\n", + "\n", + "def extract_audio(input_video, output_audio=\"output_audio.mp3\"):\n", + " \"\"\"Extract audio from a video file using FFmpeg.\"\"\"\n", + " command = [\n", + " \"ffmpeg\",\n", + " \"-i\", input_video, # Input file\n", + " \"-q:a\", \"0\", # Highest audio quality\n", + " \"-map\", \"a\", # Extract only the audio stream\n", + " \"-c:a\", \"copy\", # No re-encoding (FASTEST)\n", + " output_audio\n", + " ]\n", + " subprocess.run(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)\n", + " return output_audio\n", + "\n", + "def delete_file(file_path):\n", + " \"\"\"Delete a file from the system.\"\"\"\n", + " if os.path.exists(file_path):\n", + " os.remove(file_path)\n", + " print(f\"Deleted: {file_path}\")\n", + "\n", + "\n", + "\n", + "# Step 1: Download the video\n", + "video_file = download_video(video_url)\n", + "\n", + "# Step 2: Extract audio from the downloaded video\n", + "audio_file = extract_audio(video_file, \"output_audio.mp3\")\n", + "\n", + "# Step 3: Delete the downloaded video\n", + "delete_file(video_file)\n", + "\n", + "print(f\"Audio saved as: {audio_file}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning: Expected file '038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague.mp3' not found. Using '038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_bae0c94dd7784aa8b0dce186d74598ee.mp3' as fallback.\n", + "Audio saved at: c:\\Users\\User\\Desktop\\Blessing_AI\\MKD\\ds_microdot\\notebooks\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_bae0c94dd7784aa8b0dce186d74598ee.mp3\n" + ] + } + ], + "source": [ + "import yt_dlp\n", + "import os\n", + "import re\n", + "import uuid\n", + "\n", + "def sanitize_filename(name: str) -> str:\n", + " \"\"\"\n", + " Remove characters from the filename that are not allowed in many file systems.\n", + " \"\"\"\n", + " return re.sub(r'[^\\w\\s-]', '', name).strip().replace(' ', '_')\n", + "\n", + "def extract_audio(url: str, output_template=\"%(title)s.%(ext)s\") -> str:\n", + " \n", + " ydl_opts = {\n", + " \"format\": \"bestaudio/best\",\n", + " \"outtmpl\": output_template,\n", + " \"postprocessors\": [{\n", + " \"key\": \"FFmpegExtractAudio\",\n", + " \"preferredcodec\": \"mp3\",\n", + " \"preferredquality\": \"192\",\n", + " }],\n", + " \"quiet\": True # Set to False if you want yt-dlp output for debugging\n", + " }\n", + " \n", + " with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", + " info = ydl.extract_info(url, download=True)\n", + " \n", + " # Get the video's title and sanitize it\n", + " title = info.get('title', 'audio')\n", + " safe_title = sanitize_filename(title)\n", + " \n", + " # Generate a unique identifier\n", + " unique_id = uuid.uuid4().hex # Use hex format for compactness\n", + " \n", + " # Construct the new filename with the unique id appended\n", + " new_audio_filename = f\"{safe_title}_{unique_id}.mp3\"\n", + " \n", + " # The postprocessor creates the file based on the original template.\n", + " # Typically the file is saved as \".mp3\"\n", + " original_filename = f\"{safe_title}.mp3\"\n", + " \n", + " if os.path.exists(original_filename):\n", + " os.rename(original_filename, new_audio_filename)\n", + " else:\n", + " print(f\"Warning: Expected file '{original_filename}' not found. Using '{new_audio_filename}' as fallback.\")\n", + " \n", + " # Return the absolute path to the renamed audio file\n", + " abs_audio_path = os.path.abspath(new_audio_filename)\n", + " return abs_audio_path\n", + "\n", + "# Example usage:\n", + "if __name__ == \"__main__\":\n", + "\n", + " audio_path = extract_audio(video_url)\n", + " print(f\"Audio saved at: {audio_path}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "import os\n", + "import random\n", + "from moviepy.editor import VideoFileClip\n", + "def extract_audio(self, video_path, audio_output_path=None):\n", + " \"\"\"\n", + " Extract audio from video file using MoviePy\n", + " \"\"\"\n", + " try:\n", + " video_clip = VideoFileClip(video_path)\n", + " audio_clip = video_clip.audio\n", + "\n", + " # Generate output path if not provided\n", + " if audio_output_path is None:\n", + " audio_extension = \"mp3\" if audio_clip.fps == 44100 else \"wav\"\n", + " audio_output_path = os.path.splitext(video_path)[0] + \"_audio.\" + audio_extension\n", + "\n", + " # Write the audio to a file\n", + " audio_clip.write_audiofile(audio_output_path)\n", + "\n", + " # Close the video and audio clips\n", + " video_clip.close()\n", + " audio_clip.close()\n", + "\n", + " return audio_output_path\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error extracting audio: {str(e)}\")\n", + " return None\n", + " \n", + "res = extract_audio()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import runpod\n", + "import requests\n", + "\n", + "\n", + "class RunPodAudioProvider:\n", + " def __init__(self, api_key, model=\"small\", **kwargs):\n", + " self.api_key = api_key\n", + " runpod.api_key = self.api_key\n", + " self.endpoint_id = kwargs.get('endpoint_id', None)\n", + " self.model = model\n", + " self.endpoint = runpod.Endpoint(self.endpoint_id)\n", + " print(f\"[DEBUG] Initialized RunPodAudioProvider with endpoint ID: {self.endpoint_id}\")\n", + "\n", + " def extract_audio(self, video_path, audio_output_path=None):\n", + " \"\"\"\n", + " Extract audio from video file using MoviePy\n", + " \"\"\"\n", + " try:\n", + " video_clip = VideoFileClip(video_path)\n", + " audio_clip = video_clip.audio\n", + "\n", + " # Generate output path if not provided\n", + " if audio_output_path is None:\n", + " audio_extension = \"mp3\" if audio_clip.fps == 44100 else \"wav\"\n", + " audio_output_path = os.path.splitext(video_path)[0] + \"_audio.\" + audio_extension\n", + "\n", + " # Write the audio to a file\n", + " audio_clip.write_audiofile(audio_output_path)\n", + "\n", + " # Close the video and audio clips\n", + " video_clip.close()\n", + " audio_clip.close()\n", + "\n", + " return audio_output_path\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error extracting audio: {str(e)}\")\n", + " return None\n", + "\n", + " def transcribe_video(self, video_path):\n", + " \"\"\"\n", + " Transcribe video by first extracting audio and then processing it\n", + " \"\"\"\n", + " try:\n", + " # Extract audio from video\n", + " audio_path = self.extract_audio(video_path)\n", + " if not audio_path:\n", + " raise Exception(\"Failed to extract audio from video\")\n", + "\n", + " # Create a resized copy of the video\n", + " output_path = self.rename_file_as_copy(video_path)\n", + " video_clip = VideoFileClip(video_path)\n", + " resized_clip = video_clip.resize(newsize=(640, 360))\n", + " resized_clip.write_videofile(output_path)\n", + " video_clip.close()\n", + " resized_clip.close()\n", + "\n", + " # Transcribe the extracted audio\n", + " transcript = self.transcribe(audio=audio_path)\n", + "\n", + " # Clean up temporary files\n", + " try:\n", + " os.remove(audio_path)\n", + " os.remove(video_path)\n", + " except Exception as e:\n", + " print(f\"[WARNING] Error cleaning up temporary files: {str(e)}\")\n", + "\n", + " return transcript, output_path\n", + "\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error in video transcription: {str(e)}\")\n", + " return None, None\n", + "\n", + " def get_job_status(self, job_id):\n", + " url = f\"https://api.runpod.ai/v2/{self.endpoint_id}/status/{job_id}\"\n", + " headers = {\n", + " \"Authorization\": f\"Bearer {self.api_key}\"\n", + " }\n", + " \n", + " try:\n", + " response = requests.get(url, headers=headers)\n", + " if response.status_code == 200:\n", + " print(f\"[DEBUG] Job status retrieved for Job ID {job_id}: {response.json()}\")\n", + " return response.json()\n", + " else:\n", + " print(f\"[ERROR] Failed to retrieve status for Job ID {job_id}, Status Code: {response.status_code}\")\n", + " return None\n", + " except Exception as e:\n", + " print(f\"[ERROR] Exception while checking job status for Job ID {job_id}: {str(e)}\")\n", + " return None\n", + "\n", + " def transcribe(self, audio=None):\n", + " import time\n", + " \n", + " if not audio:\n", + " print(\"[DEBUG] No audio provided.\")\n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": None,\n", + " \"status\": \"FAILED\"\n", + " }\n", + "\n", + " try:\n", + " print(f\"[DEBUG] Submitting transcription job for audio: {audio}\")\n", + " run_request = self.endpoint.run({\n", + " \"input\": {\n", + " \"audio_url\": audio,\n", + " \"model_name\": self.model\n", + " }\n", + " })\n", + " \n", + " job_id = run_request.job_id\n", + " print(f\"[DEBUG] Job submitted with Job ID: {job_id}\")\n", + " \n", + " start_time = time.time()\n", + " while time.time() - start_time < 300: # 5 minutes timeout\n", + " time.sleep(30)\n", + " \n", + " status_response = self.get_job_status(job_id)\n", + " if not status_response:\n", + " continue\n", + " current_status = status_response.get(\"status\")\n", + " \n", + " if current_status == \"COMPLETED\":\n", + " output = status_response.get(\"output\", [])\n", + " print(f\"[DEBUG] Transcription job completed for Job ID: {job_id}\")\n", + " \n", + " return {\n", + " \"text\": output[\"conversation\"],\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": job_id,\n", + " \"status\": \"COMPLETED\"\n", + " }\n", + " \n", + " print(f\"[DEBUG] Job status for Job ID {job_id}: {current_status}. Continuing to wait...\")\n", + " \n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": job_id,\n", + " \"status\": current_status\n", + " }\n", + " \n", + " except Exception as e:\n", + " print(f\"[ERROR] RunPod transcription error: {str(e)}\")\n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": None,\n", + " \"status\": \"ERROR\"\n", + " }\n", + "\n", + " @staticmethod\n", + " def rename_file_as_copy(file_path):\n", + " \"\"\"Generate a new filename with _copy suffix and random number\"\"\"\n", + " dir_path, file_name = os.path.split(file_path)\n", + " name, ext = os.path.splitext(file_name)\n", + " random_text = f\"_{random.randint(1, 1000)}\"\n", + " new_name = f\"{name}_copy{random_text}{ext}\"\n", + " return os.path.join(dir_path, new_name)\n", + "\n", + " def translate(self, audio=None):\n", + " \"\"\"\n", + " Placeholder for translate method - not implemented for RunPod\n", + " \"\"\"\n", + " print(\"[DEBUG] Translate method not implemented.\")\n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\"\n", + " }\n", + "\n", + "\n", + " def speak(self, text=\"\", voice=\"default\", model=None, output_file=None, output_format=\"mp3\"):\n", + " \"\"\"\n", + " Placeholder for speak method - not implemented for RunPod\n", + " \"\"\"\n", + " print(\"[DEBUG] Speak method not implemented.\")\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "fire", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/test.py b/notebooks/test.py new file mode 100644 index 0000000..3f2ff2d --- /dev/null +++ b/notebooks/test.py @@ -0,0 +1,5 @@ + + + + + diff --git a/notebooks/trials.ipynb b/notebooks/trials.ipynb new file mode 100644 index 0000000..13a5b65 --- /dev/null +++ b/notebooks/trials.ipynb @@ -0,0 +1,5563 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Transcription" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using Deepgram API Key: f772035645279e5a56b46c2b01cbf86310362416\n", + "Renamed file to: ../uploads\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_4572a928681e482d924daf705fe8cc3e.mp3\n", + "Extracted audio to: c:\\Users\\User\\Desktop\\Blessing_AI\\MKD\\ds_microdot\\uploads\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_4572a928681e482d924daf705fe8cc3e.mp3\n", + "Deleted local audio file: c:\\Users\\User\\Desktop\\Blessing_AI\\MKD\\ds_microdot\\uploads\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_4572a928681e482d924daf705fe8cc3e.mp3\n", + "Transcription response: {\n", + " \"metadata\": {\n", + " \"transaction_key\": \"deprecated\",\n", + " \"request_id\": \"cf9f2d6e-4e4b-4ca4-994a-a422ca179e56\",\n", + " \"sha256\": \"6c4875f9241745ecbdae1fce078168dc958f1d6b3b843c7addaca5db277cfba7\",\n", + " \"created\": \"2025-02-14T17:17:49.647Z\",\n", + " \"duration\": 62.302,\n", + " \"channels\": 1,\n", + " \"models\": [\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\"\n", + " ],\n", + " \"model_info\": {\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\": {\n", + " \"name\": \"general-nova-3\",\n", + " \"version\": \"2024-12-20.0\",\n", + " \"arch\": \"nova-3\"\n", + " }\n", + " }\n", + " },\n", + " \"results\": {\n", + " \"channels\": [\n", + " {\n", + " \"alternatives\": [\n", + " {\n", + " \"transcript\": \"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\",\n", + " \"confidence\": 0.9980469,\n", + " \"words\": [\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68,\n", + " \"confidence\": 0.82910156,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 5.68,\n", + " \"end\": 5.8399997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 5.8399997,\n", + " \"end\": 6.0,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 6.0,\n", + " \"end\": 6.16,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 6.16,\n", + " \"end\": 6.72,\n", + " \"confidence\": 0.94628906,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 6.72,\n", + " \"end\": 7.52,\n", + " \"confidence\": 0.99560547,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 7.52,\n", + " \"end\": 7.7599998,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 7.7599998,\n", + " \"end\": 7.9199996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 7.9199996,\n", + " \"end\": 8.24,\n", + " \"confidence\": 0.9614258,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 8.24,\n", + " \"end\": 9.04,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 9.28,\n", + " \"end\": 9.76,\n", + " \"confidence\": 0.96533203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 9.76,\n", + " \"end\": 10.4,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 10.4,\n", + " \"end\": 10.639999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 10.639999,\n", + " \"end\": 11.04,\n", + " \"confidence\": 0.9003906,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 11.04,\n", + " \"end\": 11.759999,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.24,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 12.24,\n", + " \"end\": 12.32,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 12.32,\n", + " \"end\": 12.559999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 12.559999,\n", + " \"end\": 12.719999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 13.224999,\n", + " \"end\": 13.544999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 13.544999,\n", + " \"end\": 13.705,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 13.705,\n", + " \"end\": 13.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 13.865,\n", + " \"end\": 14.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 14.105,\n", + " \"end\": 14.664999,\n", + " \"confidence\": 0.89624023,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 14.745,\n", + " \"end\": 15.065,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 15.065,\n", + " \"end\": 15.304999,\n", + " \"confidence\": 0.98095703,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 15.304999,\n", + " \"end\": 15.384999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 15.384999,\n", + " \"end\": 15.545,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 15.545,\n", + " \"end\": 15.705,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 15.705,\n", + " \"end\": 15.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 15.865,\n", + " \"end\": 16.025,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 16.025,\n", + " \"end\": 16.345,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 16.345,\n", + " \"end\": 17.064999,\n", + " \"confidence\": 0.9890137,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 17.545,\n", + " \"end\": 17.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 17.865,\n", + " \"end\": 18.265,\n", + " \"confidence\": 0.92700195,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 18.265,\n", + " \"end\": 18.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 18.425,\n", + " \"end\": 18.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 18.585,\n", + " \"end\": 18.744999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 18.744999,\n", + " \"end\": 18.985,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 18.985,\n", + " \"end\": 19.465,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 19.465,\n", + " \"end\": 19.705,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 19.705,\n", + " \"end\": 20.185,\n", + " \"confidence\": 0.9975586,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 20.425,\n", + " \"end\": 20.824999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 20.824999,\n", + " \"end\": 20.984999,\n", + " \"confidence\": 0.97265625,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 20.984999,\n", + " \"end\": 21.145,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 21.145,\n", + " \"end\": 21.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 21.544998,\n", + " \"end\": 22.185,\n", + " \"confidence\": 0.9824219,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 22.185,\n", + " \"end\": 22.425,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 22.425,\n", + " \"end\": 22.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 22.585,\n", + " \"end\": 23.064999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 23.064999,\n", + " \"end\": 23.305,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 23.305,\n", + " \"end\": 23.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 23.544998,\n", + " \"end\": 24.265,\n", + " \"confidence\": 0.9724121,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 24.345,\n", + " \"end\": 24.664999,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 24.664999,\n", + " \"end\": 25.064999,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 25.064999,\n", + " \"end\": 25.465,\n", + " \"confidence\": 0.64501953,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 25.465,\n", + " \"end\": 25.704998,\n", + " \"confidence\": 0.8857422,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 25.704998,\n", + " \"end\": 26.265,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999,\n", + " \"confidence\": 0.91381836,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 27.21,\n", + " \"end\": 27.609999,\n", + " \"confidence\": 0.98339844,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 27.609999,\n", + " \"end\": 27.689999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 27.689999,\n", + " \"end\": 27.849998,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 27.849998,\n", + " \"end\": 28.009998,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 28.009998,\n", + " \"end\": 28.169998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 28.169998,\n", + " \"end\": 28.49,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 28.49,\n", + " \"end\": 28.65,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 28.65,\n", + " \"end\": 29.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 29.05,\n", + " \"end\": 29.849998,\n", + " \"confidence\": 0.98999023,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09,\n", + " \"confidence\": 0.8376465,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 36.09,\n", + " \"end\": 36.25,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 36.25,\n", + " \"end\": 36.41,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 36.41,\n", + " \"end\": 36.57,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 36.57,\n", + " \"end\": 37.05,\n", + " \"confidence\": 0.93408203,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 37.05,\n", + " \"end\": 37.93,\n", + " \"confidence\": 0.9875488,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 37.93,\n", + " \"end\": 38.17,\n", + " \"confidence\": 0.9921875,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 38.17,\n", + " \"end\": 38.329998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 38.329998,\n", + " \"end\": 38.649998,\n", + " \"confidence\": 0.9589844,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 38.649998,\n", + " \"end\": 39.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.184998,\n", + " \"confidence\": 0.9033203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 40.184998,\n", + " \"end\": 40.745,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 40.745,\n", + " \"end\": 40.984997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 40.984997,\n", + " \"end\": 41.385,\n", + " \"confidence\": 0.9140625,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 41.385,\n", + " \"end\": 42.105,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 42.265,\n", + " \"end\": 42.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 42.585,\n", + " \"end\": 42.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 42.745,\n", + " \"end\": 42.905,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 42.905,\n", + " \"end\": 43.385,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 43.464996,\n", + " \"end\": 43.945,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 43.945,\n", + " \"end\": 44.105,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 44.105,\n", + " \"end\": 44.265,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 44.265,\n", + " \"end\": 44.504997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 44.504997,\n", + " \"end\": 45.065,\n", + " \"confidence\": 0.91918945,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 45.144997,\n", + " \"end\": 45.464996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 45.464996,\n", + " \"end\": 45.625,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 45.625,\n", + " \"end\": 45.785,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 45.785,\n", + " \"end\": 45.945,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 45.945,\n", + " \"end\": 46.105,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 46.105,\n", + " \"end\": 46.184998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 46.184998,\n", + " \"end\": 46.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 46.425,\n", + " \"end\": 46.664997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 46.664997,\n", + " \"end\": 47.385,\n", + " \"confidence\": 0.9946289,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.265,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 48.265,\n", + " \"end\": 48.664997,\n", + " \"confidence\": 0.96972656,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 48.664997,\n", + " \"end\": 48.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 48.745,\n", + " \"end\": 48.985,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 48.985,\n", + " \"end\": 49.144997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 49.144997,\n", + " \"end\": 49.385,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 49.385,\n", + " \"end\": 49.864998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 49.864998,\n", + " \"end\": 50.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 50.105,\n", + " \"end\": 50.265,\n", + " \"confidence\": 0.99853516,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 50.797,\n", + " \"end\": 51.197,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 51.197,\n", + " \"end\": 51.357,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 51.357,\n", + " \"end\": 51.517,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 51.517,\n", + " \"end\": 51.917,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 51.917,\n", + " \"end\": 52.557,\n", + " \"confidence\": 0.9863281,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 52.557,\n", + " \"end\": 52.797,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 52.797,\n", + " \"end\": 52.957,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 52.957,\n", + " \"end\": 53.357,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 53.357,\n", + " \"end\": 53.677,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 53.677,\n", + " \"end\": 53.917,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 53.917,\n", + " \"end\": 54.636997,\n", + " \"confidence\": 0.9655762,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 54.637,\n", + " \"end\": 55.037,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 55.037,\n", + " \"end\": 55.437,\n", + " \"confidence\": 0.9941406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 55.437,\n", + " \"end\": 55.836998,\n", + " \"confidence\": 0.6328125,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 55.836998,\n", + " \"end\": 56.077,\n", + " \"confidence\": 0.88671875,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 56.077,\n", + " \"end\": 56.636997,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677,\n", + " \"confidence\": 0.82128906,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 57.677,\n", + " \"end\": 57.917,\n", + " \"confidence\": 0.9628906,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 57.917,\n", + " \"end\": 58.077,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 58.077,\n", + " \"end\": 58.237,\n", + " \"confidence\": 0.97314453,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 58.237,\n", + " \"end\": 58.397,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 58.397,\n", + " \"end\": 58.557,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 58.557,\n", + " \"end\": 58.877,\n", + " \"confidence\": 0.99121094,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 58.877,\n", + " \"end\": 59.037,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 59.037,\n", + " \"end\": 59.437,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 59.437,\n", + " \"end\": 59.836998,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " }\n", + " ],\n", + " \"paragraphs\": {\n", + " \"transcript\": \"\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\\n\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\",\n", + " \"paragraphs\": [\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 5.68,\n", + " \"end\": 7.52\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 7.52,\n", + " \"end\": 9.04\n", + " }\n", + " ],\n", + " \"start\": 5.12,\n", + " \"end\": 9.04,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 9.28,\n", + " \"end\": 10.4\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 10.4,\n", + " \"end\": 11.759999\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.719999\n", + " }\n", + " ],\n", + " \"start\": 9.28,\n", + " \"end\": 12.719999,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 13.224999,\n", + " \"end\": 14.664999\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 14.745,\n", + " \"end\": 17.064999\n", + " }\n", + " ],\n", + " \"start\": 13.224999,\n", + " \"end\": 17.064999,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 17.545,\n", + " \"end\": 18.265\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 18.265,\n", + " \"end\": 20.185\n", + " }\n", + " ],\n", + " \"start\": 17.545,\n", + " \"end\": 20.185,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 20.425,\n", + " \"end\": 22.185\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 22.185,\n", + " \"end\": 26.265\n", + " }\n", + " ],\n", + " \"start\": 20.425,\n", + " \"end\": 26.265,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 27.21,\n", + " \"end\": 29.849998\n", + " }\n", + " ],\n", + " \"start\": 26.425,\n", + " \"end\": 29.849998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 36.09,\n", + " \"end\": 37.93\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 37.93,\n", + " \"end\": 39.05\n", + " }\n", + " ],\n", + " \"start\": 35.53,\n", + " \"end\": 39.05,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.745\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 40.745,\n", + " \"end\": 42.105\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 42.265,\n", + " \"end\": 43.385\n", + " }\n", + " ],\n", + " \"start\": 39.704998,\n", + " \"end\": 43.385,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 43.464996,\n", + " \"end\": 45.065\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 45.144997,\n", + " \"end\": 47.385\n", + " }\n", + " ],\n", + " \"start\": 43.464996,\n", + " \"end\": 47.385,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.664997\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 48.664997,\n", + " \"end\": 50.265\n", + " }\n", + " ],\n", + " \"start\": 47.945,\n", + " \"end\": 50.265,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 50.797,\n", + " \"end\": 52.557\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 52.557,\n", + " \"end\": 56.636997\n", + " }\n", + " ],\n", + " \"start\": 50.797,\n", + " \"end\": 56.636997,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 57.677,\n", + " \"end\": 59.836998\n", + " }\n", + " ],\n", + " \"start\": 56.957,\n", + " \"end\": 59.836998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " }\n", + " ]\n", + " }\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + " }\n", + "}\n", + "\n", + "\n", + "{\n", + " \"metadata\": {\n", + " \"transaction_key\": \"deprecated\",\n", + " \"request_id\": \"cf9f2d6e-4e4b-4ca4-994a-a422ca179e56\",\n", + " \"sha256\": \"6c4875f9241745ecbdae1fce078168dc958f1d6b3b843c7addaca5db277cfba7\",\n", + " \"created\": \"2025-02-14T17:17:49.647Z\",\n", + " \"duration\": 62.302,\n", + " \"channels\": 1,\n", + " \"models\": [\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\"\n", + " ],\n", + " \"model_info\": {\n", + " \"3b3aabe4-608a-46ac-9585-7960a25daf1a\": {\n", + " \"name\": \"general-nova-3\",\n", + " \"version\": \"2024-12-20.0\",\n", + " \"arch\": \"nova-3\"\n", + " }\n", + " }\n", + " },\n", + " \"results\": {\n", + " \"channels\": [\n", + " {\n", + " \"alternatives\": [\n", + " {\n", + " \"transcript\": \"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\",\n", + " \"confidence\": 0.9980469,\n", + " \"words\": [\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68,\n", + " \"confidence\": 0.82910156,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 5.68,\n", + " \"end\": 5.8399997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 5.8399997,\n", + " \"end\": 6.0,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 6.0,\n", + " \"end\": 6.16,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 6.16,\n", + " \"end\": 6.72,\n", + " \"confidence\": 0.94628906,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 6.72,\n", + " \"end\": 7.52,\n", + " \"confidence\": 0.99560547,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 7.52,\n", + " \"end\": 7.7599998,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 7.7599998,\n", + " \"end\": 7.9199996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 7.9199996,\n", + " \"end\": 8.24,\n", + " \"confidence\": 0.9614258,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 8.24,\n", + " \"end\": 9.04,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 9.28,\n", + " \"end\": 9.76,\n", + " \"confidence\": 0.96533203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 9.76,\n", + " \"end\": 10.4,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 10.4,\n", + " \"end\": 10.639999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 10.639999,\n", + " \"end\": 11.04,\n", + " \"confidence\": 0.9003906,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 11.04,\n", + " \"end\": 11.759999,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.24,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 12.24,\n", + " \"end\": 12.32,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 12.32,\n", + " \"end\": 12.559999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 12.559999,\n", + " \"end\": 12.719999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 13.224999,\n", + " \"end\": 13.544999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 13.544999,\n", + " \"end\": 13.705,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 13.705,\n", + " \"end\": 13.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 13.865,\n", + " \"end\": 14.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 14.105,\n", + " \"end\": 14.664999,\n", + " \"confidence\": 0.89624023,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 14.745,\n", + " \"end\": 15.065,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 15.065,\n", + " \"end\": 15.304999,\n", + " \"confidence\": 0.98095703,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 15.304999,\n", + " \"end\": 15.384999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 15.384999,\n", + " \"end\": 15.545,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 15.545,\n", + " \"end\": 15.705,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 15.705,\n", + " \"end\": 15.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 15.865,\n", + " \"end\": 16.025,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 16.025,\n", + " \"end\": 16.345,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 16.345,\n", + " \"end\": 17.064999,\n", + " \"confidence\": 0.9890137,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 17.545,\n", + " \"end\": 17.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 17.865,\n", + " \"end\": 18.265,\n", + " \"confidence\": 0.92700195,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 18.265,\n", + " \"end\": 18.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 18.425,\n", + " \"end\": 18.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 18.585,\n", + " \"end\": 18.744999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 18.744999,\n", + " \"end\": 18.985,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 18.985,\n", + " \"end\": 19.465,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 19.465,\n", + " \"end\": 19.705,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 19.705,\n", + " \"end\": 20.185,\n", + " \"confidence\": 0.9975586,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 20.425,\n", + " \"end\": 20.824999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 20.824999,\n", + " \"end\": 20.984999,\n", + " \"confidence\": 0.97265625,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 20.984999,\n", + " \"end\": 21.145,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 21.145,\n", + " \"end\": 21.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 21.544998,\n", + " \"end\": 22.185,\n", + " \"confidence\": 0.9824219,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 22.185,\n", + " \"end\": 22.425,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 22.425,\n", + " \"end\": 22.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 22.585,\n", + " \"end\": 23.064999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 23.064999,\n", + " \"end\": 23.305,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 23.305,\n", + " \"end\": 23.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 23.544998,\n", + " \"end\": 24.265,\n", + " \"confidence\": 0.9724121,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 24.345,\n", + " \"end\": 24.664999,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 24.664999,\n", + " \"end\": 25.064999,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 25.064999,\n", + " \"end\": 25.465,\n", + " \"confidence\": 0.64501953,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 25.465,\n", + " \"end\": 25.704998,\n", + " \"confidence\": 0.8857422,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 25.704998,\n", + " \"end\": 26.265,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999,\n", + " \"confidence\": 0.91381836,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 27.21,\n", + " \"end\": 27.609999,\n", + " \"confidence\": 0.98339844,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 27.609999,\n", + " \"end\": 27.689999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 27.689999,\n", + " \"end\": 27.849998,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 27.849998,\n", + " \"end\": 28.009998,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 28.009998,\n", + " \"end\": 28.169998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 28.169998,\n", + " \"end\": 28.49,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 28.49,\n", + " \"end\": 28.65,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 28.65,\n", + " \"end\": 29.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 29.05,\n", + " \"end\": 29.849998,\n", + " \"confidence\": 0.98999023,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09,\n", + " \"confidence\": 0.8376465,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 36.09,\n", + " \"end\": 36.25,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 36.25,\n", + " \"end\": 36.41,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 36.41,\n", + " \"end\": 36.57,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 36.57,\n", + " \"end\": 37.05,\n", + " \"confidence\": 0.93408203,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 37.05,\n", + " \"end\": 37.93,\n", + " \"confidence\": 0.9875488,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 37.93,\n", + " \"end\": 38.17,\n", + " \"confidence\": 0.9921875,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 38.17,\n", + " \"end\": 38.329998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 38.329998,\n", + " \"end\": 38.649998,\n", + " \"confidence\": 0.9589844,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 38.649998,\n", + " \"end\": 39.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.184998,\n", + " \"confidence\": 0.9033203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 40.184998,\n", + " \"end\": 40.745,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 40.745,\n", + " \"end\": 40.984997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 40.984997,\n", + " \"end\": 41.385,\n", + " \"confidence\": 0.9140625,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 41.385,\n", + " \"end\": 42.105,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 42.265,\n", + " \"end\": 42.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 42.585,\n", + " \"end\": 42.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 42.745,\n", + " \"end\": 42.905,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 42.905,\n", + " \"end\": 43.385,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 43.464996,\n", + " \"end\": 43.945,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 43.945,\n", + " \"end\": 44.105,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 44.105,\n", + " \"end\": 44.265,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 44.265,\n", + " \"end\": 44.504997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 44.504997,\n", + " \"end\": 45.065,\n", + " \"confidence\": 0.91918945,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 45.144997,\n", + " \"end\": 45.464996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 45.464996,\n", + " \"end\": 45.625,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 45.625,\n", + " \"end\": 45.785,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 45.785,\n", + " \"end\": 45.945,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 45.945,\n", + " \"end\": 46.105,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 46.105,\n", + " \"end\": 46.184998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 46.184998,\n", + " \"end\": 46.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 46.425,\n", + " \"end\": 46.664997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 46.664997,\n", + " \"end\": 47.385,\n", + " \"confidence\": 0.9946289,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.265,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 48.265,\n", + " \"end\": 48.664997,\n", + " \"confidence\": 0.96972656,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 48.664997,\n", + " \"end\": 48.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 48.745,\n", + " \"end\": 48.985,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 48.985,\n", + " \"end\": 49.144997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 49.144997,\n", + " \"end\": 49.385,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 49.385,\n", + " \"end\": 49.864998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 49.864998,\n", + " \"end\": 50.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 50.105,\n", + " \"end\": 50.265,\n", + " \"confidence\": 0.99853516,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 50.797,\n", + " \"end\": 51.197,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 51.197,\n", + " \"end\": 51.357,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 51.357,\n", + " \"end\": 51.517,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 51.517,\n", + " \"end\": 51.917,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 51.917,\n", + " \"end\": 52.557,\n", + " \"confidence\": 0.9863281,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 52.557,\n", + " \"end\": 52.797,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 52.797,\n", + " \"end\": 52.957,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 52.957,\n", + " \"end\": 53.357,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 53.357,\n", + " \"end\": 53.677,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 53.677,\n", + " \"end\": 53.917,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 53.917,\n", + " \"end\": 54.636997,\n", + " \"confidence\": 0.9655762,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 54.637,\n", + " \"end\": 55.037,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 55.037,\n", + " \"end\": 55.437,\n", + " \"confidence\": 0.9941406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 55.437,\n", + " \"end\": 55.836998,\n", + " \"confidence\": 0.6328125,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 55.836998,\n", + " \"end\": 56.077,\n", + " \"confidence\": 0.88671875,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 56.077,\n", + " \"end\": 56.636997,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677,\n", + " \"confidence\": 0.82128906,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 57.677,\n", + " \"end\": 57.917,\n", + " \"confidence\": 0.9628906,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 57.917,\n", + " \"end\": 58.077,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 58.077,\n", + " \"end\": 58.237,\n", + " \"confidence\": 0.97314453,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 58.237,\n", + " \"end\": 58.397,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 58.397,\n", + " \"end\": 58.557,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 58.557,\n", + " \"end\": 58.877,\n", + " \"confidence\": 0.99121094,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 58.877,\n", + " \"end\": 59.037,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 59.037,\n", + " \"end\": 59.437,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 59.437,\n", + " \"end\": 59.836998,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " }\n", + " ],\n", + " \"paragraphs\": {\n", + " \"transcript\": \"\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\\n\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\",\n", + " \"paragraphs\": [\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 5.68,\n", + " \"end\": 7.52\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 7.52,\n", + " \"end\": 9.04\n", + " }\n", + " ],\n", + " \"start\": 5.12,\n", + " \"end\": 9.04,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 9.28,\n", + " \"end\": 10.4\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 10.4,\n", + " \"end\": 11.759999\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.719999\n", + " }\n", + " ],\n", + " \"start\": 9.28,\n", + " \"end\": 12.719999,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 13.224999,\n", + " \"end\": 14.664999\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 14.745,\n", + " \"end\": 17.064999\n", + " }\n", + " ],\n", + " \"start\": 13.224999,\n", + " \"end\": 17.064999,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 17.545,\n", + " \"end\": 18.265\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 18.265,\n", + " \"end\": 20.185\n", + " }\n", + " ],\n", + " \"start\": 17.545,\n", + " \"end\": 20.185,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 20.425,\n", + " \"end\": 22.185\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 22.185,\n", + " \"end\": 26.265\n", + " }\n", + " ],\n", + " \"start\": 20.425,\n", + " \"end\": 26.265,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 27.21,\n", + " \"end\": 29.849998\n", + " }\n", + " ],\n", + " \"start\": 26.425,\n", + " \"end\": 29.849998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 36.09,\n", + " \"end\": 37.93\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 37.93,\n", + " \"end\": 39.05\n", + " }\n", + " ],\n", + " \"start\": 35.53,\n", + " \"end\": 39.05,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.745\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 40.745,\n", + " \"end\": 42.105\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 42.265,\n", + " \"end\": 43.385\n", + " }\n", + " ],\n", + " \"start\": 39.704998,\n", + " \"end\": 43.385,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 43.464996,\n", + " \"end\": 45.065\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 45.144997,\n", + " \"end\": 47.385\n", + " }\n", + " ],\n", + " \"start\": 43.464996,\n", + " \"end\": 47.385,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.664997\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 48.664997,\n", + " \"end\": 50.265\n", + " }\n", + " ],\n", + " \"start\": 47.945,\n", + " \"end\": 50.265,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 50.797,\n", + " \"end\": 52.557\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 52.557,\n", + " \"end\": 56.636997\n", + " }\n", + " ],\n", + " \"start\": 50.797,\n", + " \"end\": 56.636997,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 57.677,\n", + " \"end\": 59.836998\n", + " }\n", + " ],\n", + " \"start\": 56.957,\n", + " \"end\": 59.836998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " }\n", + " ]\n", + " }\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "import os\n", + "import logging\n", + "import re\n", + "import uuid\n", + "import yt_dlp\n", + "from deepgram.utils import verboselogs\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "from deepgram import DeepgramClient, PrerecordedOptions, FileSource\n", + "\n", + "# Define your URLs (example URLs)\n", + "audio_url = \"https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/019933724441Business%20English%20Conversation%20Lesson%2045_%20Meeting%20a%20New%20Colleague.mp3\"\n", + "video_url = \"https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/038426704141Business%20English%20Conversation%20Lesson%2045_%20%20Meeting%20a%20New%20Colleague.mp4\"\n", + "\n", + "# Folder for file uploads/downloads\n", + "\n", + "# Folder for file uploads/downloads\n", + "UPLOAD_FOLDER = \"../uploads\"\n", + "os.makedirs(UPLOAD_FOLDER, exist_ok=True)\n", + "\n", + "def sanitize_filename(name: str) -> str:\n", + " \"\"\"\n", + " Remove characters from the filename that are not allowed in many file systems.\n", + " \"\"\"\n", + " return re.sub(r'[^\\w\\s-]', '', name).strip().replace(' ', '_')\n", + "\n", + "def extract_audio(url: str, output_template=os.path.join(UPLOAD_FOLDER, \"%(title)s.%(ext)s\")) -> str:\n", + " \"\"\"\n", + " Download and extract audio from a video URL using yt-dlp.\n", + " The file will be saved in the 'upload' folder.\n", + " \n", + " Returns:\n", + " str: The absolute path to the downloaded audio file (with a unique id appended).\n", + " \"\"\"\n", + " ydl_opts = {\n", + " \"format\": \"bestaudio/best\",\n", + " \"outtmpl\": output_template,\n", + " \"postprocessors\": [{\n", + " \"key\": \"FFmpegExtractAudio\",\n", + " \"preferredcodec\": \"mp3\",\n", + " \"preferredquality\": \"192\",\n", + " }],\n", + " \"quiet\": True,\n", + " }\n", + " \n", + " with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", + " info = ydl.extract_info(url, download=True)\n", + " # Prepare the filename from the info.\n", + " # Note: prepare_filename returns the filename *before* postprocessing,\n", + " # so we change the extension to mp3.\n", + " original_filepath = os.path.splitext(ydl.prepare_filename(info))[0] + \".mp3\"\n", + " \n", + " # Debug: list files in the upload folder\n", + " if not os.path.exists(original_filepath):\n", + " files = os.listdir(UPLOAD_FOLDER)\n", + " print(\"Warning: Could not find expected file.\")\n", + " print(\"Files in upload folder:\", files)\n", + " raise FileNotFoundError(f\"Expected audio file not found: {original_filepath}\")\n", + " \n", + " # Get the video's title and sanitize it\n", + " title = info.get('title', 'audio')\n", + " safe_title = sanitize_filename(title)\n", + " \n", + " # Generate a unique identifier\n", + " unique_id = uuid.uuid4().hex # Unique identifier in hex format\n", + " \n", + " # Construct the new filename with the unique id appended.\n", + " new_audio_filename = f\"{safe_title}_{unique_id}.mp3\"\n", + " new_audio_filepath = os.path.join(UPLOAD_FOLDER, new_audio_filename)\n", + " \n", + " # Rename the downloaded file to include the unique ID.\n", + " os.rename(original_filepath, new_audio_filepath)\n", + " print(f\"Renamed file to: {new_audio_filepath}\")\n", + " \n", + " # Return the absolute path to the renamed audio file.\n", + " return os.path.abspath(new_audio_filepath)\n", + "\n", + "def transcribe_media(file_loc: str, media_type: str = \"audio\"):\n", + " \"\"\"\n", + " Transcribe media using Deepgram.\n", + " \n", + " If media_type is \"audio\" (remote URL), use Deepgram's URL transcription.\n", + " If media_type is \"video\" (remote URL), extract audio locally (in the upload folder),\n", + " transcribe via file, and then delete the local audio file.\n", + " \n", + " Args:\n", + " file_loc (str): URL to the remote audio or video file.\n", + " media_type (str): \"audio\" or \"video\".\n", + " \n", + " Returns:\n", + " dict: The transcription response from Deepgram.\n", + " \"\"\"\n", + " api_key = os.getenv(\"DEEPGRAM_API_KEY2\")\n", + " print(f\"Using Deepgram API Key: {api_key}\")\n", + " local_audio_path=\"some_rand\"\n", + " try:\n", + " deepgram: DeepgramClient = DeepgramClient(api_key=api_key)\n", + " options: PrerecordedOptions = PrerecordedOptions(\n", + " model=\"nova-3\",\n", + " smart_format=True,\n", + " diarize=True,\n", + " )\n", + " \n", + " if media_type.lower() == \"audio\":\n", + " # For remote audio files, use the URL transcription method.\n", + " response = deepgram.listen.rest.v(\"1\").transcribe_url({\"url\": file_loc}, options)\n", + " \n", + " elif media_type.lower() == \"video\":\n", + " # For remote video files, first extract the audio locally.\n", + " local_audio_path = extract_audio(file_loc)\n", + " print(f\"Extracted audio to: {local_audio_path}\")\n", + " \n", + " # Transcribe using the local file method.\n", + " with open(local_audio_path, \"rb\") as file:\n", + " buffer_data = file.read()\n", + " payload: FileSource = {\"buffer\": buffer_data}\n", + " response = deepgram.listen.rest.v(\"1\").transcribe_file(payload, options)\n", + " \n", + " # Clean up: delete the local audio file.\n", + " if os.path.exists(local_audio_path):\n", + " os.remove(local_audio_path)\n", + " print(f\"Deleted local audio file: {local_audio_path}\")\n", + " else:\n", + " raise ValueError(\"media_type must be either 'audio' or 'video'.\")\n", + "\n", + " print(f\"Transcription response: {response}\\n\\n\")\n", + " return response\n", + "\n", + " except Exception as e:\n", + " print(f\"Exception during transcription: {e}\")\n", + " return None\n", + " finally:\n", + " # Clean up: delete the local audio file.\n", + " if os.path.exists(local_audio_path):\n", + " os.remove(local_audio_path)\n", + " print(f\"Deleted local audio file: {local_audio_path}\")\n", + "\n", + "\n", + "\n", + "if __name__ == \"__main__\":\n", + " \n", + " response = transcribe_media(video_url, media_type=\"video\")\n", + " print(response)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"alternatives\": [\n", + " {\n", + " \"transcript\": \"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\",\n", + " \"confidence\": 0.9980469,\n", + " \"words\": [\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68,\n", + " \"confidence\": 0.82910156,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 5.68,\n", + " \"end\": 5.8399997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 5.8399997,\n", + " \"end\": 6.0,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 6.0,\n", + " \"end\": 6.16,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 6.16,\n", + " \"end\": 6.72,\n", + " \"confidence\": 0.94628906,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 6.72,\n", + " \"end\": 7.52,\n", + " \"confidence\": 0.99560547,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 7.52,\n", + " \"end\": 7.7599998,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 7.7599998,\n", + " \"end\": 7.9199996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 7.9199996,\n", + " \"end\": 8.24,\n", + " \"confidence\": 0.9614258,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 8.24,\n", + " \"end\": 9.04,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.934523\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 9.28,\n", + " \"end\": 9.76,\n", + " \"confidence\": 0.96533203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 9.76,\n", + " \"end\": 10.4,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 10.4,\n", + " \"end\": 10.639999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 10.639999,\n", + " \"end\": 11.04,\n", + " \"confidence\": 0.9003906,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 11.04,\n", + " \"end\": 11.759999,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.24,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 12.24,\n", + " \"end\": 12.32,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 12.32,\n", + " \"end\": 12.559999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 12.559999,\n", + " \"end\": 12.719999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9908233\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 13.224999,\n", + " \"end\": 13.544999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 13.544999,\n", + " \"end\": 13.705,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 13.705,\n", + " \"end\": 13.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 13.865,\n", + " \"end\": 14.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 14.105,\n", + " \"end\": 14.664999,\n", + " \"confidence\": 0.89624023,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 14.745,\n", + " \"end\": 15.065,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 15.065,\n", + " \"end\": 15.304999,\n", + " \"confidence\": 0.98095703,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 15.304999,\n", + " \"end\": 15.384999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.628077\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 15.384999,\n", + " \"end\": 15.545,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 15.545,\n", + " \"end\": 15.705,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 15.705,\n", + " \"end\": 15.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 15.865,\n", + " \"end\": 16.025,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 16.025,\n", + " \"end\": 16.345,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 16.345,\n", + " \"end\": 17.064999,\n", + " \"confidence\": 0.9890137,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.58172274\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 17.545,\n", + " \"end\": 17.865,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 17.865,\n", + " \"end\": 18.265,\n", + " \"confidence\": 0.92700195,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 18.265,\n", + " \"end\": 18.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 18.425,\n", + " \"end\": 18.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 18.585,\n", + " \"end\": 18.744999,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 18.744999,\n", + " \"end\": 18.985,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 18.985,\n", + " \"end\": 19.465,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 19.465,\n", + " \"end\": 19.705,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 19.705,\n", + " \"end\": 20.185,\n", + " \"confidence\": 0.9975586,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.8661381\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 20.425,\n", + " \"end\": 20.824999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 20.824999,\n", + " \"end\": 20.984999,\n", + " \"confidence\": 0.97265625,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 20.984999,\n", + " \"end\": 21.145,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 21.145,\n", + " \"end\": 21.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 21.544998,\n", + " \"end\": 22.185,\n", + " \"confidence\": 0.9824219,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 22.185,\n", + " \"end\": 22.425,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 22.425,\n", + " \"end\": 22.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 22.585,\n", + " \"end\": 23.064999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 23.064999,\n", + " \"end\": 23.305,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 23.305,\n", + " \"end\": 23.544998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 23.544998,\n", + " \"end\": 24.265,\n", + " \"confidence\": 0.9724121,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 24.345,\n", + " \"end\": 24.664999,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 24.664999,\n", + " \"end\": 25.064999,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 25.064999,\n", + " \"end\": 25.465,\n", + " \"confidence\": 0.64501953,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 25.465,\n", + " \"end\": 25.704998,\n", + " \"confidence\": 0.8857422,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 25.704998,\n", + " \"end\": 26.265,\n", + " \"confidence\": 0.99658203,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.979667\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999,\n", + " \"confidence\": 0.91381836,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 27.21,\n", + " \"end\": 27.609999,\n", + " \"confidence\": 0.98339844,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 27.609999,\n", + " \"end\": 27.689999,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 27.689999,\n", + " \"end\": 27.849998,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 27.849998,\n", + " \"end\": 28.009998,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 28.009998,\n", + " \"end\": 28.169998,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 28.169998,\n", + " \"end\": 28.49,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 28.49,\n", + " \"end\": 28.65,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 28.65,\n", + " \"end\": 29.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 29.05,\n", + " \"end\": 29.849998,\n", + " \"confidence\": 0.98999023,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9671081\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09,\n", + " \"confidence\": 0.8376465,\n", + " \"punctuated_word\": \"Hi.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 36.09,\n", + " \"end\": 36.25,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"My\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"name\",\n", + " \"start\": 36.25,\n", + " \"end\": 36.41,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"name\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 36.41,\n", + " \"end\": 36.57,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 36.57,\n", + " \"end\": 37.05,\n", + " \"confidence\": 0.93408203,\n", + " \"punctuated_word\": \"Diane\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"taylor\",\n", + " \"start\": 37.05,\n", + " \"end\": 37.93,\n", + " \"confidence\": 0.9875488,\n", + " \"punctuated_word\": \"Taylor.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 37.93,\n", + " \"end\": 38.17,\n", + " \"confidence\": 0.9921875,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"the\",\n", + " \"start\": 38.17,\n", + " \"end\": 38.329998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"the\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 38.329998,\n", + " \"end\": 38.649998,\n", + " \"confidence\": 0.9589844,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"manager\",\n", + " \"start\": 38.649998,\n", + " \"end\": 39.05,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"manager.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.90919983\n", + " },\n", + " {\n", + " \"word\": \"hi\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.184998,\n", + " \"confidence\": 0.9033203,\n", + " \"punctuated_word\": \"Hi,\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"diane\",\n", + " \"start\": 40.184998,\n", + " \"end\": 40.745,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"Diane.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 40.745,\n", + " \"end\": 40.984997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"cody\",\n", + " \"start\": 40.984997,\n", + " \"end\": 41.385,\n", + " \"confidence\": 0.9140625,\n", + " \"punctuated_word\": \"Cody\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"smith\",\n", + " \"start\": 41.385,\n", + " \"end\": 42.105,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"Smith.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 42.265,\n", + " \"end\": 42.585,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 42.585,\n", + " \"end\": 42.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 42.745,\n", + " \"end\": 42.905,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 42.905,\n", + " \"end\": 43.385,\n", + " \"confidence\": 0.9970703,\n", + " \"punctuated_word\": \"you.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.99318177\n", + " },\n", + " {\n", + " \"word\": \"nice\",\n", + " \"start\": 43.464996,\n", + " \"end\": 43.945,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Nice\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"to\",\n", + " \"start\": 43.945,\n", + " \"end\": 44.105,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"to\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"meet\",\n", + " \"start\": 44.105,\n", + " \"end\": 44.265,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"meet\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 44.265,\n", + " \"end\": 44.504997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"too\",\n", + " \"start\": 44.504997,\n", + " \"end\": 45.065,\n", + " \"confidence\": 0.91918945,\n", + " \"punctuated_word\": \"too.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"please\",\n", + " \"start\": 45.144997,\n", + " \"end\": 45.464996,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"Please\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"let\",\n", + " \"start\": 45.464996,\n", + " \"end\": 45.625,\n", + " \"confidence\": 0.9873047,\n", + " \"punctuated_word\": \"let\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 45.625,\n", + " \"end\": 45.785,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"know\",\n", + " \"start\": 45.785,\n", + " \"end\": 45.945,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"know\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"if\",\n", + " \"start\": 45.945,\n", + " \"end\": 46.105,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"if\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 46.105,\n", + " \"end\": 46.184998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"you\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 46.184998,\n", + " \"end\": 46.425,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 46.425,\n", + " \"end\": 46.664997,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 46.664997,\n", + " \"end\": 47.385,\n", + " \"confidence\": 0.9946289,\n", + " \"punctuated_word\": \"questions.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.778605\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.265,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 48.265,\n", + " \"end\": 48.664997,\n", + " \"confidence\": 0.96972656,\n", + " \"punctuated_word\": \"will.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 48.664997,\n", + " \"end\": 48.745,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"don't\",\n", + " \"start\": 48.745,\n", + " \"end\": 48.985,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"don't\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 48.985,\n", + " \"end\": 49.144997,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"any\",\n", + " \"start\": 49.144997,\n", + " \"end\": 49.385,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"any\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 49.385,\n", + " \"end\": 49.864998,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"right\",\n", + " \"start\": 49.864998,\n", + " \"end\": 50.105,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"right\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"now\",\n", + " \"start\": 50.105,\n", + " \"end\": 50.265,\n", + " \"confidence\": 0.99853516,\n", + " \"punctuated_word\": \"now.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.78114545\n", + " },\n", + " {\n", + " \"word\": \"here\",\n", + " \"start\": 50.797,\n", + " \"end\": 51.197,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"Here\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"is\",\n", + " \"start\": 51.197,\n", + " \"end\": 51.357,\n", + " \"confidence\": 0.97998047,\n", + " \"punctuated_word\": \"is\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"my\",\n", + " \"start\": 51.357,\n", + " \"end\": 51.517,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"my\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"business\",\n", + " \"start\": 51.517,\n", + " \"end\": 51.917,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"business\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"card\",\n", + " \"start\": 51.917,\n", + " \"end\": 52.557,\n", + " \"confidence\": 0.9863281,\n", + " \"punctuated_word\": \"card.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.6665951\n", + " },\n", + " {\n", + " \"word\": \"you\",\n", + " \"start\": 52.557,\n", + " \"end\": 52.797,\n", + " \"confidence\": 0.99902344,\n", + " \"punctuated_word\": \"You\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"can\",\n", + " \"start\": 52.797,\n", + " \"end\": 52.957,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"can\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"contact\",\n", + " \"start\": 52.957,\n", + " \"end\": 53.357,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"contact\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"me\",\n", + " \"start\": 53.357,\n", + " \"end\": 53.677,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"me\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"by\",\n", + " \"start\": 53.677,\n", + " \"end\": 53.917,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"by\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"email\",\n", + " \"start\": 53.917,\n", + " \"end\": 54.636997,\n", + " \"confidence\": 0.9655762,\n", + " \"punctuated_word\": \"email,\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"office\",\n", + " \"start\": 54.637,\n", + " \"end\": 55.037,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"office\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 55.037,\n", + " \"end\": 55.437,\n", + " \"confidence\": 0.9941406,\n", + " \"punctuated_word\": \"phone\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"or\",\n", + " \"start\": 55.437,\n", + " \"end\": 55.836998,\n", + " \"confidence\": 0.6328125,\n", + " \"punctuated_word\": \"or\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"cell\",\n", + " \"start\": 55.836998,\n", + " \"end\": 56.077,\n", + " \"confidence\": 0.88671875,\n", + " \"punctuated_word\": \"cell\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"phone\",\n", + " \"start\": 56.077,\n", + " \"end\": 56.636997,\n", + " \"confidence\": 0.9951172,\n", + " \"punctuated_word\": \"phone.\",\n", + " \"speaker\": 0,\n", + " \"speaker_confidence\": 0.8876728\n", + " },\n", + " {\n", + " \"word\": \"great\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677,\n", + " \"confidence\": 0.82128906,\n", + " \"punctuated_word\": \"Great.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i'm\",\n", + " \"start\": 57.677,\n", + " \"end\": 57.917,\n", + " \"confidence\": 0.9628906,\n", + " \"punctuated_word\": \"I'm\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"sure\",\n", + " \"start\": 57.917,\n", + " \"end\": 58.077,\n", + " \"confidence\": 1.0,\n", + " \"punctuated_word\": \"sure\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"i\",\n", + " \"start\": 58.077,\n", + " \"end\": 58.237,\n", + " \"confidence\": 0.97314453,\n", + " \"punctuated_word\": \"I\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"will\",\n", + " \"start\": 58.237,\n", + " \"end\": 58.397,\n", + " \"confidence\": 0.99609375,\n", + " \"punctuated_word\": \"will\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"have\",\n", + " \"start\": 58.397,\n", + " \"end\": 58.557,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"have\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"lots\",\n", + " \"start\": 58.557,\n", + " \"end\": 58.877,\n", + " \"confidence\": 0.99121094,\n", + " \"punctuated_word\": \"lots\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"of\",\n", + " \"start\": 58.877,\n", + " \"end\": 59.037,\n", + " \"confidence\": 0.9980469,\n", + " \"punctuated_word\": \"of\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"questions\",\n", + " \"start\": 59.037,\n", + " \"end\": 59.437,\n", + " \"confidence\": 0.99316406,\n", + " \"punctuated_word\": \"questions\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " },\n", + " {\n", + " \"word\": \"soon\",\n", + " \"start\": 59.437,\n", + " \"end\": 59.836998,\n", + " \"confidence\": 0.99365234,\n", + " \"punctuated_word\": \"soon.\",\n", + " \"speaker\": 1,\n", + " \"speaker_confidence\": 0.9388238\n", + " }\n", + " ],\n", + " \"paragraphs\": {\n", + " \"transcript\": \"\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\\n\\nSpeaker 0: Hi. My name is Diane Taylor. I'm the office manager.\\n\\nSpeaker 1: Hi, Diane. I'm Cody Smith. Nice to meet you.\\n\\nSpeaker 0: Nice to meet you too. Please let me know if you have any questions.\\n\\nSpeaker 1: I will. I don't have any questions right now.\\n\\nSpeaker 0: Here is my business card. You can contact me by email, office phone or cell phone.\\n\\nSpeaker 1: Great. I'm sure I will have lots of questions soon.\",\n", + " \"paragraphs\": [\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 5.12,\n", + " \"end\": 5.68\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 5.68,\n", + " \"end\": 7.52\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 7.52,\n", + " \"end\": 9.04\n", + " }\n", + " ],\n", + " \"start\": 5.12,\n", + " \"end\": 9.04,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 9.28,\n", + " \"end\": 10.4\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 10.4,\n", + " \"end\": 11.759999\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 11.84,\n", + " \"end\": 12.719999\n", + " }\n", + " ],\n", + " \"start\": 9.28,\n", + " \"end\": 12.719999,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 13.224999,\n", + " \"end\": 14.664999\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 14.745,\n", + " \"end\": 17.064999\n", + " }\n", + " ],\n", + " \"start\": 13.224999,\n", + " \"end\": 17.064999,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 17.545,\n", + " \"end\": 18.265\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 18.265,\n", + " \"end\": 20.185\n", + " }\n", + " ],\n", + " \"start\": 17.545,\n", + " \"end\": 20.185,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 20.425,\n", + " \"end\": 22.185\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 22.185,\n", + " \"end\": 26.265\n", + " }\n", + " ],\n", + " \"start\": 20.425,\n", + " \"end\": 26.265,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 26.425,\n", + " \"end\": 27.064999\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 27.21,\n", + " \"end\": 29.849998\n", + " }\n", + " ],\n", + " \"start\": 26.425,\n", + " \"end\": 29.849998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi.\",\n", + " \"start\": 35.53,\n", + " \"end\": 36.09\n", + " },\n", + " {\n", + " \"text\": \"My name is Diane Taylor.\",\n", + " \"start\": 36.09,\n", + " \"end\": 37.93\n", + " },\n", + " {\n", + " \"text\": \"I'm the office manager.\",\n", + " \"start\": 37.93,\n", + " \"end\": 39.05\n", + " }\n", + " ],\n", + " \"start\": 35.53,\n", + " \"end\": 39.05,\n", + " \"num_words\": 10,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Hi, Diane.\",\n", + " \"start\": 39.704998,\n", + " \"end\": 40.745\n", + " },\n", + " {\n", + " \"text\": \"I'm Cody Smith.\",\n", + " \"start\": 40.745,\n", + " \"end\": 42.105\n", + " },\n", + " {\n", + " \"text\": \"Nice to meet you.\",\n", + " \"start\": 42.265,\n", + " \"end\": 43.385\n", + " }\n", + " ],\n", + " \"start\": 39.704998,\n", + " \"end\": 43.385,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Nice to meet you too.\",\n", + " \"start\": 43.464996,\n", + " \"end\": 45.065\n", + " },\n", + " {\n", + " \"text\": \"Please let me know if you have any questions.\",\n", + " \"start\": 45.144997,\n", + " \"end\": 47.385\n", + " }\n", + " ],\n", + " \"start\": 43.464996,\n", + " \"end\": 47.385,\n", + " \"num_words\": 14,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"I will.\",\n", + " \"start\": 47.945,\n", + " \"end\": 48.664997\n", + " },\n", + " {\n", + " \"text\": \"I don't have any questions right now.\",\n", + " \"start\": 48.664997,\n", + " \"end\": 50.265\n", + " }\n", + " ],\n", + " \"start\": 47.945,\n", + " \"end\": 50.265,\n", + " \"num_words\": 9,\n", + " \"speaker\": 1\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Here is my business card.\",\n", + " \"start\": 50.797,\n", + " \"end\": 52.557\n", + " },\n", + " {\n", + " \"text\": \"You can contact me by email, office phone or cell phone.\",\n", + " \"start\": 52.557,\n", + " \"end\": 56.636997\n", + " }\n", + " ],\n", + " \"start\": 50.797,\n", + " \"end\": 56.636997,\n", + " \"num_words\": 16,\n", + " \"speaker\": 0\n", + " },\n", + " {\n", + " \"sentences\": [\n", + " {\n", + " \"text\": \"Great.\",\n", + " \"start\": 56.957,\n", + " \"end\": 57.677\n", + " },\n", + " {\n", + " \"text\": \"I'm sure I will have lots of questions soon.\",\n", + " \"start\": 57.677,\n", + " \"end\": 59.836998\n", + " }\n", + " ],\n", + " \"start\": 56.957,\n", + " \"end\": 59.836998,\n", + " \"num_words\": 10,\n", + " \"speaker\": 1\n", + " }\n", + " ]\n", + " }\n", + " }\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "print(response[\"results\"][\"channels\"][0])\n", + "\n", + "transcript = response[\"results\"][\"channels\"][0][\"alternatives\"][0][\"transcript\"]\n", + "words = response[\"results\"][\"channels\"][0][\"alternatives\"][0][\"words\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon. Hi. My name is Diane Taylor. I'm the office manager. Hi, Diane. I'm Cody Smith. Nice to meet you. Nice to meet you too. Please let me know if you have any questions. I will. I don't have any questions right now. Here is my business card. You can contact me by email, office phone or cell phone. Great. I'm sure I will have lots of questions soon.\"" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "transcript" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'sentences': [{'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 5.12, 'end': 9.04, 'words': [{'word': 'Hi.', 'start': 5.12, 'end': 5.68}, {'word': 'My', 'start': 5.68, 'end': 5.8399997}, {'word': 'name', 'start': 5.8399997, 'end': 6.0}, {'word': 'is', 'start': 6.0, 'end': 6.16}, {'word': 'Diane', 'start': 6.16, 'end': 6.72}, {'word': 'Taylor.', 'start': 6.72, 'end': 7.52}, {'word': \"I'm\", 'start': 7.52, 'end': 7.7599998}, {'word': 'the', 'start': 7.7599998, 'end': 7.9199996}, {'word': 'office', 'start': 7.9199996, 'end': 8.24}, {'word': 'manager.', 'start': 8.24, 'end': 9.04}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 9.28, 'end': 12.719999, 'words': [{'word': 'Hi,', 'start': 9.28, 'end': 9.76}, {'word': 'Diane.', 'start': 9.76, 'end': 10.4}, {'word': \"I'm\", 'start': 10.4, 'end': 10.639999}, {'word': 'Cody', 'start': 10.639999, 'end': 11.04}, {'word': 'Smith.', 'start': 11.04, 'end': 11.759999}, {'word': 'Nice', 'start': 11.84, 'end': 12.24}, {'word': 'to', 'start': 12.24, 'end': 12.32}, {'word': 'meet', 'start': 12.32, 'end': 12.559999}, {'word': 'you.', 'start': 12.559999, 'end': 12.719999}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 13.224999, 'end': 17.064999, 'words': [{'word': 'Nice', 'start': 13.224999, 'end': 13.544999}, {'word': 'to', 'start': 13.544999, 'end': 13.705}, {'word': 'meet', 'start': 13.705, 'end': 13.865}, {'word': 'you', 'start': 13.865, 'end': 14.105}, {'word': 'too.', 'start': 14.105, 'end': 14.664999}, {'word': 'Please', 'start': 14.745, 'end': 15.065}, {'word': 'let', 'start': 15.065, 'end': 15.304999}, {'word': 'me', 'start': 15.304999, 'end': 15.384999}, {'word': 'know', 'start': 15.384999, 'end': 15.545}, {'word': 'if', 'start': 15.545, 'end': 15.705}, {'word': 'you', 'start': 15.705, 'end': 15.865}, {'word': 'have', 'start': 15.865, 'end': 16.025}, {'word': 'any', 'start': 16.025, 'end': 16.345}, {'word': 'questions.', 'start': 16.345, 'end': 17.064999}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 17.545, 'end': 20.185, 'words': [{'word': 'I', 'start': 17.545, 'end': 17.865}, {'word': 'will.', 'start': 17.865, 'end': 18.265}, {'word': 'I', 'start': 18.265, 'end': 18.425}, {'word': \"don't\", 'start': 18.425, 'end': 18.585}, {'word': 'have', 'start': 18.585, 'end': 18.744999}, {'word': 'any', 'start': 18.744999, 'end': 18.985}, {'word': 'questions', 'start': 18.985, 'end': 19.465}, {'word': 'right', 'start': 19.465, 'end': 19.705}, {'word': 'now.', 'start': 19.705, 'end': 20.185}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 20.425, 'end': 25.704998, 'words': [{'word': 'Here', 'start': 20.425, 'end': 20.824999}, {'word': 'is', 'start': 20.824999, 'end': 20.984999}, {'word': 'my', 'start': 20.984999, 'end': 21.145}, {'word': 'business', 'start': 21.145, 'end': 21.544998}, {'word': 'card.', 'start': 21.544998, 'end': 22.185}, {'word': 'You', 'start': 22.185, 'end': 22.425}, {'word': 'can', 'start': 22.425, 'end': 22.585}, {'word': 'contact', 'start': 22.585, 'end': 23.064999}, {'word': 'me', 'start': 23.064999, 'end': 23.305}, {'word': 'by', 'start': 23.305, 'end': 23.544998}, {'word': 'email,', 'start': 23.544998, 'end': 24.265}, {'word': 'office', 'start': 24.345, 'end': 24.664999}, {'word': 'phone', 'start': 24.664999, 'end': 25.064999}, {'word': 'or', 'start': 25.064999, 'end': 25.465}, {'word': 'cell', 'start': 25.465, 'end': 25.704998}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 25.704998, 'end': 26.265, 'words': [{'word': 'phone.', 'start': 25.704998, 'end': 26.265}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 26.425, 'end': 29.849998, 'words': [{'word': 'Great.', 'start': 26.425, 'end': 27.064999}, {'word': \"I'm\", 'start': 27.21, 'end': 27.609999}, {'word': 'sure', 'start': 27.609999, 'end': 27.689999}, {'word': 'I', 'start': 27.689999, 'end': 27.849998}, {'word': 'will', 'start': 27.849998, 'end': 28.009998}, {'word': 'have', 'start': 28.009998, 'end': 28.169998}, {'word': 'lots', 'start': 28.169998, 'end': 28.49}, {'word': 'of', 'start': 28.49, 'end': 28.65}, {'word': 'questions', 'start': 28.65, 'end': 29.05}, {'word': 'soon.', 'start': 29.05, 'end': 29.849998}]}, {'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 35.53, 'end': 39.05, 'words': [{'word': 'Hi.', 'start': 35.53, 'end': 36.09}, {'word': 'My', 'start': 36.09, 'end': 36.25}, {'word': 'name', 'start': 36.25, 'end': 36.41}, {'word': 'is', 'start': 36.41, 'end': 36.57}, {'word': 'Diane', 'start': 36.57, 'end': 37.05}, {'word': 'Taylor.', 'start': 37.05, 'end': 37.93}, {'word': \"I'm\", 'start': 37.93, 'end': 38.17}, {'word': 'the', 'start': 38.17, 'end': 38.329998}, {'word': 'office', 'start': 38.329998, 'end': 38.649998}, {'word': 'manager.', 'start': 38.649998, 'end': 39.05}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 39.704998, 'end': 43.385, 'words': [{'word': 'Hi,', 'start': 39.704998, 'end': 40.184998}, {'word': 'Diane.', 'start': 40.184998, 'end': 40.745}, {'word': \"I'm\", 'start': 40.745, 'end': 40.984997}, {'word': 'Cody', 'start': 40.984997, 'end': 41.385}, {'word': 'Smith.', 'start': 41.385, 'end': 42.105}, {'word': 'Nice', 'start': 42.265, 'end': 42.585}, {'word': 'to', 'start': 42.585, 'end': 42.745}, {'word': 'meet', 'start': 42.745, 'end': 42.905}, {'word': 'you.', 'start': 42.905, 'end': 43.385}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 43.464996, 'end': 47.385, 'words': [{'word': 'Nice', 'start': 43.464996, 'end': 43.945}, {'word': 'to', 'start': 43.945, 'end': 44.105}, {'word': 'meet', 'start': 44.105, 'end': 44.265}, {'word': 'you', 'start': 44.265, 'end': 44.504997}, {'word': 'too.', 'start': 44.504997, 'end': 45.065}, {'word': 'Please', 'start': 45.144997, 'end': 45.464996}, {'word': 'let', 'start': 45.464996, 'end': 45.625}, {'word': 'me', 'start': 45.625, 'end': 45.785}, {'word': 'know', 'start': 45.785, 'end': 45.945}, {'word': 'if', 'start': 45.945, 'end': 46.105}, {'word': 'you', 'start': 46.105, 'end': 46.184998}, {'word': 'have', 'start': 46.184998, 'end': 46.425}, {'word': 'any', 'start': 46.425, 'end': 46.664997}, {'word': 'questions.', 'start': 46.664997, 'end': 47.385}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 47.945, 'end': 50.265, 'words': [{'word': 'I', 'start': 47.945, 'end': 48.265}, {'word': 'will.', 'start': 48.265, 'end': 48.664997}, {'word': 'I', 'start': 48.664997, 'end': 48.745}, {'word': \"don't\", 'start': 48.745, 'end': 48.985}, {'word': 'have', 'start': 48.985, 'end': 49.144997}, {'word': 'any', 'start': 49.144997, 'end': 49.385}, {'word': 'questions', 'start': 49.385, 'end': 49.864998}, {'word': 'right', 'start': 49.864998, 'end': 50.105}, {'word': 'now.', 'start': 50.105, 'end': 50.265}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 50.797, 'end': 56.077, 'words': [{'word': 'Here', 'start': 50.797, 'end': 51.197}, {'word': 'is', 'start': 51.197, 'end': 51.357}, {'word': 'my', 'start': 51.357, 'end': 51.517}, {'word': 'business', 'start': 51.517, 'end': 51.917}, {'word': 'card.', 'start': 51.917, 'end': 52.557}, {'word': 'You', 'start': 52.557, 'end': 52.797}, {'word': 'can', 'start': 52.797, 'end': 52.957}, {'word': 'contact', 'start': 52.957, 'end': 53.357}, {'word': 'me', 'start': 53.357, 'end': 53.677}, {'word': 'by', 'start': 53.677, 'end': 53.917}, {'word': 'email,', 'start': 53.917, 'end': 54.636997}, {'word': 'office', 'start': 54.637, 'end': 55.037}, {'word': 'phone', 'start': 55.037, 'end': 55.437}, {'word': 'or', 'start': 55.437, 'end': 55.836998}, {'word': 'cell', 'start': 55.836998, 'end': 56.077}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 56.077, 'end': 56.636997, 'words': [{'word': 'phone.', 'start': 56.077, 'end': 56.636997}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 56.957, 'end': 59.836998, 'words': [{'word': 'Great.', 'start': 56.957, 'end': 57.677}, {'word': \"I'm\", 'start': 57.677, 'end': 57.917}, {'word': 'sure', 'start': 57.917, 'end': 58.077}, {'word': 'I', 'start': 58.077, 'end': 58.237}, {'word': 'will', 'start': 58.237, 'end': 58.397}, {'word': 'have', 'start': 58.397, 'end': 58.557}, {'word': 'lots', 'start': 58.557, 'end': 58.877}, {'word': 'of', 'start': 58.877, 'end': 59.037}, {'word': 'questions', 'start': 59.037, 'end': 59.437}, {'word': 'soon.', 'start': 59.437, 'end': 59.836998}]}]}\n" + ] + } + ], + "source": [ + "def group_words_into_sentences(words, max_words=15):\n", + " sentences = []\n", + " current_sentence = []\n", + " current_speaker = None\n", + " start_time = None\n", + " \n", + " for i, word_info in enumerate(words):\n", + " word = word_info[\"punctuated_word\"]\n", + " speaker = word_info[\"speaker\"]\n", + " start = word_info[\"start\"]\n", + " end = word_info[\"end\"]\n", + " \n", + " # If speaker changes or sentence reaches max length, start a new sentence\n", + " if speaker != current_speaker or len(current_sentence) >= max_words:\n", + " if current_sentence:\n", + " sentences.append({\n", + " \"sentence\": \" \".join([w[\"word\"] for w in current_sentence]),\n", + " \"speaker\": current_speaker,\n", + " \"start\": start_time,\n", + " \"end\": words[i-1][\"end\"],\n", + " \"words\": current_sentence\n", + " })\n", + " current_sentence = []\n", + " current_speaker = speaker\n", + " start_time = start\n", + " \n", + " # Append word with metadata inside the current sentence\n", + " current_sentence.append({\"word\": word, \"start\": start, \"end\": end})\n", + "\n", + " # Append the last sentence if any words remain\n", + " if current_sentence:\n", + " sentences.append({\n", + " \"sentence\": \" \".join([w[\"word\"] for w in current_sentence]),\n", + " \"speaker\": current_speaker,\n", + " \"start\": start_time,\n", + " \"end\": words[-1][\"end\"],\n", + " \"words\": current_sentence\n", + " })\n", + " \n", + " return {\"sentences\": sentences}\n", + "\n", + "\n", + "\n", + "# Example usage\n", + "'''words = [\n", + " {\"word\": \"hi\", \"start\": 5.12, \"end\": 5.68, \"confidence\": 0.850096, \"punctuated_word\": \"Hi.\", \"speaker\": 0, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"my\", \"start\": 5.68, \"end\": 5.8399997, \"confidence\": 0.997789, \"punctuated_word\": \"My\", \"speaker\": 0, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"name\", \"start\": 5.84, \"end\": 6.00, \"confidence\": 0.997789, \"punctuated_word\": \"name\", \"speaker\": 0, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"is\", \"start\": 6.01, \"end\": 6.10, \"confidence\": 0.997789, \"punctuated_word\": \"is\", \"speaker\": 1, \"speaker_confidence\": 0.93792623},\n", + " {\"word\": \"John\", \"start\": 6.11, \"end\": 6.50, \"confidence\": 0.997789, \"punctuated_word\": \"John.\", \"speaker\": 1, \"speaker_confidence\": 0.93792623},\n", + "]'''\n", + "\n", + "result = group_words_into_sentences(words)\n", + "print(result)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 5.12, 'end': 9.04, 'words': [{'word': 'Hi.', 'start': 5.12, 'end': 5.68}, {'word': 'My', 'start': 5.68, 'end': 5.8399997}, {'word': 'name', 'start': 5.8399997, 'end': 6.0}, {'word': 'is', 'start': 6.0, 'end': 6.16}, {'word': 'Diane', 'start': 6.16, 'end': 6.72}, {'word': 'Taylor.', 'start': 6.72, 'end': 7.52}, {'word': \"I'm\", 'start': 7.52, 'end': 7.7599998}, {'word': 'the', 'start': 7.7599998, 'end': 7.9199996}, {'word': 'office', 'start': 7.9199996, 'end': 8.24}, {'word': 'manager.', 'start': 8.24, 'end': 9.04}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 9.28, 'end': 12.719999, 'words': [{'word': 'Hi,', 'start': 9.28, 'end': 9.76}, {'word': 'Diane.', 'start': 9.76, 'end': 10.4}, {'word': \"I'm\", 'start': 10.4, 'end': 10.639999}, {'word': 'Cody', 'start': 10.639999, 'end': 11.04}, {'word': 'Smith.', 'start': 11.04, 'end': 11.759999}, {'word': 'Nice', 'start': 11.84, 'end': 12.24}, {'word': 'to', 'start': 12.24, 'end': 12.32}, {'word': 'meet', 'start': 12.32, 'end': 12.559999}, {'word': 'you.', 'start': 12.559999, 'end': 12.719999}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 13.224999, 'end': 17.064999, 'words': [{'word': 'Nice', 'start': 13.224999, 'end': 13.544999}, {'word': 'to', 'start': 13.544999, 'end': 13.705}, {'word': 'meet', 'start': 13.705, 'end': 13.865}, {'word': 'you', 'start': 13.865, 'end': 14.105}, {'word': 'too.', 'start': 14.105, 'end': 14.664999}, {'word': 'Please', 'start': 14.745, 'end': 15.065}, {'word': 'let', 'start': 15.065, 'end': 15.304999}, {'word': 'me', 'start': 15.304999, 'end': 15.384999}, {'word': 'know', 'start': 15.384999, 'end': 15.545}, {'word': 'if', 'start': 15.545, 'end': 15.705}, {'word': 'you', 'start': 15.705, 'end': 15.865}, {'word': 'have', 'start': 15.865, 'end': 16.025}, {'word': 'any', 'start': 16.025, 'end': 16.345}, {'word': 'questions.', 'start': 16.345, 'end': 17.064999}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 17.545, 'end': 20.185, 'words': [{'word': 'I', 'start': 17.545, 'end': 17.865}, {'word': 'will.', 'start': 17.865, 'end': 18.265}, {'word': 'I', 'start': 18.265, 'end': 18.425}, {'word': \"don't\", 'start': 18.425, 'end': 18.585}, {'word': 'have', 'start': 18.585, 'end': 18.744999}, {'word': 'any', 'start': 18.744999, 'end': 18.985}, {'word': 'questions', 'start': 18.985, 'end': 19.465}, {'word': 'right', 'start': 19.465, 'end': 19.705}, {'word': 'now.', 'start': 19.705, 'end': 20.185}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 20.425, 'end': 25.704998, 'words': [{'word': 'Here', 'start': 20.425, 'end': 20.824999}, {'word': 'is', 'start': 20.824999, 'end': 20.984999}, {'word': 'my', 'start': 20.984999, 'end': 21.145}, {'word': 'business', 'start': 21.145, 'end': 21.544998}, {'word': 'card.', 'start': 21.544998, 'end': 22.185}, {'word': 'You', 'start': 22.185, 'end': 22.425}, {'word': 'can', 'start': 22.425, 'end': 22.585}, {'word': 'contact', 'start': 22.585, 'end': 23.064999}, {'word': 'me', 'start': 23.064999, 'end': 23.305}, {'word': 'by', 'start': 23.305, 'end': 23.544998}, {'word': 'email,', 'start': 23.544998, 'end': 24.265}, {'word': 'office', 'start': 24.345, 'end': 24.664999}, {'word': 'phone', 'start': 24.664999, 'end': 25.064999}, {'word': 'or', 'start': 25.064999, 'end': 25.465}, {'word': 'cell', 'start': 25.465, 'end': 25.704998}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 25.704998, 'end': 26.265, 'words': [{'word': 'phone.', 'start': 25.704998, 'end': 26.265}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 26.425, 'end': 29.849998, 'words': [{'word': 'Great.', 'start': 26.425, 'end': 27.064999}, {'word': \"I'm\", 'start': 27.21, 'end': 27.609999}, {'word': 'sure', 'start': 27.609999, 'end': 27.689999}, {'word': 'I', 'start': 27.689999, 'end': 27.849998}, {'word': 'will', 'start': 27.849998, 'end': 28.009998}, {'word': 'have', 'start': 28.009998, 'end': 28.169998}, {'word': 'lots', 'start': 28.169998, 'end': 28.49}, {'word': 'of', 'start': 28.49, 'end': 28.65}, {'word': 'questions', 'start': 28.65, 'end': 29.05}, {'word': 'soon.', 'start': 29.05, 'end': 29.849998}]}, {'sentence': \"Hi. My name is Diane Taylor. I'm the office manager.\", 'speaker': 0, 'start': 35.53, 'end': 39.05, 'words': [{'word': 'Hi.', 'start': 35.53, 'end': 36.09}, {'word': 'My', 'start': 36.09, 'end': 36.25}, {'word': 'name', 'start': 36.25, 'end': 36.41}, {'word': 'is', 'start': 36.41, 'end': 36.57}, {'word': 'Diane', 'start': 36.57, 'end': 37.05}, {'word': 'Taylor.', 'start': 37.05, 'end': 37.93}, {'word': \"I'm\", 'start': 37.93, 'end': 38.17}, {'word': 'the', 'start': 38.17, 'end': 38.329998}, {'word': 'office', 'start': 38.329998, 'end': 38.649998}, {'word': 'manager.', 'start': 38.649998, 'end': 39.05}]}, {'sentence': \"Hi, Diane. I'm Cody Smith. Nice to meet you.\", 'speaker': 1, 'start': 39.704998, 'end': 43.385, 'words': [{'word': 'Hi,', 'start': 39.704998, 'end': 40.184998}, {'word': 'Diane.', 'start': 40.184998, 'end': 40.745}, {'word': \"I'm\", 'start': 40.745, 'end': 40.984997}, {'word': 'Cody', 'start': 40.984997, 'end': 41.385}, {'word': 'Smith.', 'start': 41.385, 'end': 42.105}, {'word': 'Nice', 'start': 42.265, 'end': 42.585}, {'word': 'to', 'start': 42.585, 'end': 42.745}, {'word': 'meet', 'start': 42.745, 'end': 42.905}, {'word': 'you.', 'start': 42.905, 'end': 43.385}]}, {'sentence': 'Nice to meet you too. Please let me know if you have any questions.', 'speaker': 0, 'start': 43.464996, 'end': 47.385, 'words': [{'word': 'Nice', 'start': 43.464996, 'end': 43.945}, {'word': 'to', 'start': 43.945, 'end': 44.105}, {'word': 'meet', 'start': 44.105, 'end': 44.265}, {'word': 'you', 'start': 44.265, 'end': 44.504997}, {'word': 'too.', 'start': 44.504997, 'end': 45.065}, {'word': 'Please', 'start': 45.144997, 'end': 45.464996}, {'word': 'let', 'start': 45.464996, 'end': 45.625}, {'word': 'me', 'start': 45.625, 'end': 45.785}, {'word': 'know', 'start': 45.785, 'end': 45.945}, {'word': 'if', 'start': 45.945, 'end': 46.105}, {'word': 'you', 'start': 46.105, 'end': 46.184998}, {'word': 'have', 'start': 46.184998, 'end': 46.425}, {'word': 'any', 'start': 46.425, 'end': 46.664997}, {'word': 'questions.', 'start': 46.664997, 'end': 47.385}]}, {'sentence': \"I will. I don't have any questions right now.\", 'speaker': 1, 'start': 47.945, 'end': 50.265, 'words': [{'word': 'I', 'start': 47.945, 'end': 48.265}, {'word': 'will.', 'start': 48.265, 'end': 48.664997}, {'word': 'I', 'start': 48.664997, 'end': 48.745}, {'word': \"don't\", 'start': 48.745, 'end': 48.985}, {'word': 'have', 'start': 48.985, 'end': 49.144997}, {'word': 'any', 'start': 49.144997, 'end': 49.385}, {'word': 'questions', 'start': 49.385, 'end': 49.864998}, {'word': 'right', 'start': 49.864998, 'end': 50.105}, {'word': 'now.', 'start': 50.105, 'end': 50.265}]}, {'sentence': 'Here is my business card. You can contact me by email, office phone or cell', 'speaker': 0, 'start': 50.797, 'end': 56.077, 'words': [{'word': 'Here', 'start': 50.797, 'end': 51.197}, {'word': 'is', 'start': 51.197, 'end': 51.357}, {'word': 'my', 'start': 51.357, 'end': 51.517}, {'word': 'business', 'start': 51.517, 'end': 51.917}, {'word': 'card.', 'start': 51.917, 'end': 52.557}, {'word': 'You', 'start': 52.557, 'end': 52.797}, {'word': 'can', 'start': 52.797, 'end': 52.957}, {'word': 'contact', 'start': 52.957, 'end': 53.357}, {'word': 'me', 'start': 53.357, 'end': 53.677}, {'word': 'by', 'start': 53.677, 'end': 53.917}, {'word': 'email,', 'start': 53.917, 'end': 54.636997}, {'word': 'office', 'start': 54.637, 'end': 55.037}, {'word': 'phone', 'start': 55.037, 'end': 55.437}, {'word': 'or', 'start': 55.437, 'end': 55.836998}, {'word': 'cell', 'start': 55.836998, 'end': 56.077}]}, {'sentence': 'phone.', 'speaker': 0, 'start': 56.077, 'end': 56.636997, 'words': [{'word': 'phone.', 'start': 56.077, 'end': 56.636997}]}, {'sentence': \"Great. I'm sure I will have lots of questions soon.\", 'speaker': 1, 'start': 56.957, 'end': 59.836998, 'words': [{'word': 'Great.', 'start': 56.957, 'end': 57.677}, {'word': \"I'm\", 'start': 57.677, 'end': 57.917}, {'word': 'sure', 'start': 57.917, 'end': 58.077}, {'word': 'I', 'start': 58.077, 'end': 58.237}, {'word': 'will', 'start': 58.237, 'end': 58.397}, {'word': 'have', 'start': 58.397, 'end': 58.557}, {'word': 'lots', 'start': 58.557, 'end': 58.877}, {'word': 'of', 'start': 58.877, 'end': 59.037}, {'word': 'questions', 'start': 59.037, 'end': 59.437}, {'word': 'soon.', 'start': 59.437, 'end': 59.836998}]}]\n" + ] + } + ], + "source": [ + "print(result[\"sentences\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### llm summary and output formatting" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "prompt = \"\"\" \n", + "You are an AI meeting transcript summary formatter. You will be provided with a sentence-level and word-level summary of a meeting, including timestamps for each sentence (in seconds), speaker details, and word-level timestamps. Your task is to generate a concise summary of the meeting organized into four sections:\n", + "\n", + "1. **Purpose:** A brief description of the meeting's purpose.\n", + "2. **Chapters:** A list of chapter titles that segment the meeting into key parts. Each chapter must include a timestamp (in seconds) indicating when that segment starts.\n", + "3. **Outcomes:** A coherent description of the meeting outcomes. For each outcome, include a timestamp corresponding to the relevant moment.\n", + "4. **Action Items:** A list of actionable items based on the meeting discussion. Each action item should include a timestamp indicating when it was mentioned.\n", + "\n", + "**Instructions:**\n", + "- Return a JSON response containing only the required fields with no additional commentary.\n", + "- For each section that includes a timestamp, include the timestamp exactly as provided (in seconds).\n", + "- Ensure the JSON is properly formatted and valid.\n", + "\n", + "**Example Output JSON:**\n", + "\n", + "{\n", + " \"Purpose\": {\n", + " \"text\": \"Discuss project progress and define upcoming milestones.\",\n", + " \"time_stamp\": \"1.25\"\n", + " },\n", + " \"Chapters\": [\n", + " {\n", + " \"chapter\": \"Project Overview\",\n", + " \"time_stamp\": \"1.25\"\n", + " },\n", + " {\n", + " \"chapter\": \"Budget Review\",\n", + " \"time_stamp\": \"10.50\"\n", + " },\n", + " {\n", + " \"chapter\": \"Risk Assessment\",\n", + " \"time_stamp\": \"20.00\"\n", + " }\n", + " ],\n", + " \"Outcomes\": [\n", + " {\n", + " \"text\": \"Key performance metrics were defined and improvement areas identified.\",\n", + " \"time_stamp\": \"15.30\"\n", + " },\n", + " {\n", + " \"text\": \"A revised project timeline was agreed upon.\",\n", + " \"time_stamp\": \"25.75\"\n", + " }\n", + " ],\n", + " \"Action_Items\": [\n", + " {\n", + " \"text\": \"Prepare a detailed budget report for the next meeting.\",\n", + " \"time_stamp\": \"30.45\"\n", + " },\n", + " {\n", + " \"text\": \"Schedule a follow-up meeting with all stakeholders.\",\n", + " \"time_stamp\": \"35.60\"\n", + " }\n", + " ]\n", + "}\n", + "NOTE: do not put ```json before or after the text , just return the json output format please\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Claude key 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\n" + ] + }, + { + "ename": "BadRequestError", + "evalue": "Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}}", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mBadRequestError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[25], line 11\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mClaude key \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclaude_key\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 7\u001b[0m client \u001b[38;5;241m=\u001b[39m anthropic\u001b[38;5;241m.\u001b[39mAnthropic(\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# defaults to os.environ.get(\"ANTHROPIC_API_KEY\")\u001b[39;00m\n\u001b[0;32m 9\u001b[0m api_key\u001b[38;5;241m=\u001b[39mos\u001b[38;5;241m.\u001b[39mgetenv(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mANTHTROPIC_API_KEY\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 10\u001b[0m )\n\u001b[1;32m---> 11\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mclaude-3-5-sonnet-20241022\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m4000\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\n\u001b[0;32m 15\u001b[0m \n\u001b[0;32m 16\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrole\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msystem\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcontent\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mprompt\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 17\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrole\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43muser\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcontent\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mHello, Claude\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\n\u001b[0;32m 18\u001b[0m \u001b[43m \u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m 19\u001b[0m \u001b[43m)\u001b[49m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28mprint\u001b[39m(message\u001b[38;5;241m.\u001b[39mcontent)\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_utils\\_utils.py:275\u001b[0m, in \u001b[0;36mrequired_args..inner..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 273\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing required argument: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mquote(missing[\u001b[38;5;241m0\u001b[39m])\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(msg)\n\u001b[1;32m--> 275\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\resources\\messages\\messages.py:904\u001b[0m, in \u001b[0;36mMessages.create\u001b[1;34m(self, max_tokens, messages, model, metadata, stop_sequences, stream, system, temperature, tool_choice, tools, top_k, top_p, extra_headers, extra_query, extra_body, timeout)\u001b[0m\n\u001b[0;32m 897\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m model \u001b[38;5;129;01min\u001b[39;00m DEPRECATED_MODELS:\n\u001b[0;32m 898\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 899\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe model \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m is deprecated and will reach end-of-life on \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDEPRECATED_MODELS[model]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 900\u001b[0m \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m,\n\u001b[0;32m 901\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m,\n\u001b[0;32m 902\u001b[0m )\n\u001b[1;32m--> 904\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_post\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 905\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/v1/messages\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 906\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaybe_transform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 907\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[0;32m 908\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax_tokens\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 909\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmessages\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 910\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 911\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmetadata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 912\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstop_sequences\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop_sequences\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 913\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstream\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 914\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msystem\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msystem\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 915\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtemperature\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtool_choice\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtool_choice\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtools\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtools\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_k\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_k\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_p\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_p\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 920\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 921\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage_create_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMessageCreateParams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 922\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 923\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmake_request_options\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 924\u001b[0m \u001b[43m \u001b[49m\u001b[43mextra_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_headers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_query\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_query\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_body\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\n\u001b[0;32m 925\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 926\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mMessage\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 927\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 928\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mStream\u001b[49m\u001b[43m[\u001b[49m\u001b[43mRawMessageStreamEvent\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 929\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_base_client.py:1282\u001b[0m, in \u001b[0;36mSyncAPIClient.post\u001b[1;34m(self, path, cast_to, body, options, files, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1268\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mpost\u001b[39m(\n\u001b[0;32m 1269\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1270\u001b[0m path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1277\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 1278\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[0;32m 1279\u001b[0m opts \u001b[38;5;241m=\u001b[39m FinalRequestOptions\u001b[38;5;241m.\u001b[39mconstruct(\n\u001b[0;32m 1280\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url\u001b[38;5;241m=\u001b[39mpath, json_data\u001b[38;5;241m=\u001b[39mbody, files\u001b[38;5;241m=\u001b[39mto_httpx_files(files), \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39moptions\n\u001b[0;32m 1281\u001b[0m )\n\u001b[1;32m-> 1282\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m cast(ResponseT, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_base_client.py:959\u001b[0m, in \u001b[0;36mSyncAPIClient.request\u001b[1;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[0;32m 956\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 957\u001b[0m retries_taken \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m--> 959\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 960\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 961\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 962\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 963\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 964\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries_taken\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries_taken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 965\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\User\\anaconda3\\envs\\fire\\lib\\site-packages\\anthropic\\_base_client.py:1063\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[1;34m(self, cast_to, options, retries_taken, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1060\u001b[0m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mread()\n\u001b[0;32m 1062\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRe-raising status error\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m-> 1063\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_status_error_from_response(err\u001b[38;5;241m.\u001b[39mresponse) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1065\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_response(\n\u001b[0;32m 1066\u001b[0m cast_to\u001b[38;5;241m=\u001b[39mcast_to,\n\u001b[0;32m 1067\u001b[0m options\u001b[38;5;241m=\u001b[39moptions,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1071\u001b[0m retries_taken\u001b[38;5;241m=\u001b[39mretries_taken,\n\u001b[0;32m 1072\u001b[0m )\n", + "\u001b[1;31mBadRequestError\u001b[0m: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.'}}" + ] + } + ], + "source": [ + "import anthropic\n", + "import os\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "claude_key = os.getenv(\"ANTHTROPIC_API_KEY\")\n", + "print(f\"Claude key {claude_key}\")\n", + "client = anthropic.Anthropic(\n", + " # defaults to os.environ.get(\"ANTHROPIC_API_KEY\")\n", + " api_key=os.getenv(\"ANTHTROPIC_API_KEY\"),\n", + ")\n", + "message = client.messages.create(\n", + " model=\"claude-3-5-sonnet-20241022\",\n", + " max_tokens=4000,\n", + " messages=[\n", + "\n", + " {\"role\": \"system\", \"content\": f\"{prompt}\"},\n", + " {\"role\": \"user\", \"content\": \"Hello, Claude\"}\n", + " ]\n", + ")\n", + "print(message.content)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"Hi. My name is Diane Taylor. I'm the office manager.\",\n", + " \"Hi, Diane. I'm Cody Smith. Nice to meet you.\",\n", + " 'Nice to meet you too. Please let me know if you have any questions.',\n", + " \"I will. I don't have any questions right now.\",\n", + " 'Here is my business card. You can contact me by email, office phone or cell',\n", + " 'phone.',\n", + " \"Great. I'm sure I will have lots of questions soon.\",\n", + " \"Hi. My name is Diane Taylor. I'm the office manager.\",\n", + " \"Hi, Diane. I'm Cody Smith. Nice to meet you.\",\n", + " 'Nice to meet you too. Please let me know if you have any questions.',\n", + " \"I will. I don't have any questions right now.\",\n", + " 'Here is my business card. You can contact me by email, office phone or cell',\n", + " 'phone.',\n", + " \"Great. I'm sure I will have lots of questions soon.\"]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sentences" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ListenRESTWord(word='hi', start=5.12, end=5.68, confidence=0.850096, punctuated_word='Hi.', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=5.68, end=5.8399997, confidence=0.997789, punctuated_word='My', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='name', start=5.8399997, end=6.0, confidence=0.99926835, punctuated_word='name', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=6.0, end=6.16, confidence=0.99669075, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=6.16, end=6.72, confidence=0.9475148, punctuated_word='Diane', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='taylor', start=6.72, end=7.52, confidence=0.9952364, punctuated_word='Taylor.', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=7.52, end=7.7599998, confidence=0.9967487, punctuated_word=\"I'm\", speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='the', start=7.7599998, end=7.9199996, confidence=0.9995815, punctuated_word='the', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=7.9199996, end=8.24, confidence=0.9646264, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='manager', start=8.24, end=9.04, confidence=0.992903, punctuated_word='manager.', speaker=0, language=None, speaker_confidence=0.93792623, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='hi', start=9.28, end=9.76, confidence=0.965518, punctuated_word='Hi,', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=9.76, end=10.4, confidence=0.9970196, punctuated_word='Diane.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=10.4, end=10.639999, confidence=0.9990172, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cody', start=10.639999, end=11.04, confidence=0.9035979, punctuated_word='Cody', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='smith', start=11.04, end=11.759999, confidence=0.99773884, punctuated_word='Smith.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=11.84, end=12.24, confidence=0.9996824, punctuated_word='Nice', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=12.24, end=12.32, confidence=0.99977976, punctuated_word='to', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=12.32, end=12.559999, confidence=0.99973255, punctuated_word='meet', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=12.559999, end=12.719999, confidence=0.99866223, punctuated_word='you.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=13.224999, end=13.544999, confidence=0.9992798, punctuated_word='Nice', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=13.544999, end=13.705, confidence=0.9995739, punctuated_word='to', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=13.705, end=13.865, confidence=0.9988772, punctuated_word='meet', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=13.865, end=14.105, confidence=0.99925274, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='too', start=14.105, end=14.664999, confidence=0.9016343, punctuated_word='too.', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='please', start=14.745, end=15.065, confidence=0.9992387, punctuated_word='Please', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='let', start=15.065, end=15.304999, confidence=0.98098606, punctuated_word='let', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=15.304999, end=15.384999, confidence=0.9992964, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.62402385, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='know', start=15.384999, end=15.545, confidence=0.9994412, punctuated_word='know', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='if', start=15.545, end=15.705, confidence=0.9976265, punctuated_word='if', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=15.705, end=15.865, confidence=0.9991308, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=15.865, end=16.025, confidence=0.9991092, punctuated_word='have', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=16.025, end=16.345, confidence=0.99459064, punctuated_word='any', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=16.345, end=17.064999, confidence=0.988152, punctuated_word='questions.', speaker=0, language=None, speaker_confidence=0.5815538, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=17.545, end=17.865, confidence=0.99904555, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=17.865, end=18.265, confidence=0.9280047, punctuated_word='will.', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=18.265, end=18.425, confidence=0.99965835, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"don't\", start=18.425, end=18.585, confidence=0.99987173, punctuated_word=\"don't\", speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=18.585, end=18.744999, confidence=0.99926573, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=18.744999, end=18.985, confidence=0.9960824, punctuated_word='any', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=18.985, end=19.465, confidence=0.9986945, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='right', start=19.465, end=19.705, confidence=0.99768794, punctuated_word='right', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='now', start=19.705, end=20.185, confidence=0.9974798, punctuated_word='now.', speaker=1, language=None, speaker_confidence=0.87175834, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='here', start=20.425, end=20.824999, confidence=0.99939764, punctuated_word='Here', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=20.824999, end=20.984999, confidence=0.9719598, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=20.984999, end=21.145, confidence=0.99968374, punctuated_word='my', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='business', start=21.145, end=21.544998, confidence=0.9982492, punctuated_word='business', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='card', start=21.544998, end=22.185, confidence=0.98301756, punctuated_word='card.', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=22.185, end=22.425, confidence=0.99935585, punctuated_word='You', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='can', start=22.425, end=22.585, confidence=0.9995994, punctuated_word='can', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='contact', start=22.585, end=23.064999, confidence=0.99952483, punctuated_word='contact', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=23.064999, end=23.305, confidence=0.99856913, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='by', start=23.305, end=23.544998, confidence=0.99770606, punctuated_word='by', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='email', start=23.544998, end=24.265, confidence=0.971478, punctuated_word='email,', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=24.345, end=24.664999, confidence=0.9964013, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=24.664999, end=25.064999, confidence=0.9928808, punctuated_word='phone', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='or', start=25.064999, end=25.465, confidence=0.6600872, punctuated_word='or', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cell', start=25.465, end=25.704998, confidence=0.8836563, punctuated_word='cell', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=25.704998, end=26.265, confidence=0.9960382, punctuated_word='phone.', speaker=0, language=None, speaker_confidence=0.9812977, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='great', start=26.425, end=27.064999, confidence=0.9100342, punctuated_word='Great.', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=27.21, end=27.609999, confidence=0.98228633, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='sure', start=27.609999, end=27.689999, confidence=0.99953175, punctuated_word='sure', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=27.689999, end=27.849998, confidence=0.98055536, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=27.849998, end=28.009998, confidence=0.9949708, punctuated_word='will', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=28.009998, end=28.169998, confidence=0.9977138, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='lots', start=28.169998, end=28.49, confidence=0.9862031, punctuated_word='lots', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='of', start=28.49, end=28.65, confidence=0.99797314, punctuated_word='of', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=28.65, end=29.05, confidence=0.9926537, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='soon', start=29.05, end=29.849998, confidence=0.9892111, punctuated_word='soon.', speaker=1, language=None, speaker_confidence=0.96821785, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='hi', start=35.53, end=36.09, confidence=0.8361318, punctuated_word='Hi.', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=36.09, end=36.25, confidence=0.9970067, punctuated_word='My', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='name', start=36.25, end=36.41, confidence=0.99931157, punctuated_word='name', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=36.41, end=36.57, confidence=0.99615246, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=36.57, end=37.05, confidence=0.9333365, punctuated_word='Diane', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='taylor', start=37.05, end=37.93, confidence=0.98755586, punctuated_word='Taylor.', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=37.93, end=38.17, confidence=0.9915285, punctuated_word=\"I'm\", speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='the', start=38.17, end=38.329998, confidence=0.99903524, punctuated_word='the', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=38.329998, end=38.649998, confidence=0.9606139, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='manager', start=38.649998, end=39.05, confidence=0.9932635, punctuated_word='manager.', speaker=0, language=None, speaker_confidence=0.9143924, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='hi', start=39.704998, end=40.184998, confidence=0.9040867, punctuated_word='Hi,', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='diane', start=40.184998, end=40.745, confidence=0.99451363, punctuated_word='Diane.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=40.745, end=40.984997, confidence=0.9980361, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cody', start=40.984997, end=41.385, confidence=0.91505414, punctuated_word='Cody', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='smith', start=41.385, end=42.105, confidence=0.9930361, punctuated_word='Smith.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=42.265, end=42.585, confidence=0.9996131, punctuated_word='Nice', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=42.585, end=42.745, confidence=0.99959916, punctuated_word='to', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=42.745, end=42.905, confidence=0.9997062, punctuated_word='meet', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=42.905, end=43.385, confidence=0.9968122, punctuated_word='you.', speaker=1, language=None, speaker_confidence=1.0, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='nice', start=43.464996, end=43.945, confidence=0.99911886, punctuated_word='Nice', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='to', start=43.945, end=44.105, confidence=0.9995363, punctuated_word='to', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='meet', start=44.105, end=44.265, confidence=0.99923074, punctuated_word='meet', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=44.265, end=44.504997, confidence=0.99961686, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='too', start=44.504997, end=45.065, confidence=0.9195763, punctuated_word='too.', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='please', start=45.144997, end=45.464996, confidence=0.99944204, punctuated_word='Please', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='let', start=45.464996, end=45.625, confidence=0.9877528, punctuated_word='let', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=45.625, end=45.785, confidence=0.999493, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='know', start=45.785, end=45.945, confidence=0.99970347, punctuated_word='know', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='if', start=45.945, end=46.105, confidence=0.9986369, punctuated_word='if', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=46.105, end=46.184998, confidence=0.9993949, punctuated_word='you', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=46.184998, end=46.425, confidence=0.9995105, punctuated_word='have', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=46.425, end=46.664997, confidence=0.9977247, punctuated_word='any', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=46.664997, end=47.385, confidence=0.9945705, punctuated_word='questions.', speaker=0, language=None, speaker_confidence=0.77395225, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=47.945, end=48.265, confidence=0.99928015, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=48.265, end=48.664997, confidence=0.9706428, punctuated_word='will.', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=48.664997, end=48.745, confidence=0.99981517, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"don't\", start=48.745, end=48.985, confidence=0.9999059, punctuated_word=\"don't\", speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=48.985, end=49.144997, confidence=0.9995772, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='any', start=49.144997, end=49.385, confidence=0.9978538, punctuated_word='any', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=49.385, end=49.704998, confidence=0.9990778, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='right', start=49.704998, end=50.105, confidence=0.9986975, punctuated_word='right', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='now', start=50.105, end=50.265, confidence=0.9981499, punctuated_word='now.', speaker=1, language=None, speaker_confidence=0.7876115, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='here', start=50.797, end=51.197, confidence=0.9993298, punctuated_word='Here', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='is', start=51.197, end=51.357, confidence=0.9788765, punctuated_word='is', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='my', start=51.357, end=51.517, confidence=0.9996809, punctuated_word='my', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='business', start=51.517, end=51.917, confidence=0.99878675, punctuated_word='business', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='card', start=51.917, end=52.557, confidence=0.98543835, punctuated_word='card.', speaker=0, language=None, speaker_confidence=0.66594607, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='you', start=52.557, end=52.797, confidence=0.9990195, punctuated_word='You', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='can', start=52.797, end=52.957, confidence=0.9994305, punctuated_word='can', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='contact', start=52.957, end=53.357, confidence=0.99931026, punctuated_word='contact', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='me', start=53.357, end=53.677, confidence=0.99791497, punctuated_word='me', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='by', start=53.677, end=53.917, confidence=0.9978271, punctuated_word='by', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='email', start=53.917, end=54.636997, confidence=0.96484137, punctuated_word='email,', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='office', start=54.637, end=55.037, confidence=0.9954987, punctuated_word='office', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=55.037, end=55.437, confidence=0.9935929, punctuated_word='phone', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='or', start=55.437, end=55.836998, confidence=0.6401216, punctuated_word='or', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='cell', start=55.836998, end=56.077, confidence=0.88851297, punctuated_word='cell', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='phone', start=56.077, end=56.636997, confidence=0.9945084, punctuated_word='phone.', speaker=0, language=None, speaker_confidence=0.892634, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='great', start=57.197, end=57.677, confidence=0.82068324, punctuated_word='Great.', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word=\"i'm\", start=57.677, end=57.917, confidence=0.9640242, punctuated_word=\"I'm\", speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='sure', start=57.917, end=58.077, confidence=0.99950755, punctuated_word='sure', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='i', start=58.077, end=58.237, confidence=0.97311676, punctuated_word='I', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='will', start=58.237, end=58.397, confidence=0.9965449, punctuated_word='will', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='have', start=58.397, end=58.557, confidence=0.99820924, punctuated_word='have', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='lots', start=58.557, end=58.877, confidence=0.9911178, punctuated_word='lots', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='of', start=58.877, end=59.037, confidence=0.99819773, punctuated_word='of', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='questions', start=59.037, end=59.437, confidence=0.99324834, punctuated_word='questions', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None),\n", + " ListenRESTWord(word='soon', start=59.437, end=59.836998, confidence=0.9936868, punctuated_word='soon.', speaker=1, language=None, speaker_confidence=0.93489325, sentiment=None, sentiment_score=None)]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "words" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Metadata' object has no attribute 'results'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[13], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresults\u001b[49m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'Metadata' object has no attribute 'results'" + ] + } + ], + "source": [ + "response" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'moviepy.editor'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[39], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mos\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mrandom\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mmoviepy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01meditor\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m VideoFileClip\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mextract_audio\u001b[39m(\u001b[38;5;28mself\u001b[39m, video_path, audio_output_path\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 5\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;124;03m Extract audio from video file using MoviePy\u001b[39;00m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'moviepy.editor'" + ] + } + ], + "source": [ + "import os\n", + "import random\n", + "from moviepy.editor import VideoFileClip\n", + "def extract_audio(self, video_path, audio_output_path=None):\n", + " \"\"\"\n", + " Extract audio from video file using MoviePy\n", + " \"\"\"\n", + " try:\n", + " video_clip = VideoFileClip(video_path)\n", + " audio_clip = video_clip.audio\n", + "\n", + " # Generate output path if not provided\n", + " if audio_output_path is None:\n", + " audio_extension = \"mp3\" if audio_clip.fps == 44100 else \"wav\"\n", + " audio_output_path = os.path.splitext(video_path)[0] + \"_audio.\" + audio_extension\n", + "\n", + " # Write the audio to a file\n", + " audio_clip.write_audiofile(audio_output_path)\n", + "\n", + " # Close the video and audio clips\n", + " video_clip.close()\n", + " audio_clip.close()\n", + "\n", + " return audio_output_path\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error extracting audio: {str(e)}\")\n", + " return None\n", + " \n", + "res = extract_audio(audio_url)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[generic] Extracting URL: https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/038426704141Business%20English%...0New%20Colleague.mp4\n", + "[generic] 038426704141Business English Conversation Lesson 45_ Meeting a New Colleague: Downloading webpage\n", + "[info] 038426704141Business English Conversation Lesson 45_ Meeting a New Colleague: Downloading 1 format(s): mp4\n", + "[download] Destination: downloaded_video.mp4\n", + "[download] 100% of 1.37MiB in 00:00:02 at 653.53KiB/s \n" + ] + } + ], + "source": [ + "import subprocess\n", + "import yt_dlp\n", + "import os\n", + "\n", + "def download_video(url, output_path=\"downloaded_video.mp4\"):\n", + " \"\"\"Download video from URL using yt-dlp.\"\"\"\n", + " ydl_opts = {\"outtmpl\": output_path}\n", + " with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", + " ydl.download([url])\n", + " return output_path\n", + "\n", + "def extract_audio(input_video, output_audio=\"output_audio.mp3\"):\n", + " \"\"\"Extract audio from a video file using FFmpeg.\"\"\"\n", + " command = [\n", + " \"ffmpeg\",\n", + " \"-i\", input_video, # Input file\n", + " \"-q:a\", \"0\", # Highest audio quality\n", + " \"-map\", \"a\", # Extract only the audio stream\n", + " \"-c:a\", \"copy\", # No re-encoding (FASTEST)\n", + " output_audio\n", + " ]\n", + " subprocess.run(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)\n", + " return output_audio\n", + "\n", + "def delete_file(file_path):\n", + " \"\"\"Delete a file from the system.\"\"\"\n", + " if os.path.exists(file_path):\n", + " os.remove(file_path)\n", + " print(f\"Deleted: {file_path}\")\n", + "\n", + "\n", + "\n", + "# Step 1: Download the video\n", + "video_file = download_video(video_url)\n", + "\n", + "# Step 2: Extract audio from the downloaded video\n", + "audio_file = extract_audio(video_file, \"output_audio.mp3\")\n", + "\n", + "# Step 3: Delete the downloaded video\n", + "delete_file(video_file)\n", + "\n", + "print(f\"Audio saved as: {audio_file}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning: Expected file '038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague.mp3' not found. Using '038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_bae0c94dd7784aa8b0dce186d74598ee.mp3' as fallback.\n", + "Audio saved at: c:\\Users\\User\\Desktop\\Blessing_AI\\MKD\\ds_microdot\\notebooks\\038426704141Business_English_Conversation_Lesson_45___Meeting_a_New_Colleague_bae0c94dd7784aa8b0dce186d74598ee.mp3\n" + ] + } + ], + "source": [ + "import yt_dlp\n", + "import os\n", + "import re\n", + "import uuid\n", + "\n", + "def sanitize_filename(name: str) -> str:\n", + " \"\"\"\n", + " Remove characters from the filename that are not allowed in many file systems.\n", + " \"\"\"\n", + " return re.sub(r'[^\\w\\s-]', '', name).strip().replace(' ', '_')\n", + "\n", + "def extract_audio(url: str, output_template=\"%(title)s.%(ext)s\") -> str:\n", + " \n", + " ydl_opts = {\n", + " \"format\": \"bestaudio/best\",\n", + " \"outtmpl\": output_template,\n", + " \"postprocessors\": [{\n", + " \"key\": \"FFmpegExtractAudio\",\n", + " \"preferredcodec\": \"mp3\",\n", + " \"preferredquality\": \"192\",\n", + " }],\n", + " \"quiet\": True # Set to False if you want yt-dlp output for debugging\n", + " }\n", + " \n", + " with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", + " info = ydl.extract_info(url, download=True)\n", + " \n", + " # Get the video's title and sanitize it\n", + " title = info.get('title', 'audio')\n", + " safe_title = sanitize_filename(title)\n", + " \n", + " # Generate a unique identifier\n", + " unique_id = uuid.uuid4().hex # Use hex format for compactness\n", + " \n", + " # Construct the new filename with the unique id appended\n", + " new_audio_filename = f\"{safe_title}_{unique_id}.mp3\"\n", + " \n", + " # The postprocessor creates the file based on the original template.\n", + " # Typically the file is saved as \".mp3\"\n", + " original_filename = f\"{safe_title}.mp3\"\n", + " \n", + " if os.path.exists(original_filename):\n", + " os.rename(original_filename, new_audio_filename)\n", + " else:\n", + " print(f\"Warning: Expected file '{original_filename}' not found. Using '{new_audio_filename}' as fallback.\")\n", + " \n", + " # Return the absolute path to the renamed audio file\n", + " abs_audio_path = os.path.abspath(new_audio_filename)\n", + " return abs_audio_path\n", + "\n", + "# Example usage:\n", + "if __name__ == \"__main__\":\n", + "\n", + " audio_path = extract_audio(video_url)\n", + " print(f\"Audio saved at: {audio_path}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "import os\n", + "import random\n", + "from moviepy.editor import VideoFileClip\n", + "def extract_audio(self, video_path, audio_output_path=None):\n", + " \"\"\"\n", + " Extract audio from video file using MoviePy\n", + " \"\"\"\n", + " try:\n", + " video_clip = VideoFileClip(video_path)\n", + " audio_clip = video_clip.audio\n", + "\n", + " # Generate output path if not provided\n", + " if audio_output_path is None:\n", + " audio_extension = \"mp3\" if audio_clip.fps == 44100 else \"wav\"\n", + " audio_output_path = os.path.splitext(video_path)[0] + \"_audio.\" + audio_extension\n", + "\n", + " # Write the audio to a file\n", + " audio_clip.write_audiofile(audio_output_path)\n", + "\n", + " # Close the video and audio clips\n", + " video_clip.close()\n", + " audio_clip.close()\n", + "\n", + " return audio_output_path\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error extracting audio: {str(e)}\")\n", + " return None\n", + " \n", + "res = extract_audio()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import runpod\n", + "import requests\n", + "\n", + "\n", + "class RunPodAudioProvider:\n", + " def __init__(self, api_key, model=\"small\", **kwargs):\n", + " self.api_key = api_key\n", + " runpod.api_key = self.api_key\n", + " self.endpoint_id = kwargs.get('endpoint_id', None)\n", + " self.model = model\n", + " self.endpoint = runpod.Endpoint(self.endpoint_id)\n", + " print(f\"[DEBUG] Initialized RunPodAudioProvider with endpoint ID: {self.endpoint_id}\")\n", + "\n", + " def extract_audio(self, video_path, audio_output_path=None):\n", + " \"\"\"\n", + " Extract audio from video file using MoviePy\n", + " \"\"\"\n", + " try:\n", + " video_clip = VideoFileClip(video_path)\n", + " audio_clip = video_clip.audio\n", + "\n", + " # Generate output path if not provided\n", + " if audio_output_path is None:\n", + " audio_extension = \"mp3\" if audio_clip.fps == 44100 else \"wav\"\n", + " audio_output_path = os.path.splitext(video_path)[0] + \"_audio.\" + audio_extension\n", + "\n", + " # Write the audio to a file\n", + " audio_clip.write_audiofile(audio_output_path)\n", + "\n", + " # Close the video and audio clips\n", + " video_clip.close()\n", + " audio_clip.close()\n", + "\n", + " return audio_output_path\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error extracting audio: {str(e)}\")\n", + " return None\n", + "\n", + " def transcribe_video(self, video_path):\n", + " \"\"\"\n", + " Transcribe video by first extracting audio and then processing it\n", + " \"\"\"\n", + " try:\n", + " # Extract audio from video\n", + " audio_path = self.extract_audio(video_path)\n", + " if not audio_path:\n", + " raise Exception(\"Failed to extract audio from video\")\n", + "\n", + " # Create a resized copy of the video\n", + " output_path = self.rename_file_as_copy(video_path)\n", + " video_clip = VideoFileClip(video_path)\n", + " resized_clip = video_clip.resize(newsize=(640, 360))\n", + " resized_clip.write_videofile(output_path)\n", + " video_clip.close()\n", + " resized_clip.close()\n", + "\n", + " # Transcribe the extracted audio\n", + " transcript = self.transcribe(audio=audio_path)\n", + "\n", + " # Clean up temporary files\n", + " try:\n", + " os.remove(audio_path)\n", + " os.remove(video_path)\n", + " except Exception as e:\n", + " print(f\"[WARNING] Error cleaning up temporary files: {str(e)}\")\n", + "\n", + " return transcript, output_path\n", + "\n", + " except Exception as e:\n", + " print(f\"[ERROR] Error in video transcription: {str(e)}\")\n", + " return None, None\n", + "\n", + " def get_job_status(self, job_id):\n", + " url = f\"https://api.runpod.ai/v2/{self.endpoint_id}/status/{job_id}\"\n", + " headers = {\n", + " \"Authorization\": f\"Bearer {self.api_key}\"\n", + " }\n", + " \n", + " try:\n", + " response = requests.get(url, headers=headers)\n", + " if response.status_code == 200:\n", + " print(f\"[DEBUG] Job status retrieved for Job ID {job_id}: {response.json()}\")\n", + " return response.json()\n", + " else:\n", + " print(f\"[ERROR] Failed to retrieve status for Job ID {job_id}, Status Code: {response.status_code}\")\n", + " return None\n", + " except Exception as e:\n", + " print(f\"[ERROR] Exception while checking job status for Job ID {job_id}: {str(e)}\")\n", + " return None\n", + "\n", + " def transcribe(self, audio=None):\n", + " import time\n", + " \n", + " if not audio:\n", + " print(\"[DEBUG] No audio provided.\")\n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": None,\n", + " \"status\": \"FAILED\"\n", + " }\n", + "\n", + " try:\n", + " print(f\"[DEBUG] Submitting transcription job for audio: {audio}\")\n", + " run_request = self.endpoint.run({\n", + " \"input\": {\n", + " \"audio_url\": audio,\n", + " \"model_name\": self.model\n", + " }\n", + " })\n", + " \n", + " job_id = run_request.job_id\n", + " print(f\"[DEBUG] Job submitted with Job ID: {job_id}\")\n", + " \n", + " start_time = time.time()\n", + " while time.time() - start_time < 300: # 5 minutes timeout\n", + " time.sleep(30)\n", + " \n", + " status_response = self.get_job_status(job_id)\n", + " if not status_response:\n", + " continue\n", + " current_status = status_response.get(\"status\")\n", + " \n", + " if current_status == \"COMPLETED\":\n", + " output = status_response.get(\"output\", [])\n", + " print(f\"[DEBUG] Transcription job completed for Job ID: {job_id}\")\n", + " \n", + " return {\n", + " \"text\": output[\"conversation\"],\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": job_id,\n", + " \"status\": \"COMPLETED\"\n", + " }\n", + " \n", + " print(f\"[DEBUG] Job status for Job ID {job_id}: {current_status}. Continuing to wait...\")\n", + " \n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": job_id,\n", + " \"status\": current_status\n", + " }\n", + " \n", + " except Exception as e:\n", + " print(f\"[ERROR] RunPod transcription error: {str(e)}\")\n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\",\n", + " \"job_id\": None,\n", + " \"status\": \"ERROR\"\n", + " }\n", + "\n", + " @staticmethod\n", + " def rename_file_as_copy(file_path):\n", + " \"\"\"Generate a new filename with _copy suffix and random number\"\"\"\n", + " dir_path, file_name = os.path.split(file_path)\n", + " name, ext = os.path.splitext(file_name)\n", + " random_text = f\"_{random.randint(1, 1000)}\"\n", + " new_name = f\"{name}_copy{random_text}{ext}\"\n", + " return os.path.join(dir_path, new_name)\n", + "\n", + " def translate(self, audio=None):\n", + " \"\"\"\n", + " Placeholder for translate method - not implemented for RunPod\n", + " \"\"\"\n", + " print(\"[DEBUG] Translate method not implemented.\")\n", + " return {\n", + " \"text\": \"\",\n", + " \"language\": \"\",\n", + " \"words\": [],\n", + " \"duration\": \"\"\n", + " }\n", + "\n", + "\n", + " def speak(self, text=\"\", voice=\"default\", model=None, output_file=None, output_format=\"mp3\"):\n", + " \"\"\"\n", + " Placeholder for speak method - not implemented for RunPod\n", + " \"\"\"\n", + " print(\"[DEBUG] Speak method not implemented.\")\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "fire", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c5c8ba5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,28 @@ +openai +pandas +python-dotenv +fastapi +uvicorn +langchain-community +langchain-openai +pydantic +pypdf +pypandoc +Spire.Doc +plum-dispatch==1.7.4 +scikit-learn +werkzeug +python-multipart +langgraph +tiktoken +langchainhub +chromadb +langchain +langchain-text-splitters +beautifulsoup4 +deepgram_sdk +moviepy +yt-dlp +ffmpeg-python +reportlab +anthropic \ No newline at end of file diff --git a/scripts/generate_summary.py b/scripts/generate_summary.py new file mode 100644 index 0000000..4c25d5f --- /dev/null +++ b/scripts/generate_summary.py @@ -0,0 +1,61 @@ +import anthropic +import os +from dotenv import load_dotenv +import json +from src.prompt import advanced_summary_prompt, basic_summary_prompt, custom_template_prompt +load_dotenv() + +def general_summary(transcription, plan_tier="pro"): + """ + Generate a summary of the transcription based on the user's plan tier. + + Args: + transcription: The transcription to summarize + plan_tier: The user's plan tier ("freemium" or "pro") + + Returns: + A JSON object containing the summary + """ + client = anthropic.Anthropic( + api_key=os.getenv("ANTHTROPIC_API_KEY"), + ) + + # Select the appropriate prompt based on the user's plan tier + if plan_tier.lower() == "freemium": + prompt = basic_summary_prompt + max_tokens = 2000 # Reduced token count for basic summaries + else: # Default to pro + prompt = advanced_summary_prompt + max_tokens = 4000 + + message = client.messages.create( + model="claude-3-5-sonnet-20241022", + max_tokens=max_tokens, + messages=[ + {"role": "user", "content": f"{prompt}"}, + {"role": "user", "content": f"Transcription: {transcription}"} + ] + ) + + text = message.content[0].text + return json.loads(text) + + + + +def custom_summary(template, transcription): + client = anthropic.Anthropic( + api_key=os.getenv("ANTHTROPIC_API_KEY"), + ) + message = client.messages.create( + model="claude-3-5-sonnet-20241022", + max_tokens=8000, + messages=[ + {"role": "user", "content": f"{custom_template_prompt}"}, + {"role": "user", "content": f"TEMPLATE : {template}"}, + {"role": "user", "content": f"Transcription: {transcription}"} + ] + ) + + text = message.content[0].text + return json.loads(text) diff --git a/scripts/transcriber.py b/scripts/transcriber.py new file mode 100644 index 0000000..6c6fe4a --- /dev/null +++ b/scripts/transcriber.py @@ -0,0 +1,190 @@ +import os +import logging +import re +import uuid +import yt_dlp +from deepgram.utils import verboselogs +from dotenv import load_dotenv +load_dotenv() +from deepgram import DeepgramClient, PrerecordedOptions, FileSource + +# Define your URLs (example URLs) +#audio_url = "https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/019933724441Business%20English%20Conversation%20Lesson%2045_%20Meeting%20a%20New%20Colleague.mp3" +#video_url = "https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/038426704141Business%20English%20Conversation%20Lesson%2045_%20%20Meeting%20a%20New%20Colleague.mp4" + +# Folder for file uploads/downloads + +# Folder for file uploads/downloads +UPLOAD_FOLDER = os.path.join(os.getcwd(), "../uploads") +os.makedirs(UPLOAD_FOLDER, exist_ok=True) + +def sanitize_filename(name: str) -> str: + """ + Remove characters from the filename that are not allowed in many file systems. + """ + return re.sub(r'[^\w\s-]', '', name).strip().replace(' ', '_') + +def extract_audio(url: str, output_template=os.path.join(UPLOAD_FOLDER, "%(title)s.%(ext)s")) -> str: + """ + Download and extract audio from a video URL using yt-dlp. + The file will be saved in the 'upload' folder. + + Returns: + str: The absolute path to the downloaded audio file (with a unique id appended). + """ + ydl_opts = { + "format": "bestaudio/best", + "outtmpl": output_template, + "postprocessors": [{ + "key": "FFmpegExtractAudio", + "preferredcodec": "mp3", + "preferredquality": "192", + }], + "quiet": True, + } + + with yt_dlp.YoutubeDL(ydl_opts) as ydl: + info = ydl.extract_info(url, download=True) + # Prepare the filename from the info. + # Note: prepare_filename returns the filename *before* postprocessing, + # so we change the extension to mp3. + original_filepath = os.path.splitext(ydl.prepare_filename(info))[0] + ".mp3" + + # Debug: list files in the upload folder + if not os.path.exists(original_filepath): + files = os.listdir(UPLOAD_FOLDER) + print("Warning: Could not find expected file.") + print("Files in upload folder:", files) + raise FileNotFoundError(f"Expected audio file not found: {original_filepath}") + + # Get the video's title and sanitize it + title = info.get('title', 'audio') + safe_title = sanitize_filename(title) + + # Generate a unique identifier + unique_id = uuid.uuid4().hex # Unique identifier in hex format + + # Construct the new filename with the unique id appended. + new_audio_filename = f"{safe_title}_{unique_id}.mp3" + new_audio_filepath = os.path.join(UPLOAD_FOLDER, new_audio_filename) + + # Rename the downloaded file to include the unique ID. + os.rename(original_filepath, new_audio_filepath) + print(f"Renamed file to: {new_audio_filepath}") + + # Return the absolute path to the renamed audio file. + return os.path.abspath(new_audio_filepath) + +def transcribe_media(file_loc: str, media_type: str = "audio"): + """ + Transcribe media using Deepgram. + + If media_type is "audio" (remote URL), use Deepgram's URL transcription. + If media_type is "video" (remote URL), extract audio locally (in the upload folder), + transcribe via file, and then delete the local audio file. + + Args: + file_loc (str): URL to the remote audio or video file. + media_type (str): "audio" or "video". + + Returns: + dict: The transcription response from Deepgram. + """ + api_key = os.getenv("DEEPGRAM_API_KEY2") + print(f"Using Deepgram API Key: {api_key}") + local_audio_path="some_rand" + try: + deepgram: DeepgramClient = DeepgramClient(api_key=api_key) + options: PrerecordedOptions = PrerecordedOptions( + model="nova-3", + smart_format=True, + diarize=True, + ) + + if media_type.lower() == "audio": + # For remote audio files, use the URL transcription method. + response = deepgram.listen.rest.v("1").transcribe_url({"url": file_loc}, options) + + elif media_type.lower() == "video": + # For remote video files, first extract the audio locally. + local_audio_path = extract_audio(file_loc) + print(f"Extracted audio to: {local_audio_path}") + + # Transcribe using the local file method. + with open(local_audio_path, "rb") as file: + buffer_data = file.read() + payload: FileSource = {"buffer": buffer_data} + response = deepgram.listen.rest.v("1").transcribe_file(payload, options) + + # Clean up: delete the local audio file. + if os.path.exists(local_audio_path): + os.remove(local_audio_path) + print(f"Deleted local audio file: {local_audio_path}") + else: + raise ValueError("media_type must be either 'audio' or 'video'.") + + + return response + + except Exception as e: + print(f"Exception during transcription: {e}") + return None + finally: + # Clean up: delete the local audio file. + if os.path.exists(local_audio_path): + os.remove(local_audio_path) + print(f"Deleted local audio file: {local_audio_path}") + + + +def group_words_into_sentences(words, max_words=15): + sentences = [] + current_sentence = [] + current_speaker = None + start_time = None + + for i, word_info in enumerate(words): + word = word_info["punctuated_word"] + speaker = word_info["speaker"] + start = word_info["start"] + end = word_info["end"] + + # If speaker changes or sentence reaches max length, start a new sentence + if speaker != current_speaker: + if current_sentence: + sentences.append({ + "sentence": " ".join([w["word"] for w in current_sentence]), + "speaker": current_speaker, + "start": start_time, + "end": words[i-1]["end"], + "words": current_sentence + }) + current_sentence = [] + current_speaker = speaker + start_time = start + + # Append word with metadata inside the current sentence + current_sentence.append({"word": word, "start": start, "end": end}) + + # Append the last sentence if any words remain + if current_sentence: + sentences.append({ + "sentence": " ".join([w["word"] for w in current_sentence]), + "speaker": current_speaker, + "start": start_time, + "end": words[-1]["end"], + "words": current_sentence + }) + + return {"sentences": sentences} + +if __name__ == "__main__": + + + audio_url = "https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/019933724441Business%20English%20Conversation%20Lesson%2045_%20Meeting%20a%20New%20Colleague.mp3" + video_url = "https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/038426704141Business%20English%20Conversation%20Lesson%2045_%20%20Meeting%20a%20New%20Colleague.mp4" + +# Folder for file uploads/downloads + + response = transcribe_media(video_url, media_type="video") + print(response) \ No newline at end of file diff --git a/src/models.py b/src/models.py new file mode 100644 index 0000000..fe530cd --- /dev/null +++ b/src/models.py @@ -0,0 +1,44 @@ +from pydantic import BaseModel +from typing import Optional, Dict, List +from enum import Enum + +class PlanTier(str, Enum): + FREEMIUM = "freemium" + PRO = "pro" + +class PlanLimits: + """ + Defines the limits for each plan tier + """ + LIMITS = { + PlanTier.FREEMIUM: { + "transcription_minutes": 200, + "summary_type": "basic", + "transcript_history_days": 7, + "integrations": ["google_meet", "zoom"] + }, + PlanTier.PRO: { + "transcription_minutes": 600, + "summary_type": "advanced", + "transcript_history_days": 30, + "integrations": ["google_meet", "zoom", "slack", "notion", "asana", "microsoft_teams"] + } + } + + @classmethod + def get_limit(cls, tier: str, limit_name: str): + """ + Get a specific limit for a plan tier + + Args: + tier: The plan tier (freemium or pro) + limit_name: The name of the limit to retrieve + + Returns: + The limit value or None if not found + """ + tier_enum = PlanTier(tier.lower()) if tier.lower() in [t.value for t in PlanTier] else PlanTier.FREEMIUM + + if tier_enum in cls.LIMITS and limit_name in cls.LIMITS[tier_enum]: + return cls.LIMITS[tier_enum][limit_name] + return None \ No newline at end of file diff --git a/src/prompt.py b/src/prompt.py new file mode 100644 index 0000000..800df7f --- /dev/null +++ b/src/prompt.py @@ -0,0 +1,206 @@ +# Advanced (Pro Plan) summary prompt +advanced_summary_prompt = """ +You are an AI meeting transcript summary formatter. You will be provided with a detailed meeting transcript that includes sentence-level summaries with timestamps (in seconds), speaker details, and word-level timestamps. Your task is to generate a concise summary of the meeting organized into four sections: + +1. **Purpose:** + - Provide a brief description of the meeting's purpose. + +2. **Chapters:** + - Provide a list of chapter titles that segment the meeting into key parts. + - For each chapter, include a timestamp range (with "start" and "end" in seconds) indicating when that chapter begins and ends. + - Additionally, include a list of word-level timestamps for each word in the chapter. **Important:** For every word in a sentence, the timestamp must be the start timestamp of the sentence to which the word belongs. + +3. **Outcomes:** + - Provide a coherent description of the meeting outcomes. + - For each outcome, include a timestamp range (with "start" and "end" in seconds) corresponding to the relevant moment, and include word-level timestamps for each word (using the sentence’s start timestamp for every word). + +4. **Action Items:** + - Provide a list of actionable items derived from the meeting discussion. + - For each action item, include either a single timestamp or a timestamp range (if available) and a list of word-level timestamps for each word (again, each word's timestamp is the start timestamp of its parent sentence). + +At the end of each section, include a field named "minutes_total" which represents the total duration in minutes for that section. Calculate this value by using the start time of the first sentence and the end time of the last sentence within the section. If the duration is not a whole number, express it as a decimal (e.g., 0.5). + +**Instructions:** + +- Return a JSON response containing only the required fields with no additional commentary. +- The JSON output must be properly formatted and valid. +- Do not include any markdown or code block formatting markers (such as ```json) in your output. +- Ensure that for each sentence you generate, every word in that sentence is assigned the same timestamp—the start timestamp of that sentence. +**Example Output JSON:** + +{ + "Purpose": { + "text": "Discuss project progress and define upcoming milestones." + }, + "Chapters": { + "minutes_total": 3, + "content": [ + { + "chapter": "Project Overview", + "time_stamp": {"start": 5.12, "end": 5.68}, + "content": [ + {"text":"- overview of the project's objectives.","original_transcript_start":3.4,"original_transcript_end":5.7}, + {"text":"- It outlines the key milestones achieved so far.", "original_transcript_start":6.7, "original_transcript_end":10.5}, + {"text":"- main challenges faced during the project.", "original_transcript_start":10.8, "original_transcript_end":11.2} + ], + "words_time_stamp": [ + {"word": "Project", "timestamp": 5.12}, + {"word": "Overview", "timestamp": 5.12} + ] + }, + { + "chapter": "Budget Review", + "time_stamp": {"start": 10.50, "end": 11.20}, + "content": [ + {"text":"- review of the current budget allocations.","original_transcript_start":10.5,"original_transcript_end":11.0}, + {"text":"- discussion on potential cost-saving measures.", "original_transcript_start":11.1, "original_transcript_end":12.0}, + {"text":"- approval of the budget for the next quarter.", "original_transcript_start":12.1, "original_transcript_end":13.0} + ], + "words_time_stamp": [ + {"word": "Budget", "timestamp": 10.50}, + {"word": "Review", "timestamp": 10.50} + ] + } + ] + "Outcomes": { + "minutes_total": 3, + "content": [ + { + "text": "Key performance metrics were defined and improvement areas identified.", + "time_stamp": {"start": 15.30, "end": 16.00}, + "words_time_stamp": [ + {"word": "Key", "timestamp": 15.30}, + {"word": "performance", "timestamp": 15.30}, + {"word": "metrics", "timestamp": 15.30}, + {"word": "were", "timestamp": 15.30}, + {"word": "defined", "timestamp": 15.30}, + {"word": "and", "timestamp": 15.30}, + {"word": "improvement", "timestamp": 15.30}, + {"word": "areas", "timestamp": 15.30}, + {"word": "identified", "timestamp": 15.30} + ] + } + ] + }, + "Action_Items_Per_User": [ + { + "speaker": "Speaker_A" + "minutes_total": 3, + "action_items": [ + { + "text": "Prepare a detailed budget report for the next meeting.", + "time_stamp": {"start": 30.45, "end": 30.45}, + "words_time_stamp": [ + {"word": "Prepare", "timestamp": 30.45}, + {"word": "a", "timestamp": 30.45}, + {"word": "detailed", "timestamp": 30.45}, + {"word": "budget", "timestamp": 30.45}, + {"word": "report", "timestamp": 30.45}, + {"word": "for", "timestamp": 30.45}, + {"word": "the", "timestamp": 30.45}, + {"word": "next", "timestamp": 30.45}, + {"word": "meeting", "timestamp": 30.45} + ] + } + ] + }, + { + "speaker": "unassigned", + "minutes_total": 2, + "action_items": [ + { + "text": "Follow up with the marketing team for the latest campaign updates.", + "time_stamp": {"start": 45.67, "end": 45.67}, + "words_time_stamp": [ + {"word": "Follow", "timestamp": 45.67}, + {"word": "up", "timestamp": 45.67}, + {"word": "with", "timestamp": 45.67}, + {"word": "the", "timestamp": 45.67}, + {"word": "marketing", "timestamp": 45.67}, + {"word": "team", "timestamp": 45.67}, + {"word": "for", "timestamp": 45.67}, + {"word": "the", "timestamp": 45.67}, + {"word": "latest", "timestamp": 45.67}, + {"word": "campaign", "timestamp": 45.67}, + {"word": "updates", "timestamp": 45.67} + ] + } + ] + } +] +NOTE: Action points to the person who is to take the action and if not specified use "unassigned" +NOTE: The content under each chapter provides a detailed bulleted explanation of the chapter. It includes "original_transcript_start" and "original_transcript_end," which indicate the timestamps for each bulleted point, referencing where to find it in the original transcript. +Remember, every word in each sentence must have a single timestamp equal to the start timestamp of that sentence. Your output must strictly adhere to the provided structure, and the "minutes_total" for each section must be correctly calculated based on the start time of the first sentence and the end time of the last sentence, expressed as a decimal if necessary. +NOTE : start and end time are in seconds , so take that into considerations when calculating the total time in mins +NOTE: When creating action items per user, if the assigned user is among the speakers, use their associated speaker key that was presented in the sentence (do not infer names from context). If you can't determine the action item is for one of the speakers, make it "unassigned." +""" + +# Basic (Freemium Plan) summary prompt +basic_summary_prompt = """ +You are an AI meeting transcript summary formatter. You will be provided with a detailed meeting transcript that includes sentence-level summaries with timestamps (in seconds), speaker details, and word-level timestamps. Your task is to generate a very concise, bullet-point summary of the meeting with minimal detail. + +Create a simple JSON response with just two sections: + +1. **Key Points:** + - Provide 3-5 short bullet points covering the main topics discussed. + - Each bullet point should be no more than 15 words. + - Include a timestamp for each bullet point. + +2. **Summary:** + - Provide a very brief overall summary of the meeting in 2-3 sentences. + - Include the total duration of the meeting in minutes. + +**Instructions:** +- Keep the output extremely concise and simple. +- Return a JSON response containing only the required fields with no additional commentary. +- The JSON output must be properly formatted and valid. +- Do not include any markdown or code block formatting markers in your output. + +**Example Output JSON:** + +{ + "Key_Points": [ + { + "text": "Team discussed Q3 marketing strategy.", + "timestamp": 120.5 + }, + { + "text": "Budget approval needed by Friday.", + "timestamp": 360.2 + }, + { + "text": "New product launch delayed until September.", + "timestamp": 480.7 + } + ], + "Summary": { + "text": "Marketing team meeting to review Q3 plans and budget requirements. Team agreed on strategy but product launch delayed.", + "duration_minutes": 15.5 + } +} + +Remember to keep your output extremely simple and concise, focusing only on the most important information from the meeting. +""" + +# Keeping the original as general_summary_prompt for backward compatibility +general_summary_prompt = advanced_summary_prompt + +custom_template_prompt = """ You are an AI meeting transcript summary formatter. You will be provided with a sentence-level and word-level summary of a meeting, which includes timestamps for each sentence (in seconds), speaker details, and word-level timestamps. Your task is to generate a structured summary of the meeting based on a user-defined template. + +How It Works: The user will provide custom section headers along with descriptions of what each section should contain. You must generate a JSON response that exactly follows the user-defined structure. For each section that includes timestamps, ensure that the timestamps are accurately inferred from the provided sentence and word-level timestamps. For every sentence you generate, assign each word the same timestamp—the start timestamp of the sentence that the word belongs to. Word-level timestamps you generate should reflect the sentence’s start time for every word. At the end of each section, correctly calculate the total duration in minutes ("minutes_total") based on the start time of the first sentence and the end time of the last sentence. If the total duration is not a whole number, represent it as a decimal (e.g., 0.5 mins). + +Instructions: + +Return a JSON response containing only the required fields with no additional commentary. +For each section that includes a timestamp, include the timestamp exactly as provided (in seconds). +Include a list of word-level timestamps for each word in the relevant sections. +Ensure the JSON is properly formatted and valid. +Do not include any markdown or code block markers (such as ```json) in your output. +Input Example: { "Key_Points": "Summarize the most critical discussion points from the meeting.", "Summary": "Provide a brief overall summary of what was discussed.", "Next_Steps": "List the next steps decided during the meeting, including any action items." } + +Example Output JSON: + +{ "Key_Points": { "minutes_total": 3.5, "content": [ { "text": "Introductions between Diane Taylor and Cody Smith.", "time_stamp": {"start": 5.12, "end": 5.68}, "words_time_stamp": [ {"word": "Introductions", "timestamp": 5.12}, {"word": "between", "timestamp": 5.12}, {"word": "Diane", "timestamp": 5.12}, {"word": "Taylor", "timestamp": 5.12}, {"word": "and", "timestamp": 5.12}, {"word": "Cody", "timestamp": 5.12}, {"word": "Smith.", "timestamp": 5.12} ] } ] }, "Summary": { "minutes_total": 3.5, "content": [ { "text": "The meeting started with introductions, followed by a discussion of key topics.", "time_stamp": {"start": 5.12, "end": 10.12}, "words_time_stamp": [ {"word": "The", "timestamp": 5.12}, {"word": "meeting", "timestamp": 5.12}, {"word": "started", "timestamp": 5.12}, {"word": "with", "timestamp": 5.12}, {"word": "introductions,", "timestamp": 5.12}, {"word": "followed", "timestamp": 5.12}, {"word": "by", "timestamp": 5.12}, {"word": "a", "timestamp": 5.12}, {"word": "discussion", "timestamp": 5.12}, {"word": "of", "timestamp": 5.12}, {"word": "key", "timestamp": 5.12}, {"word": "topics.", "timestamp": 5.12} ] } ] }, "Next_Steps": { "minutes_total": 2.0, "content": [ { "text": "Diane will follow up with Cody regarding office management tasks.", "time_stamp": {"start": 30.45, "end": 30.45}, "words_time_stamp": [ {"word": "Diane", "timestamp": 30.45}, {"word": "will", "timestamp": 30.45}, {"word": "follow", "timestamp": 30.45}, {"word": "up", "timestamp": 30.45}, {"word": "with", "timestamp": 30.45}, {"word": "Cody", "timestamp": 30.45}, {"word": "regarding", "timestamp": 30.45}, {"word": "office", "timestamp": 30.45}, {"word": "management", "timestamp": 30.45}, {"word": "tasks.", "timestamp": 30.45} ] } ] } } + +Remember, for every sentence generated in any section, every word must be assigned the sentence’s start timestamp as its "timestamp" value. Additionally, calculate the "minutes_total" for each section by using the start time of the first sentence and the end time of the last sentence; if the result is not a whole number, express it as a decimal (e.g., 0.5 mins). Your output must strictly adhere to the provided structure. +NOTE : start and end time are in seconds , so take that into considerations when calculating the total time in mins""" \ No newline at end of file diff --git a/src/utils.py b/src/utils.py new file mode 100644 index 0000000..caa563d --- /dev/null +++ b/src/utils.py @@ -0,0 +1,6 @@ +import os +def delete_file(file_path): + """Delete a file from the system.""" + if os.path.exists(file_path): + os.remove(file_path) + print(f"Deleted: {file_path}") \ No newline at end of file diff --git a/test1.py b/test1.py new file mode 100644 index 0000000..00f9270 --- /dev/null +++ b/test1.py @@ -0,0 +1,102 @@ +import os +import requests +import json +from dotenv import load_dotenv +load_dotenv() + +# API endpoint +base_url = "http://localhost:5056" + +# Your API key +api_key = os.getenv("API_KEY_ACCESS") + +# Headers +headers = { + "Authorization": f"Bearer {api_key}", + "Content-Type": "application/json" +} + +# Audio URL from your notebook +audio_url = "https://s3.us-east-2.amazonaws.com/com.mkdlabs.images/baas/jordan/019933724441Business%20English%20Conversation%20Lesson%2045_%20Meeting%20a%20New%20Colleague.mp3" + +# 1. First, transcribe the audio +transcribe_payload = { + "media_url": audio_url, + "media_type": "audio" +} + +transcribe_response = requests.post( + f"{base_url}/microdot-ai/transcribe", + headers=headers, + json=transcribe_payload +) + +# Check if transcription was successful +if transcribe_response.status_code == 200: + transcript_data = transcribe_response.json() + print("Transcription successful!") + + # Save the transcript for later use + transcript_json = json.dumps(transcript_data["transcript"], indent=4) + # Save the transcript to a file + with open("transcript.json", "w") as f: + f.write(transcript_json) + print("Transcript saved to transcript.json") + +else: + print(f"Transcription failed with status code: {transcribe_response.status_code}") + print(transcribe_response.text) + + + +# 2. Test the basic (Freemium) summarization +basic_summary_payload = { + "transcript": transcript_json, + "plan_tier": "freemium" # Specify the freemium plan +} + +basic_summary_response = requests.post( + f"{base_url}/microdot-ai/general-summary", + headers=headers, + json=basic_summary_payload +) + +# Check if summarization was successful +if basic_summary_response.status_code == 200: + basic_summary_data = basic_summary_response.json() + print("\n--- Basic (Freemium) Summary ---") + basic_summary_json = json.dumps(basic_summary_data, indent=2) + + with open("basic_summary.json", "w") as f: + f.write(basic_summary_json) + print("Basic summary saved to basic_summary.json") + +else: + print(f"Basic summarization failed with status code: {basic_summary_response.status_code}") + print(basic_summary_response.text) + + +# 3. Test the advanced (Pro) summarization +advanced_summary_payload = { + "transcript": transcript_json, + "plan_tier": "pro" # Specify the pro plan +} + +advanced_summary_response = requests.post( + f"{base_url}/microdot-ai/general-summary", + headers=headers, + json=advanced_summary_payload +) + +# Check if summarization was successful +if advanced_summary_response.status_code == 200: + advanced_summary_data = advanced_summary_response.json() + print("\n--- Advanced (Pro) Summary ---") + advanced_summary_json = json.dumps(advanced_summary_data, indent=2) + + with open("advanced_summary.json", "w") as f: + f.write(advanced_summary_json) + print("Advanced summary saved to advanced_summary.json") +else: + print(f"Advanced summarization failed with status code: {advanced_summary_response.status_code}") + print(advanced_summary_response.text) \ No newline at end of file