{"id":18377265,"url":"https://github.com/bbc/dialogger","last_synced_at":"2025-04-06T21:31:29.303Z","repository":{"id":136960128,"uuid":"97500233","full_name":"bbc/dialogger","owner":"bbc","description":"Text-based media editing interface","archived":false,"fork":false,"pushed_at":"2017-08-09T11:56:24.000Z","size":1973,"stargazers_count":16,"open_issues_count":1,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-22T06:51:21.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/bbc.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}},"created_at":"2017-07-17T16:49:24.000Z","updated_at":"2024-08-21T00:43:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"73d4c3b8-de28-4418-9e7f-91e5f1ea0524","html_url":"https://github.com/bbc/dialogger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbc%2Fdialogger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbc%2Fdialogger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbc%2Fdialogger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbc%2Fdialogger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbc","download_url":"https://codeload.github.com/bbc/dialogger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247555096,"owners_count":20957703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-11-06T00:27:31.836Z","updated_at":"2025-04-06T21:31:29.295Z","avatar_url":"https://github.com/bbc.png","language":"JavaScript","readme":"# Dialogger \n\nDialogger is an audio/video editor that allows you to navigate and edit recordings using a text-based interface.\n\n### What's included\n* Playback and navigation using transcript\n* Transcript editing\n* Export of edit decision list (EDL)\n* User accounts\n* Asset management\n\n### What's *not* included\nThe following features must be added manually for Dialogger to operate fully. Instructions and examples are provided.\n\n* Speech-to-text\n* Preview file generator\n* File export\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"flow-diagram.png\"\u003e\u003cbr /\u003e\n  \u003ci\u003eConceptual flow diagram (excluded features shown in red)\u003c/i\u003e\n\u003c/p\u003e\n\n## Technology stack\n\n#### Front-end\n\n* HTML/CSS/JS\n* Text editing: [CKEditor](http://ckeditor.com/) (LGPL)\n* Media playback: [HTML5 Video Compositor](https://github.com/bbc/html5-video-compositor) (Apache-2.0)\n* UI framework: [Semantic UI](https://semantic-ui.com/) (MIT)\n* MVC framework: [Backbone](http://backbonejs.org/) (MIT)\n* File upload: [Dropzone](http://www.dropzonejs.com/) (MIT)\n\n#### Back-end\n\n* Node.js / Express\n* Database: [MongoDB](https://www.mongodb.com/) (Apache-2.0)\n* Authentication: [Passport.js](http://passportjs.org/) (MIT)\n* Media info: [Mimovie](https://github.com/rodrigopolo/mimovie) (MIT)\n* Logging: [Bunyan](https://github.com/trentm/node-bunyan) (MIT)\n\n## Installation\n\n### Using Docker (recommended)\n\n    git clone https://github.com/bbc/dialogger.git \u0026\u0026 cd dialogger\n    docker-compose build\n    docker-compose up\n\nNavigate to `http://localhost:8080` and log in with username `user` and password `password`.\n\n### Ubuntu/Debian\n\n    git clone https://github.com/bbc/dialogger.git \u0026\u0026 cd dialogger\n    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -\n    sudo -E apt-get install -y nodejs mediainfo mongodb\n    sudo -E npm install -g gulp bower bunyan\n    npm install\n    npm run build\n    (cd data \u0026\u0026 ./import.sh)\n\nIn `config/consts.js`, set the following parameters:\n\n* `consts.port`\n* `consts.db.url`\n* `consts.cookie.serverDomain`\n* `consts.cookie.serverPath`\n* `consts.files.root` (ensure write permissions are set)\n\nRun Dialogger using `npm start`, then log in with username `user` and password `password`.\n\n## Configuration\n\nDialogger does not include the following key functionality, so you must add this in manually. Instructions on how to\nadd this are provided below.\n\n1. Speech-to-text\n1. Preview file generator\n1. File export\n\n### 1. Speech-to-text \n\nDialogger does not come with a speech-to-text system, so you will need to add some code to `helpers/stt.js` that\naccepts a path to an audio/video file and returns the transcript and segmentation data.\nExamples of the data formats are shown below, and an example can be found in `helpers/stt-example.js`.\n\n#### Transcript format\n\n```javascript\n{\n  words: [\n    {\n      word: \"hello\",\n      punct: \"Hello\",\n      start: 0.05,\n      end: 0.78,\n      confidence: 0.45\n    },\n    {\n      word: \"world\",\n      punct: \"world.\",\n      start: 1.13,\n      end: 1.45,\n      confidence: 0.9\n    }\n  ]\n}\n```\n\n#### Segments format\n\n```javascript\n{\n  segments: [\n    {\n      start: 0.05,\n      duration: 2.34,\n      speaker: {\n        @id: \"Bob\",\n        gender: \"M\"\n      }\n    },\n    {\n      start: 2.34,\n      duration: 4.2,\n      speaker: {\n      @id: \"Alice\",\n        gender: \"F\"\n      }\n    }\n  ]\n}\n```\n\n### 2. Preview file generator\nPreview files are low-bitrate versions of media files which are used for playback in the browser interface. To\nconfigure preview file generation, you will need to add some code to `helpers/previewfile.js`. The function should\nreceive options in the following format, create a preview file and run the callback function. \n\n#### Options format\n\n```javascript\n{\n  inputPath: \"/path/to/input/file\",\n  outputPath: \"/path/to/preview/version\",\n  format: \"audio\",  // can be audio or video\n  audio: {\n    acodec: \"aac\",\n    ab: \"128k\"\n  }    \n}\n```\n\n### 3. File export\nFile export allows users to download an edited version of their media. To configure file export, you will need to add\nsome code to `helpers/fileexport.js`. The function should receive options in the following format and return the path\nof the edited file. In essence, what you want to do is to take the file path (*asset.path*) and the list of edits\n(*edl*), produce an edited version of the file, then return the path.\n\n#### Options format\n\n```javascript\n{\n  // Information about the original file/asset\n  asset: {\n    description: \"Asset description\",\n    filename: \"AssetFilename.wav\",\n    path: \"/path/to/original/file\",\n    audio: {\n      channels: 2,\n      sampleRate: \"48000\"\n    }\n  },\n  \n  // An array of in- and out-points, in seconds\n  edl: [\n    [\"78.38\",\"102.89\"],\n    [\"128.3\",\"135.17\"]\n  ],\n  \n  // User-provided options from the exportForm\n  //   in public/js/editor.html\n  settings: {\n    audio: {\n      ab: \"\",\n      acodec: \"pcm_s16le\"\n    },\n    edlformat: \"dira\",\n    exportUnderlined:\"true\",\n    format: \"audio\",\n    id: \"\",\n    include: \"true\",\n    name: \"test.wav\",\n    video: {\n      height: \"\",\n      vb: \"\",\n      f: \"mp4\",\n      acodec: \"aac\",\n      ab: \"\",\n      vcodec: \"libx264\",\n      width: \"\"\n    }\n  }\n}\n```\n\n## Issues/development\n\nPlease report any problems or make feature requests by **[raising an\nissue](https://github.com/bbc/dialogger/issues/new)**.  Pull requests are also welcome.\n\n## Authors\n\n* Chris Baume, BBC Research and Development\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbc%2Fdialogger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbc%2Fdialogger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbc%2Fdialogger/lists"}