{"id":26717932,"url":"https://github.com/oleksiym/calls-api","last_synced_at":"2026-05-04T12:34:10.716Z","repository":{"id":274330523,"uuid":"865538218","full_name":"OleksiyM/calls-api","owner":"OleksiyM","description":"AI-powered API for processing and analyzing phone call audio. Features include transcription (OpenAI Whisper), NLP (SpaCy, TextBlob), emotion detection, and categorization. Built with FastAPI, PostgreSQL, and Docker for scalable offline operation.","archived":false,"fork":false,"pushed_at":"2025-02-01T12:31:37.000Z","size":127,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-15T04:05:26.183Z","etag":null,"topics":["audio-processing","docker-compose","emotion-detection","fastapi","nlp","rest-api","sentiment-analysis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OleksiyM.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}},"created_at":"2024-09-30T17:37:20.000Z","updated_at":"2025-02-01T12:31:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"daba05b1-4a5f-4546-929e-3fc3c4c630de","html_url":"https://github.com/OleksiyM/calls-api","commit_stats":null,"previous_names":["oleksiym/calls-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OleksiyM/calls-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OleksiyM%2Fcalls-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OleksiyM%2Fcalls-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OleksiyM%2Fcalls-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OleksiyM%2Fcalls-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OleksiyM","download_url":"https://codeload.github.com/OleksiyM/calls-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OleksiyM%2Fcalls-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32607649,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: 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":["audio-processing","docker-compose","emotion-detection","fastapi","nlp","rest-api","sentiment-analysis"],"created_at":"2025-03-27T16:31:23.809Z","updated_at":"2026-05-04T12:34:10.699Z","avatar_url":"https://github.com/OleksiyM.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"- [Calls API](#calls-api)\n    - [Project Description](#project-description)\n    - [Features](#features)\n    - [Technologies Used](#technologies-used)\n        - [Backend Framework](#backend-framework)\n        - [Database](#database)\n        - [Audio Processing](#audio-processing)\n        - [Natural Language Processing (NLP)](#natural-language-processing-nlp)\n        - [Containerization](#containerization)\n        - [Asynchronous Programming](#asynchronous-programming)\n        - [Dependency Management](#dependency-management)\n    - [Installation and Usage](#installation-and-usage)\n        - [Running the App via Docker Compose](#running-the-app-via-docker-compose)\n            - [Prerequisites](#prerequisites)\n        - [Running the App Manually for the First Time](#running-the-app-manually-for-the-first-time)\n            - [See detailes in the readme.md](#see-detailes-in-the-readmemd)\n        - [Running the App Manually Next Time](#running-the-app-manually-next-time)\n    - [Plans for Future Enhancements](#plans-for-future-enhancements)\n    - [Contributing](#contributing)\n    - [Links to the docs](#links-to-the-docs)\n    - [License](#license)\n\n# Calls API\n\n## Project Description\n\nThis project was developed as part of the [DevChallenge IT XXI](https://www.devchallenge.it/) Backend category.\nIt processes and analyzes telephone conversations to extract structured datasets for analysis. The system extracts\ndetails such as names, locations, emotional tones, and categorizes conversations based on content. It operates without\ninternet dependency and supports local file processing. Detailed task you can see in the [task.md](task.md)\n\n## Features\n\n- Submit audio files via a URL for processing.\n- Extract key information, including names and locations mentioned in conversations.\n- Determine the emotional tone of conversations.\n- Categorize conversations into relevant groups.\n- Support for multiple audio formats (e.g., WAV, MP3).\n- RESTful API accessible through a user-friendly documentation interface.\n- Local file handling and offline processing capabilities.\n\n## Technologies Used\n\n### Backend Framework\n\n- **FastAPI**: A modern, fast (high-performance) web framework for building APIs with Python 3.6+ based on standard\n  Python type hints.\n\n### Database\n\n- **PostgreSQL**: A powerful, open-source object-relational database system.\n- **SQLAlchemy**: SQL toolkit and ORM for database interaction.\n- **Alembic**: A lightweight database migration tool for SQLAlchemy.\n\n### Audio Processing\n\n- **Whisper**: OpenAI’s automatic speech recognition model, used for transcribing audio to text.\n- **ffmpeg**: A multimedia framework for handling audio and video processing.\n\n### Natural Language Processing (NLP)\n\n- **SpaCy**: Used for extracting names and locations from transcriptions.\n- **TextBlob**: Provides tools for text analysis, such as sentiment analysis.\n\n### Containerization\n\n- **Docker**: To containerize the application for consistent deployment across environments.\n- **Docker Compose**: For defining and running multi-container Docker applications.\n\n### Asynchronous Programming\n\n- **aiohttp**: Used for asynchronous HTTP requests.\n\n### Dependency Management\n\n- **Poetry**: Python packaging and dependency management tool.\n\n## Installation and Usage\n\n### Running the App via Docker Compose\n\n#### Prerequisites\n\n- Docker Desktop installed on your machine.\n\nRun the following commands in the app directory:\n\n```bash\ndocker-compose up -d --build\n```\n\nAfter the first run, the database and additional resources (e.g., `whisper/base.pt`) will be set up. This may take some\ntime. To restart the server:\n\n```bash\ndocker-compose down\n```\n\n```bash\ndocker-compose up -d\n```\n\nAccess the API via the documentation interface at:\n\n```\nhttp://localhost:8080/docs#/\n```\n\n### Running the App Manually for the First Time\n\n#### See detailes in the [readme.md](online_submission/475bdbb744b8_devchallange_21/readme.md)\n\nAccess the API at:\n\n```\nhttp://localhost:8080/docs#/\n```\n\n### Running the App Manually Next Time\n\nFrom the app directory:\n\n```bash\npoetry shell\nuvicorn main:app --port 8080 --reload\n```\n\n## Plans for Future Enhancements\n\n- [ ] Add more detailed error handling and logging.\n- [ ] Add support for more audio file formats.\n- [ ] Improve the accuracy of name and location extraction.\n- [ ] Enhance the emotional tone detection algorithm.\n- [ ] Add more categories and improve category detection.\n- [ ] Implement a web-based user interface for easier interaction with the API.\n\n## Contributing\n\n1. Fork the repository.\n2. Create a new feature branch:\n   ```bash\n   git checkout -b feature-name\n   ```\n3. Commit your changes:\n   ```bash\n   git commit -m 'Add some feature'\n   ```\n4. Push to the branch:\n   ```bash\n   git push origin feature-name\n   ```\n5. Open a pull request.\n\n## Links to the docs\n\n- [Task Description](task.md)\n- [Submission Readme](online_submission/475bdbb744b8_devchallange_21/readme.md)\n\n## License\n\nThis project is licensed under the MIT License. See the `LICENSE` file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foleksiym%2Fcalls-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foleksiym%2Fcalls-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foleksiym%2Fcalls-api/lists"}