{"id":28466851,"url":"https://github.com/mlrun/demo-call-center","last_synced_at":"2026-03-08T12:04:22.656Z","repository":{"id":188267023,"uuid":"667822164","full_name":"mlrun/demo-call-center","owner":"mlrun","description":"Demo the use of GenAI to transcribe and analyze audio calls","archived":false,"fork":false,"pushed_at":"2026-02-18T09:17:53.000Z","size":37363,"stargazers_count":34,"open_issues_count":1,"forks_count":34,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-18T14:27:13.226Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlrun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-18T11:30:52.000Z","updated_at":"2026-02-13T05:55:13.000Z","dependencies_parsed_at":"2024-03-07T17:25:11.591Z","dependency_job_id":"98d4554e-3cb1-4c08-a49d-3f5ceff4295f","html_url":"https://github.com/mlrun/demo-call-center","commit_stats":null,"previous_names":["mlrun/demo-call-center"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/mlrun/demo-call-center","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlrun%2Fdemo-call-center","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlrun%2Fdemo-call-center/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlrun%2Fdemo-call-center/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlrun%2Fdemo-call-center/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlrun","download_url":"https://codeload.github.com/mlrun/demo-call-center/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlrun%2Fdemo-call-center/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30130032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T12:40:50.676Z","status":"ssl_error","status_checked_at":"2026-03-05T12:39:32.209Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-07T07:06:09.233Z","updated_at":"2026-03-05T14:05:56.219Z","avatar_url":"https://github.com/mlrun.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Call center demo\n\nThis demo showcases how to use LLMs to turn audio files from call center conversations between customers and agents into valuable data, all in a single workflow orchestrated by MLRun. It illustrates the potential power of LLMs for feature extraction, and the simplicity of working with MLRun.\n\n## Overview\n\nMLRun automates the entire workflow, auto-scales resources as needed, and automatically logs and parses values between the different workflow steps.\n\nThe demo demonstrates two usages of GenAI:\n- Unstructured data generation: Generating audio data with ground truth metadata to evaluate the analysis.\n- Unstructured data analysis: Turning audio calls into text and tabular features.\n\nThe demo contains two notebooks [notebook 1](./notebook_1_generation.ipynb) and [notebook 2](./notebook_2_analysis.ipynb).\n\nMost of the functions are imported from [MLRun's hub](https://www.mlrun.org/hub/), which contains a wide range of functions and modules that can be used for a variety of use cases. See also the [MLRun hub documentation](https://docs.mlrun.org/en/stable/runtimes/load-from-hub.html). All functions used in the demo include links to their source in the hub. All of the python source code is under [/src](./src).\n\n\u003e **⚠️ Important This demo can take up to couple of hours to complete when running without GPUs.**\n\n## Prerequisites\n\nThis demo uses:\n\n* [**OpenAI's Whisper**](https://openai.com/research/whisper) \u0026mdash; To transcribe the audio calls into text.\n* [**Flair**](https://flairnlp.github.io/) and [**Microsoft's Presidio**](https://microsoft.github.io/presidio/) \u0026mdash; To recognize PII so it can be filtered out.\n* [**HuggingFace**](https://huggingface.co/) \u0026mdash; The main machine-learning framework to get the model and tokenizer for the features extraction. \n* [**Vizro**](https://vizro.mckinsey.com/) \u0026mdash; To view the call center DB and transcriptions, and to play the generated conversations. \n* [**MLRun**](https://www.mlrun.org/) \u0026mdash; the orchestrator to operationalize the workflow. MLRun 1.9 and higher, Python 3.11, with CPU or GPU.\n* [**SQLAlchemy**](https://www.sqlalchemy.org/) \u0026mdash; Manage the MySQL DB of calls, clients and agents. Installed together with MLRun.\n- SQLite\n\n## Installation\n\nThis project can run in different development environments:\n* Local computer (using PyCharm, VSCode, Jupyter, etc.)\n* Inside GitHub Codespaces \n* Other managed Jupyter environments\n\n### Install the code and the MLRun client \n\nTo get started, fork this repo into your GitHub account and clone it into your development environment.\n\nTo install the package dependencies (not required in GitHub codespaces) use:\n \n    make install-requirements\n    \nIf you prefer to use Conda, use this instead (to create and configure a conda env):\n\n    make conda-env\n\nMake sure you open the notebooks and select the `mlrun` conda environment \n \n### Install or connect to the MLRun service/cluster\n\nThe MLRun service and computation can run locally (minimal setup) or over a remote Kubernetes environment.\n\n\nIf your development environment supports Docker and there are sufficient CPU resources (support for Docker setup will be deprecated), run:\n\n    make mlrun-docker\n    \nThe MLRun UI can be viewed in: http://localhost:8060\n    \nIf your environment is minimal, run mlrun as a process (no UI):\n\n    [conda activate mlrun \u0026\u0026] make mlrun-api\n \nFor MLRun to run properly, set up your client environment. This is not required when using **codespaces**, the mlrun **conda** environment, or **iguazio** managed notebooks.\n\nYour environment should include `MLRUN_ENV_FILE=\u003cabsolute path to the ./mlrun.env file\u003e ` (point to the mlrun .env file \nin this repo); see [mlrun client setup](https://docs.mlrun.org/en/stable/install/remote.html) instructions for details.  \n     \n\u003e Note: You can also use a remote MLRun service (over Kubernetes): instead of starting a local mlrun: \nedit the [mlrun.env](./mlrun.env) and specify its address and credentials.\n\n\n#### Setup\n\n- Set `run_with_gpu = False`, `use_sqlite = True`, `engine = \"remote\"`.\n- `.env` must include `OPENAI_API_KEY`, `OPENAI_API_BASE`\n\n### Configure the tokens and URL\n\n\u003e **⚠️ Important** Fill in the following variables in your `.env` file.\n\n\u003e Note: The requirement for the OpenAI token will be removed soon in favor of an open-source LLM.\n\nTokens are required to run the demo end-to-end:\n* [OpenAI ChatGPT](https://chat.openai.com/) \u0026mdash; To generate conversations, two tokens are required:\n  * `OPENAI_API_KEY`\n  * `OPENAI_API_BASE`\n\n## Demo flow\n\n1. Create the project\n- **Notebook**: [notebook_1_generation.ipynb](notebook_1_generation.ipynb)\n- **Description**: \n- **Key steps**: Create the MLRun project. \n- **Key files**:\n  - [project_setup.py](./project_setup.py)\n\n2. Generate the call data\n\n- **Notebook**: [notebook_1_generation.ipynb](notebook_1_generation.ipynb)\n- **Description**: Generate the call data. (You can choose to skip this step ans use call data that is already generated and available in the demo.)\n- **Key steps**: To generate data, run: Agents \u0026 clients data generator, Insert agents \u0026 clients data to DB, Get agents \u0026 clients from DB, Conversation generation, Text to Audio, and Batch Creation. and Batch creation. Then run the workflow.\n\n- **Key files**:\n  - [Insert agents \u0026 clients data to the DB and Get agents \u0026 clients from the DB](.src/calls_analysis/data_management.py)\n  - [Conversation generation and Batch creation](./src/calls_generation/conversations_generator.py)\n\n- **MLRun hub functions:**\n  - [Agents \u0026 Clients Data Generator](https://www.mlrun.org/hub/functions/master/structured_data_generator/)\n  - [Text to audio](https://www.mlrun.org/hub/functions/master/text_to_audio_generator/)\n\n3. Calls analysis\n\n- **Notebook**: [notebook_2_analysis.ipynb](notebook_2_analysis.ipynb)\n- **Description**: Insert the call data to the DB, use diarization to analyze when each person is speaking, transcribe and translate the calls into text and save them as text files, recognice and remove any PII\n, anaylze text (call center conversation) with an LLM, postprocess the LLM's answers before updating them into the DB. Then run the all analysis workflow.\n- **Key steps**: Insert the calls data to the DB, perform speech diarization, transcribe, recognize PII, analysis. Then run the workflow.\n\n- **Key files:**\n  - [Insert the calls data to the DB](.src/calls_analysis/db_management.py)\n  - [Postprocess analysis answers](.src/postprocess.py)\n\n- **MLRun hub functions:**\n  - [Perform speech diarization](https://www.mlrun.org/hub/functions/master/silero_vad)\n  - [Transcribe](https://www.mlrun.org/hub/functions/master/transcribe)\n  - [Recognize PII](https://www.mlrun.org/hub/functions/master/pii_recognizer)\n  - [Analysis](https://www.mlrun.org/hub/functions/master/question_answering)\n\n4. View the data\n\n- **Notebook**: [notebook_2_analysis.ipynb](notebook_2_analysis.ipynb)\n- **Description**: View the data and features, as they are collected, in the MLRun UI. Deploy [Vizro](https://vizro.mckinsey.com/) to visualize the data in the DB.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlrun%2Fdemo-call-center","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlrun%2Fdemo-call-center","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlrun%2Fdemo-call-center/lists"}