abstract_audio_renderer.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { Engine } from '../common/engine.js';
  2. export class AbstractAudioRenderer {
  3. constructor() {
  4. this.separator_ = ' ';
  5. }
  6. set separator(sep) {
  7. this.separator_ = sep;
  8. }
  9. get separator() {
  10. return Engine.getInstance().modality === 'braille' ? '' : this.separator_;
  11. }
  12. error(_key) {
  13. return null;
  14. }
  15. merge(spans) {
  16. let str = '';
  17. const len = spans.length - 1;
  18. for (let i = 0, span; (span = spans[i]); i++) {
  19. str += span.speech;
  20. if (i < len) {
  21. const sep = span.attributes['separator'];
  22. str += sep !== undefined ? sep : this.separator;
  23. }
  24. }
  25. return str;
  26. }
  27. finalize(str) {
  28. return str;
  29. }
  30. pauseValue(value) {
  31. let numeric;
  32. switch (value) {
  33. case 'long':
  34. numeric = 750;
  35. break;
  36. case 'medium':
  37. numeric = 500;
  38. break;
  39. case 'short':
  40. numeric = 250;
  41. break;
  42. default:
  43. numeric = parseInt(value, 10);
  44. }
  45. return Math.floor((numeric * Engine.getInstance().getRate()) / 100);
  46. }
  47. }