public SpeechSynthesizer(
      Capacity capacity,
      MaxFilibusters maxFilibusters,
      MinimumMemory minimumMemory,
      FilibusterHome filibusterHome,
      LogHome logHome,
      Timeout timeout,
      TimeToLive ttl,
      IdleTime idleTime,
      FakeSynthesize fake) {
    this.filibusters = maxFilibusters;

    FilibusterPool pool =
        new FilibusterPool.Builder()
            .speechSynthesizer(this)
            .maxPoolSize(maxFilibusters)
            .minimumMemory(minimumMemory)
            .filibusterHome(filibusterHome)
            .logHome(logHome)
            .timeout(timeout)
            .ttl(ttl)
            .fake(fake)
            .build();

    dispatcher = new Dispatcher(pool, this, idleTime);
    inQue = new LinkedBlockingQueue<>(capacity.getCapacity());
    out = new ConcurrentHashMap<>();
  }