How long does it take to type this?
JavaScript (Node.js), 180 bytes

s=&gt;(B=Buffer)(s).map(p=c=&gt;(b='23841410645532207643205431765001333746443'[c*45%91%73%41]*2,t+=1/p?p-b?3/8*(g(b)+g(p)):g(b|c!=s):0,p=b,s=c),t=0,g=x=&gt;10/B('4.2.5-75E6?3&gt;4=4AA')[x])&amp;&amp;t

Try it online!
How?
Storing delays
The helper function \$g\$ takes an integer \$0\le x \le17\$ and returns a delay in seconds.
g = x =&gt; 10 / Buffer('4.2.5-75E6?3&gt;4=4AA')[x]

The input \$x\$ is expected to be either:

twice the bin number to get the delay for the same letter
twice the bin number + 1 to get the delay for different letters

What is actually stored in the string '4.2.5-75E6?3&gt;4=4AA' is the number of keystrokes per second multiplied by \$10\$ and converted to ASCII. Conveniently, all resulting characters are printable.
For instance, \$5.2\$ is stored as chr(52) which is '4'.
Converting a character to a key bin
We use the following hash function to convert an ASCII code \$c\$ to an index into a lookup table containing the bin numbers in \$[0..8]\$:
$$i = (((c\times 45) \bmod 91)\bmod 73)\bmod 41$$
Main loop
The total time \$t\$ is updated with:
t +=                        // add to t:
  1 / p ?                   //   if p is numeric:
    p - b ?                 //     if p is not equal to b:
      3 / 8 * (g(b) + g(p)) //       0.75 * (g(b) + g(p)) / 2
    :                       //     else:
      g(b | c != s)         //       g(b) if c == s or g(b + 1) otherwise
  :                         //   else (first iteration):
    0                       //     leave t unchanged

where \$p\$ is the previous bin and \$s\$ is the previous character.