Voice-to-Text

This commit is contained in:
Eduard Kuzmenko 2023-02-20 23:39:43 +04:00
parent 7ff73c2d7f
commit 5fdffa3b18
20 changed files with 296 additions and 196 deletions

View File

@ -199,22 +199,23 @@
<glyph unicode="&#xe9bd;" glyph-name="tip" d="M553.748 141.202c15.333 0 27.763-12.507 27.763-27.934 0-14.025-10.272-25.636-23.66-27.631l-4.103-0.303h-83.496c-15.333 0-27.763 12.507-27.763 27.934 0 14.025 10.272 25.636 23.66 27.631l4.103 0.303h83.496zM512 896c176.672 0 320-142.842 320-319.18 0-96.165-45.020-183.487-121.995-250.705-18.108-15.813-30.035-46.777-33.961-93.98-2.836-34.108-29.677-60.802-62.957-63.824l-6.311-0.285h-189.552c-36.144 0-66.257 27.871-69.269 64.111-3.925 47.201-15.849 78.163-33.952 93.971-76.981 67.225-122.003 154.545-122.003 250.711 0 176.338 143.328 319.18 320 319.18zM512 840.131c-146.125 0-264.475-117.949-264.475-263.311 0-78.842 37.366-151.313 102.873-208.518 30.847-26.938 47.87-71.136 52.889-131.509 0.519-6.25 5.045-11.262 10.907-12.567l3.030-0.332h189.551c7.272 0 13.331 5.608 13.937 12.899 5.020 60.373 22.046 104.574 52.898 131.516 65.5 57.197 102.864 129.669 102.864 208.51 0 145.363-118.35 263.311-264.475 263.311zM640.823 572.391c8.81-11.013 8.084-26.577-1.069-36.716l-3.362-3.165-96.061-76.788 0.043-114.389c0-15.67-12.703-28.373-28.373-28.373-14.246 0-26.039 10.498-28.066 24.181l-0.308 4.193v114.347l-96.018 76.831c-12.236 9.789-14.22 27.644-4.431 39.881 8.81 11.013 24.154 13.721 36.055 7.016l3.826-2.585 88.942-71.137 88.942 71.137c12.236 9.789 30.091 7.805 39.881-4.431z" />
<glyph unicode="&#xe9be;" glyph-name="tools" d="M682.667 469.333c21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-85.333h128c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-128v-85.333c0-23.564-19.103-42.667-42.667-42.667-21.881 0-39.915 16.471-42.38 37.691l-0.287 4.976v256c0 23.564 19.103 42.667 42.667 42.667zM512 341.333c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-341.333c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h341.333zM341.333 896c21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-256c0-23.564-19.103-42.667-42.667-42.667-21.881 0-39.915 16.471-42.38 37.691l-0.287 4.976v85.333h-128c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h128v85.333c0 23.564 19.103 42.667 42.667 42.667zM853.333 768c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-341.333c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h341.333z" />
<glyph unicode="&#xe9bf;" glyph-name="topics" d="M170.667 768c-23.564 0-42.667-19.103-42.667-42.667s19.103-42.667 42.667-42.667h42.667c23.564 0 42.667 19.103 42.667 42.667s-19.103 42.667-42.667 42.667h-42.667zM384 768c-23.564 0-42.667-19.103-42.667-42.667s19.103-42.667 42.667-42.667h469.333c23.565 0 42.667 19.103 42.667 42.667s-19.102 42.667-42.667 42.667h-469.333zM384 554.667c-23.564 0-42.667-19.102-42.667-42.667s19.103-42.667 42.667-42.667h469.333c23.565 0 42.667 19.102 42.667 42.667s-19.102 42.667-42.667 42.667h-469.333zM341.333 298.667c0 23.565 19.103 42.667 42.667 42.667h469.333c23.565 0 42.667-19.102 42.667-42.667s-19.102-42.667-42.667-42.667h-469.333c-23.564 0-42.667 19.102-42.667 42.667zM128 512c0 23.565 19.103 42.667 42.667 42.667h42.667c23.564 0 42.667-19.102 42.667-42.667s-19.103-42.667-42.667-42.667h-42.667c-23.564 0-42.667 19.102-42.667 42.667zM170.667 341.333c-23.564 0-42.667-19.102-42.667-42.667s19.103-42.667 42.667-42.667h42.667c23.564 0 42.667 19.102 42.667 42.667s-19.103 42.667-42.667 42.667h-42.667z" />
<glyph unicode="&#xe9c0;" glyph-name="unarchive" d="M392.533 981.335l244.813 0.001c44.386 0.015 75.093 0.026 103.906-8.203 25.434-7.264 49.297-19.195 70.37-35.185 23.868-18.113 42.283-42.683 68.907-78.203l10.743-14.325c13.175-17.557 23.138-30.831 30.37-45.782 6.383-13.201 11.042-27.17 13.854-41.561 3.187-16.299 3.179-32.896 3.17-54.848v-203.398c0-1.015 0-2.039 0-3.063v-97.532c0-46.238 0-83.533-2.466-113.737-2.543-31.095-7.91-58.411-20.787-83.682-20.45-40.141-53.086-72.777-93.231-93.231-25.267-12.877-52.582-18.244-83.682-20.787-30.199-2.466-67.494-2.466-113.737-2.466h-225.529c-46.239 0-83.535 0-113.736 2.466-31.098 2.543-58.412 7.91-83.683 20.787-40.141 20.454-72.777 53.090-93.23 93.231-12.876 25.271-18.244 52.587-20.785 83.682-2.467 30.204-2.467 67.499-2.467 113.741v97.519c0 1.203 0 2.398 0 3.588v199.387l-0.001 3.494c-0.009 21.953-0.015 38.549 3.171 54.848 2.813 14.391 7.47 28.36 13.853 41.561 7.231 14.951 17.194 28.224 30.372 45.781l10.744 14.326c26.621 35.52 45.035 60.089 68.905 78.202 21.073 15.99 44.935 27.921 70.371 35.185 28.813 8.229 59.517 8.218 103.905 8.203l5.879-0.001zM832.034 782.067c-2.94 4.009-6.575 8.876-11.127 14.948l-5.12 6.827c-31.522 42.028-42.59 56.144-55.748 66.128-12.642 9.594-26.961 16.753-42.223 21.111-15.881 4.536-33.813 4.921-86.349 4.921h-238.933c-52.535 0-70.47-0.385-86.351-4.921-15.261-4.358-29.579-11.517-42.222-21.111-13.157-9.984-24.226-24.1-55.747-66.128l-5.12-6.827c-4.553-6.071-8.186-10.939-11.127-14.947 3.229 1.865 6.513 3.649 9.849 5.349 25.271 12.876 52.586 18.244 83.683 20.785 30.203 2.468 67.5 2.467 113.742 2.467h225.519c46.242 0 83.537 0.001 113.741-2.467 31.1-2.541 58.415-7.909 83.682-20.785 3.337-1.699 6.622-3.484 9.852-5.349zM170.667 494.933v-93.867c0-48.495 0.033-82.3 2.183-108.617 2.11-25.822 6.042-40.657 11.768-51.891 12.272-24.085 31.853-43.669 55.938-55.94 11.237-5.726 26.071-9.66 51.892-11.767 26.319-2.15 60.124-2.185 108.619-2.185h221.867c48.495 0 82.3 0.034 108.621 2.185 25.818 2.108 40.653 6.042 51.891 11.767 24.085 12.271 43.665 31.855 55.936 55.94 5.726 11.234 9.66 26.069 11.767 51.891 2.15 26.317 2.185 60.122 2.185 108.617v93.867c0 48.495-0.034 82.3-2.185 108.62-2.108 25.821-6.042 40.655-11.767 51.892-12.271 24.085-31.851 43.666-55.936 55.938-11.238 5.725-26.074 9.658-51.891 11.768-26.321 2.15-60.126 2.183-108.621 2.183h-221.867c-48.495 0-82.301-0.033-108.619-2.183-25.821-2.11-40.655-6.042-51.892-11.768-24.084-12.272-43.666-31.853-55.938-55.938-5.725-11.236-9.658-26.071-11.768-51.892-2.15-26.321-2.183-60.125-2.183-108.62zM353.83 375.164c16.662-16.661 43.677-16.661 60.34 0l97.83 97.83 97.83-97.83c16.661-16.661 43.678-16.661 60.339 0s16.661 43.678 0 60.339l-128 128c-16.661 16.666-43.678 16.666-60.339 0l-128-128c-16.663-16.661-16.663-43.678 0-60.339z" />
<glyph unicode="&#xe9c1;" glyph-name="underline" d="M768 256c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-512c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h512zM682.667 853.333c21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-256c0-117.821-95.513-213.333-213.333-213.333-114.72 0-208.291 90.552-213.136 204.079l-0.197 9.254v256c0 23.564 19.103 42.667 42.667 42.667 21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-256c0-70.692 57.308-128 128-128 68.168 0 123.89 53.287 127.783 120.479l0.217 7.521v256c0 23.564 19.103 42.667 42.667 42.667z" />
<glyph unicode="&#xe9c2;" glyph-name="unmute" d="M448 917.333c0 35.346 28.655 64 64 64s64-28.654 64-64c0-2.219-0.111-4.411-0.333-6.572 135.842-28.465 239.437-146.199 245.197-290.185l7.266-181.673c2.197-54.857 19.469-108.049 49.924-153.732l32.115-48.171c8.725-13.094 9.54-29.926 2.116-43.802-7.424-13.871-21.884-22.532-37.619-22.532h-725.333c-15.735 0-30.193 8.661-37.618 22.532-7.425 13.875-6.611 30.707 2.117 43.802l32.114 48.171c30.455 45.683 47.728 98.876 49.923 153.732l7.267 181.673c5.76 143.987 109.355 261.72 245.197 290.185-0.222 2.161-0.333 4.353-0.333 6.572zM512 832c-120.11 0-218.799-94.82-223.599-214.834l-7.267-181.672c-2.535-63.377-20.724-125.026-52.797-179.494h567.323c-32.073 54.468-50.261 116.117-52.796 179.494l-7.266 181.672c-4.8 120.014-103.488 214.834-223.599 214.834zM512 42.667c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 37.973-85.333 85.333-85.333z" />
<glyph unicode="&#xe9c3;" glyph-name="unpin" d="M364.822 938.667h295.684c19.183 0 35.46 0 48.154-0.745 11.716-0.687 27.567-2.193 41.51-9.505 40.094-21.027 58.206-68.659 42.206-111.012-5.564-14.727-16.41-26.383-24.708-34.681-8.994-8.992-21.163-19.806-35.499-32.55l-40.337-35.855c-3.494-3.107-5.261-4.686-6.511-5.881l-0.119-0.113 0.017-0.164c0.149-1.721 0.435-4.074 1.015-8.714l11.251-90.013c1.907-15.24 2.406-18.244 3.132-20.736 1.89-6.511 5.303-12.48 9.958-17.408 1.779-1.886 4.122-3.84 16.294-13.205l30.11-23.164c23.245-17.877 42.163-32.431 56-44.382 12.791-11.051 27.43-24.858 35.008-41.911 22.579-50.85 2.287-110.511-46.613-137.045-6.532-3.546-13.636-5.999-20.89-7.727l145.685-145.685c16.661-16.661 16.661-43.678 0-60.339s-43.678-16.661-60.339 0l-768 768c-16.662 16.663-16.662 43.677 0 60.34s43.677 16.662 60.34 0l68.116-68.116c2.951 29.104 20.096 55.968 47.546 70.363 13.942 7.311 29.792 8.817 41.508 9.505 12.697 0.745 28.974 0.745 48.157 0.745h1.325zM700.314 384.026c18.103 0.060 31.97 0.252 42.914 0.875 11.319 0.644 16.213 1.668 17.634 1.963 0.277 0.060 0.422 0.090 0.457 0.085 9.101 5.346 12.919 16.572 8.969 26.359-0.034 0.017-0.128 0.132-0.311 0.346-0.947 1.101-4.203 4.898-12.779 12.309-11.772 10.167-28.74 23.241-53.35 42.172l-30.903 23.77c-9.242 7.1-17.37 13.346-24.401 20.787-13.965 14.784-24.209 32.683-29.879 52.215-2.85 9.83-4.117 20.006-5.555 31.573l-0.294 2.369-11.251 90.013-0.23 1.826c-0.858 6.713-1.924 15.119-1.34 23.579 1.156 16.606 7.142 32.513 17.22 45.76 5.137 6.749 11.482 12.364 16.55 16.849l1.378 1.221 39.347 34.975c15.595 13.862 25.847 23 32.849 30 2.935 2.935 4.612 4.848 5.487 5.893 0.026 1.112-0.388 2.196-1.143 3.010-1.348 0.201-3.874 0.516-8.017 0.759-9.886 0.58-23.62 0.598-44.484 0.598h-294.357c-20.866 0-34.6-0.018-44.483-0.598-4.143-0.243-6.669-0.559-8.016-0.759-0.758-0.814-1.17-1.898-1.144-3.010 0.874-1.045 2.551-2.959 5.487-5.893 7.002-7 17.255-16.137 32.85-30l40.724-36.196c5.068-4.485 11.414-10.1 16.549-16.849 10.080-13.248 16.066-29.154 17.219-45.76 0.588-8.46-0.482-16.866-1.336-23.58l-0.231-1.826-2.996-23.967 280.87-280.87zM313.425 571.29c3.103 3.285 5.654 7.031 7.57 11.093l61.537-61.538c-2.238-2.812-4.598-5.53-7.075-8.154-7.029-7.441-15.161-13.687-24.403-20.787l-30.901-23.77c-24.608-18.931-41.576-32.004-53.348-42.172-8.577-7.411-11.834-11.209-12.779-12.309-0.184-0.213-0.28-0.329-0.311-0.346-3.951-9.788-0.133-21.013 8.966-26.359 0.035 0.004 0.18-0.026 0.456-0.085 1.421-0.294 6.318-1.318 17.634-1.963 15.532-0.883 36.951-0.9 67.998-0.9h170.609l85.333-85.333h-50.044v-213.333c0-23.565-19.102-42.667-42.667-42.667s-42.667 19.102-42.667 42.667v213.333h-121.958c-29.324 0-53.194 0-71.448 1.037-16.874 0.96-36.896 2.974-53.3 11.878-48.899 26.534-69.192 86.195-46.612 137.045 7.575 17.054 22.216 30.861 35.006 41.911 13.836 11.951 32.758 26.505 56.003 44.386h0.001l30.108 23.159c12.172 9.365 14.511 11.319 16.293 13.205z" />
<glyph unicode="&#xe9c4;" glyph-name="unread" d="M256 938.667h512c91.4 0 166.019-71.849 170.458-162.149l0.209-8.518v-170.667c0-23.564-19.103-42.667-42.667-42.667-21.881 0-39.915 16.471-42.38 37.691l-0.287 4.976v170.667c0 44.986-34.811 81.842-78.965 85.099l-6.369 0.234h-512c-44.986 0-81.842-34.811-85.099-78.965l-0.234-6.369v-579.66l94.081 94.081c8.916 8.916 20.555 14.483 32.962 15.892l6.259 0.354h250.698c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-238.327l-150.886-150.886c-18.329-18.329-48.045-18.329-66.374 0-7.544 7.544-12.255 17.393-13.447 27.891l-0.3 5.296v672.366c0 91.4 71.849 166.019 162.149 170.458l8.518 0.209zM810.667 512c94.257 0 170.667-76.41 170.667-170.667s-76.41-170.667-170.667-170.667c-94.257 0-170.667 76.41-170.667 170.667s76.41 170.667 170.667 170.667zM810.667 426.667c-47.128 0-85.333-38.205-85.333-85.333s38.205-85.333 85.333-85.333c47.128 0 85.333 38.205 85.333 85.333s-38.205 85.333-85.333 85.333z" />
<glyph unicode="&#xe9c5;" glyph-name="up" d="M512 622.327l268.497-268.497c16.662-16.662 43.677-16.662 60.34 0s16.662 43.677 0 60.34l-298.667 298.667c-16.662 16.662-43.677 16.662-60.34 0l-298.667-298.667c-16.662-16.662-16.662-43.677 0-60.34s43.677-16.662 60.34 0l268.497 268.497z" />
<glyph unicode="&#xe9c6;" glyph-name="user" d="M405.333 746.667c0 58.91 47.757 106.667 106.667 106.667s106.667-47.756 106.667-106.667c0-58.91-47.757-106.667-106.667-106.667s-106.667 47.756-106.667 106.667zM512 938.667c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192s-85.961 192-192 192zM225.078 321.643c31.946 35.593 115.305 105.024 286.922 105.024s254.976-69.431 286.921-105.024c7.138-7.953 11.746-20.877 11.746-39.475 0-38.016-30.818-68.834-68.834-68.834h-459.666c-38.016 0-68.833 30.818-68.833 68.834 0 18.598 4.607 31.522 11.744 39.475zM512 512c-198.378 0-304.066-81.702-350.428-133.359-26.029-29.001-33.572-65.421-33.572-96.474 0-85.146 69.023-154.167 154.167-154.167h459.666c85.146 0 154.167 69.022 154.167 154.167 0 31.053-7.543 67.473-33.57 96.474-46.366 51.657-152.051 133.359-350.43 133.359z" />
<glyph unicode="&#xe9c7;" glyph-name="username" d="M512 981.333c259.206 0 469.333-210.128 469.333-469.333 0-138.814-70.078-230.734-168.892-234.847-63.863-2.658-119.454 33.041-149.259 91.225-37.901-40.012-91.626-64.97-151.181-64.97-115.203 0-208.593 93.39-208.593 208.593s93.39 208.593 208.593 208.593c48.261 0 92.693-16.389 128.036-43.906l-0.036 5.98c0 23.564 19.103 42.667 42.667 42.667 21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-213.333c0-67.759 38.647-108.79 83.559-106.921 48.336 2.012 87.108 52.867 87.108 149.587 0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384 34.105 0 67.582 4.436 99.854 13.1 22.758 6.11 46.161-7.386 52.271-30.144s-7.386-46.161-30.144-52.271c-39.472-10.598-80.388-16.019-121.981-16.019-259.206 0-469.333 210.128-469.333 469.333s210.128 469.333 469.333 469.333zM512 635.259c-68.074 0-123.259-55.185-123.259-123.259s55.185-123.259 123.259-123.259c68.074 0 123.259 55.185 123.259 123.259s-55.185 123.259-123.259 123.259z" />
<glyph unicode="&#xe9c8;" glyph-name="videocamera" d="M290.134 874.667h232.161c34.347 0 62.694 0.001 85.781-1.886 23.983-1.959 46.029-6.164 66.739-16.716 32.111-16.362 58.219-42.471 74.581-74.584 10.551-20.708 14.758-42.754 16.717-66.737 1.22-14.914 1.651-32.020 1.805-51.519l83.46 80.125c48.9 46.945 129.954 12.115 129.954-55.434v-351.831c0-67.669-81.169-102.268-129.984-55.403l-83.43 80.094c-0.154-19.499-0.585-36.608-1.805-51.52-1.958-23.983-6.165-46.029-16.717-66.739-16.363-32.111-42.47-58.219-74.581-74.581-20.71-10.551-42.756-14.758-66.739-16.717-23.087-1.886-51.435-1.886-85.781-1.886h-233.925c-34.345 0-62.691 0-85.781 1.886-23.983 1.958-46.029 6.165-66.737 16.717-32.113 16.363-58.222 42.47-74.584 74.581-10.551 20.71-14.756 42.756-16.716 66.739-1.887 23.091-1.886 51.435-1.885 85.781v233.926c-0.001 34.345-0.001 62.691 1.885 85.781 1.96 23.983 6.165 46.029 16.716 66.737 16.362 32.113 42.471 58.222 74.584 74.584 20.708 10.551 42.754 14.757 66.737 16.716 23.091 1.887 51.437 1.886 85.782 1.886h1.763zM768 526.912c0-0.026 0-0.055 0-0.081v-29.662c0-0.026 0-0.055 0-0.081 0.021-11.588 4.757-22.669 13.12-30.694l114.88-110.289v311.791l-114.893-110.297c-8.354-8.021-13.086-19.089-13.107-30.686zM682.667 526.933v100.267c0 36.547-0.034 61.392-1.6 80.596-1.532 18.706-4.301 28.272-7.701 34.945-8.179 16.056-21.235 29.111-37.291 37.292-6.673 3.4-16.239 6.17-34.944 7.699-19.204 1.569-44.049 1.602-80.597 1.602h-230.399c-36.547 0-61.392-0.033-80.596-1.602-18.706-1.528-28.272-4.299-34.945-7.699-16.057-8.181-29.111-21.236-37.292-37.292-3.4-6.673-6.17-16.239-7.698-34.945-1.569-19.204-1.602-44.048-1.602-80.596v-230.4c0-36.548 0.033-61.393 1.602-80.597 1.528-18.705 4.298-28.271 7.698-34.944 8.181-16.055 21.236-29.111 37.292-37.291 6.673-3.401 16.239-6.17 34.944-7.697 19.204-1.57 44.049-1.604 80.596-1.604h230.399c36.548 0 61.393 0.034 80.597 1.604 18.705 1.527 28.271 4.297 34.944 7.697 16.055 8.179 29.111 21.235 37.291 37.291 3.401 6.673 6.17 16.239 7.701 34.944 1.566 19.204 1.6 44.049 1.6 80.597v100.271c0 0.030 0 0.064 0 0.098v29.662c0 0.034 0 0.068 0 0.102z" />
<glyph unicode="&#xe9c9;" glyph-name="videocamera_crossed_filled" d="M72.837 926.17c-16.663 16.662-43.678 16.662-60.34 0s-16.662-43.677 0-60.34l768-768c16.661-16.661 43.678-16.661 60.339 0s16.661 43.678 0 60.339l-83.311 83.311c10.475 34.313 10.475 80.653 10.475 159.586v221.867c0 95.582 0 143.373-18.603 179.881-16.363 32.113-42.47 58.222-74.581 74.584-36.51 18.601-84.301 18.601-179.883 18.601h-179.2c-95.582 0-143.373 0-179.881-18.601-3.124-1.591-6.19-3.276-9.197-5.048l-53.819 53.819zM42.667 622.933c0 68.67 0 112.673 6.898 145.546l622.994-622.994c-36.228-17.485-83.998-17.485-177.626-17.485h-179.2c-95.582 0-143.373 0-179.881 18.603-32.113 16.363-58.222 42.47-74.584 74.581-18.601 36.51-18.601 84.301-18.601 179.883v221.867zM810.667 571.494v-118.989c0-16.849 4.988-33.318 14.332-47.334l78.165-117.252c23.42-35.127 78.17-18.547 78.17 23.667v400.829c0 42.215-54.75 58.792-78.17 23.667l-78.165-117.251c-9.344-14.018-14.332-30.487-14.332-47.337z" />
<glyph unicode="&#xe9ca;" glyph-name="videocamera_filled" d="M18.605 760.148c-18.602-36.507-18.602-84.299-18.602-179.881v-136.533c0-95.585 0-143.371 18.602-179.883 16.362-32.114 42.471-58.22 74.584-74.581 36.507-18.603 84.299-18.603 179.881-18.603h136.533c95.582 0 143.374 0 179.879 18.603 32.114 16.361 58.226 42.468 74.587 74.581 18.603 36.511 18.603 84.298 18.603 179.883v136.533c0 95.582 0 143.374-18.603 179.881-16.361 32.113-42.473 58.222-74.587 74.584-36.506 18.602-84.297 18.602-179.879 18.602h-136.533c-95.582 0-143.374 0-179.881-18.602-32.113-16.362-58.222-42.471-74.584-74.584zM752.742 596.089c-8.522-10.224-13.187-23.111-13.187-36.419v-115.937l147.081-176.498c27.25-32.7 80.475-13.431 80.475 29.133v431.261c0 42.567-53.225 61.836-80.475 29.136l-133.894-160.676z" />
<glyph unicode="&#xe9cb;" glyph-name="videochat" d="M332.8 938.667h-1.763c-34.345 0-62.691 0.001-85.782-1.885-23.983-1.96-46.029-6.165-66.736-16.716-32.113-16.363-58.222-42.471-74.584-74.584-10.551-20.707-14.756-42.754-16.716-66.736-1.886-23.091-1.886-51.437-1.885-85.782v-607.63c0-17.259 10.395-32.815 26.339-39.42s34.295-2.953 46.498 9.25l130.677 130.675c16.195 16.196 19.569 19.183 22.873 21.205 3.817 2.342 7.98 4.066 12.333 5.111 3.768 0.905 8.265 1.178 31.168 1.178h337.742c34.347 0 62.69 0 85.781 1.886 23.983 1.958 46.029 6.165 66.739 16.717 32.111 16.363 58.219 42.47 74.581 74.581 10.551 20.71 14.758 42.756 16.717 66.739 1.886 23.091 1.886 51.435 1.886 85.781v233.925c0 34.345 0 62.691-1.886 85.782-1.958 23.983-6.165 46.029-16.717 66.736-16.363 32.113-42.47 58.222-74.581 74.584-20.71 10.551-42.756 14.756-66.739 16.716-23.091 1.886-51.435 1.886-85.781 1.885v0h-360.162zM217.26 844.032c6.673 3.4 16.239 6.17 34.945 7.699 19.204 1.569 44.048 1.602 80.596 1.602h358.4c36.548 0 61.393-0.033 80.597-1.602 18.705-1.528 28.271-4.299 34.944-7.699 16.055-8.181 29.111-21.236 37.291-37.292 3.401-6.673 6.17-16.239 7.697-34.945 1.57-19.204 1.604-44.048 1.604-80.596v-230.4c0-36.548-0.034-61.393-1.604-80.597-1.527-18.705-4.297-28.271-7.697-34.944-8.179-16.055-21.235-29.111-37.291-37.291-6.673-3.401-16.239-6.17-34.944-7.697-19.204-1.57-44.049-1.604-80.597-1.604l-339.534 0.004c-17.361 0.013-32.667 0.030-47.535-3.541-13.061-3.136-25.546-8.307-36.999-15.326-13.036-7.987-23.849-18.82-36.114-31.108l-2.512-2.517-57.841-57.839v502.861c0 36.547 0.033 61.392 1.602 80.596 1.528 18.706 4.299 28.272 7.699 34.945 8.181 16.056 21.236 29.111 37.292 37.292zM554.667 746.667c0 23.564-19.102 42.667-42.667 42.667s-42.667-19.103-42.667-42.667v-341.333c0-23.565 19.102-42.667 42.667-42.667s42.667 19.102 42.667 42.667v341.333zM682.667 661.333c23.565 0 42.667-19.103 42.667-42.667v-85.333c0-23.565-19.102-42.667-42.667-42.667s-42.667 19.102-42.667 42.667v85.333c0 23.564 19.102 42.667 42.667 42.667zM384 661.333c0 23.564-19.102 42.667-42.667 42.667s-42.667-19.103-42.667-42.667v-170.667c0-23.565 19.103-42.667 42.667-42.667s42.667 19.102 42.667 42.667v170.667z" />
<glyph unicode="&#xe9cc;" glyph-name="volume_down" d="M789.333 512c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM213.333 597.333v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v476.587c0 37.973-46.080 57.173-72.96 30.293l-140.373-140.8h-128c-23.467 0-42.667-19.2-42.667-42.667z" />
<glyph unicode="&#xe9cd;" glyph-name="volume_mute" d="M298.667 597.333v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v476.587c0 37.973-46.080 57.173-72.96 30.293l-140.373-140.8h-128c-23.467 0-42.667-19.2-42.667-42.667z" />
<glyph unicode="&#xe9ce;" glyph-name="volume_off" d="M154.88 869.12c-16.64-16.64-16.64-43.52 0-60.16l156.16-156.16-12.373-12.8h-128c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v177.92l178.347-178.347c-20.907-15.787-43.52-29.013-68.267-38.827-15.36-6.4-24.747-22.613-24.747-39.253 0-30.72 31.147-50.347 59.307-38.827 34.133 14.080 66.133 32.853 94.72 55.893l57.173-57.173c16.64-16.64 43.52-16.64 60.16 0s16.64 43.52 0 60.16l-653.227 653.653c-16.64 16.64-43.52 16.64-60.587 0zM810.667 512c0-34.987-6.4-68.693-17.493-99.84l65.28-65.28c23.893 49.92 37.547 105.813 37.547 165.12 0 163.413-102.4 303.36-246.613 358.4-25.173 9.813-52.053-9.813-52.053-36.693v-8.107c0-16.213 10.667-30.293 26.027-36.267 109.653-44.373 187.307-151.893 187.307-277.333zM439.040 780.373l-7.253-7.253 80.213-80.213v57.6c0 37.973-46.080 56.747-72.96 29.867zM704 512c0 75.52-43.52 140.373-106.667 171.947v-76.373l105.813-105.813c0.427 3.413 0.853 6.827 0.853 10.24z" />
<glyph unicode="&#xe9cf;" glyph-name="volume_up" d="M128 597.333v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v476.587c0 37.973-46.080 57.173-72.96 30.293l-140.373-140.8h-128c-23.467 0-42.667-19.2-42.667-42.667zM704 512c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM597.333 834.133v-8.533c0-16.213 10.667-30.293 25.6-36.267 110.080-43.947 187.733-151.893 187.733-277.333s-77.653-233.387-187.733-277.333c-15.36-5.973-25.6-20.053-25.6-36.267v-8.533c0-26.88 26.88-45.653 51.627-36.267 144.64 55.040 247.040 194.56 247.040 358.4s-102.4 303.36-247.040 358.4c-24.747 9.813-51.627-9.387-51.627-36.267z" />
<glyph unicode="&#xe9d0;" glyph-name="zoomin" d="M426.667 896c164.949 0 298.667-133.718 298.667-298.667 0-67.259-22.232-129.325-59.749-179.25l0.566-0.364 4.020-3.549 213.333-213.333c16.662-16.662 16.662-43.677 0-60.34-15.381-15.381-39.583-16.564-56.32-3.549l-4.020 3.549-213.333 213.333c-1.459 1.459-2.791 2.998-3.995 4.602-49.844-37.534-111.91-59.766-179.169-59.766-164.949 0-298.667 133.718-298.667 298.667s133.718 298.667 298.667 298.667zM426.667 810.667c-117.821 0-213.333-95.513-213.333-213.333s95.513-213.333 213.333-213.333c117.821 0 213.333 95.513 213.333 213.333s-95.513 213.333-213.333 213.333zM426.667 725.333c21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-42.667h42.667c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-42.667v-42.667c0-23.564-19.103-42.667-42.667-42.667-21.881 0-39.915 16.471-42.38 37.691l-0.287 4.976v42.667h-42.667c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h42.667v42.667c0 23.564 19.103 42.667 42.667 42.667z" />
<glyph unicode="&#xe9d1;" glyph-name="zoomout" d="M426.667 896c164.949 0 298.667-133.718 298.667-298.667 0-67.259-22.232-129.325-59.749-179.25l0.566-0.364 4.020-3.549 213.333-213.333c16.662-16.662 16.662-43.677 0-60.34-15.381-15.381-39.583-16.564-56.32-3.549l-4.020 3.549-213.333 213.333c-1.459 1.459-2.791 2.998-3.995 4.602-49.844-37.534-111.91-59.766-179.169-59.766-164.949 0-298.667 133.718-298.667 298.667s133.718 298.667 298.667 298.667zM426.667 810.667c-117.821 0-213.333-95.513-213.333-213.333s95.513-213.333 213.333-213.333c117.821 0 213.333 95.513 213.333 213.333s-95.513 213.333-213.333 213.333zM512 640c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-170.667c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h170.667z" />
<glyph unicode="&#xe9c0;" glyph-name="transcribe" d="M399.875 478.29h-367.017c-18.072 0-32.858 15.172-32.858 33.717s14.786 33.719 32.858 33.719h367.017l-160.015 164.884c-3.042 3.122-5.455 6.828-7.101 10.907s-2.494 8.45-2.494 12.865c0 4.415 0.847 8.786 2.494 12.865s4.059 7.785 7.101 10.907c3.042 3.122 6.653 5.598 10.628 7.287s8.234 2.559 12.537 2.559c4.302 0 8.562-0.87 12.536-2.559s7.586-4.166 10.627-7.287l216.203-222.542c3.046-3.12 5.461-6.825 7.111-10.904s2.497-8.452 2.497-12.868c0-4.416-0.848-8.789-2.497-12.868s-4.065-7.784-7.111-10.904l-216.53-222.206c-12.815-13.15-33.516-13.15-46.33 0s-12.815 34.731 0 47.881l160.344 164.548zM788.466 768h23.165l212.369-512h-101.936l-45.488 119.913h-217.64l-45.386-119.913h-101.55l211.595 512h64.87zM685.42 445.889h164.608l-82.398 217.206-82.21-217.206z" />
<glyph unicode="&#xe9c1;" glyph-name="unarchive" d="M392.533 981.335l244.813 0.001c44.386 0.015 75.093 0.026 103.906-8.203 25.434-7.264 49.297-19.195 70.37-35.185 23.868-18.113 42.283-42.683 68.907-78.203l10.743-14.325c13.175-17.557 23.138-30.831 30.37-45.782 6.383-13.201 11.042-27.17 13.854-41.561 3.187-16.299 3.179-32.896 3.17-54.848v-203.398c0-1.015 0-2.039 0-3.063v-97.532c0-46.238 0-83.533-2.466-113.737-2.543-31.095-7.91-58.411-20.787-83.682-20.45-40.141-53.086-72.777-93.231-93.231-25.267-12.877-52.582-18.244-83.682-20.787-30.199-2.466-67.494-2.466-113.737-2.466h-225.529c-46.239 0-83.535 0-113.736 2.466-31.098 2.543-58.412 7.91-83.683 20.787-40.141 20.454-72.777 53.090-93.23 93.231-12.876 25.271-18.244 52.587-20.785 83.682-2.467 30.204-2.467 67.499-2.467 113.741v97.519c0 1.203 0 2.398 0 3.588v199.387l-0.001 3.494c-0.009 21.953-0.015 38.549 3.171 54.848 2.813 14.391 7.47 28.36 13.853 41.561 7.231 14.951 17.194 28.224 30.372 45.781l10.744 14.326c26.621 35.52 45.035 60.089 68.905 78.202 21.073 15.99 44.935 27.921 70.371 35.185 28.813 8.229 59.517 8.218 103.905 8.203l5.879-0.001zM832.034 782.067c-2.94 4.009-6.575 8.876-11.127 14.948l-5.12 6.827c-31.522 42.028-42.59 56.144-55.748 66.128-12.642 9.594-26.961 16.753-42.223 21.111-15.881 4.536-33.813 4.921-86.349 4.921h-238.933c-52.535 0-70.47-0.385-86.351-4.921-15.261-4.358-29.579-11.517-42.222-21.111-13.157-9.984-24.226-24.1-55.747-66.128l-5.12-6.827c-4.553-6.071-8.186-10.939-11.127-14.947 3.229 1.865 6.513 3.649 9.849 5.349 25.271 12.876 52.586 18.244 83.683 20.785 30.203 2.468 67.5 2.467 113.742 2.467h225.519c46.242 0 83.537 0.001 113.741-2.467 31.1-2.541 58.415-7.909 83.682-20.785 3.337-1.699 6.622-3.484 9.852-5.349zM170.667 494.933v-93.867c0-48.495 0.033-82.3 2.183-108.617 2.11-25.822 6.042-40.657 11.768-51.891 12.272-24.085 31.853-43.669 55.938-55.94 11.237-5.726 26.071-9.66 51.892-11.767 26.319-2.15 60.124-2.185 108.619-2.185h221.867c48.495 0 82.3 0.034 108.621 2.185 25.818 2.108 40.653 6.042 51.891 11.767 24.085 12.271 43.665 31.855 55.936 55.94 5.726 11.234 9.66 26.069 11.767 51.891 2.15 26.317 2.185 60.122 2.185 108.617v93.867c0 48.495-0.034 82.3-2.185 108.62-2.108 25.821-6.042 40.655-11.767 51.892-12.271 24.085-31.851 43.666-55.936 55.938-11.238 5.725-26.074 9.658-51.891 11.768-26.321 2.15-60.126 2.183-108.621 2.183h-221.867c-48.495 0-82.301-0.033-108.619-2.183-25.821-2.11-40.655-6.042-51.892-11.768-24.084-12.272-43.666-31.853-55.938-55.938-5.725-11.236-9.658-26.071-11.768-51.892-2.15-26.321-2.183-60.125-2.183-108.62zM353.83 375.164c16.662-16.661 43.677-16.661 60.34 0l97.83 97.83 97.83-97.83c16.661-16.661 43.678-16.661 60.339 0s16.661 43.678 0 60.339l-128 128c-16.661 16.666-43.678 16.666-60.339 0l-128-128c-16.663-16.661-16.663-43.678 0-60.339z" />
<glyph unicode="&#xe9c2;" glyph-name="underline" d="M768 256c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-512c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h512zM682.667 853.333c21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-256c0-117.821-95.513-213.333-213.333-213.333-114.72 0-208.291 90.552-213.136 204.079l-0.197 9.254v256c0 23.564 19.103 42.667 42.667 42.667 21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-256c0-70.692 57.308-128 128-128 68.168 0 123.89 53.287 127.783 120.479l0.217 7.521v256c0 23.564 19.103 42.667 42.667 42.667z" />
<glyph unicode="&#xe9c3;" glyph-name="unmute" d="M448 917.333c0 35.346 28.655 64 64 64s64-28.654 64-64c0-2.219-0.111-4.411-0.333-6.572 135.842-28.465 239.437-146.199 245.197-290.185l7.266-181.673c2.197-54.857 19.469-108.049 49.924-153.732l32.115-48.171c8.725-13.094 9.54-29.926 2.116-43.802-7.424-13.871-21.884-22.532-37.619-22.532h-725.333c-15.735 0-30.193 8.661-37.618 22.532-7.425 13.875-6.611 30.707 2.117 43.802l32.114 48.171c30.455 45.683 47.728 98.876 49.923 153.732l7.267 181.673c5.76 143.987 109.355 261.72 245.197 290.185-0.222 2.161-0.333 4.353-0.333 6.572zM512 832c-120.11 0-218.799-94.82-223.599-214.834l-7.267-181.672c-2.535-63.377-20.724-125.026-52.797-179.494h567.323c-32.073 54.468-50.261 116.117-52.796 179.494l-7.266 181.672c-4.8 120.014-103.488 214.834-223.599 214.834zM512 42.667c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 37.973-85.333 85.333-85.333z" />
<glyph unicode="&#xe9c4;" glyph-name="unpin" d="M364.822 938.667h295.684c19.183 0 35.46 0 48.154-0.745 11.716-0.687 27.567-2.193 41.51-9.505 40.094-21.027 58.206-68.659 42.206-111.012-5.564-14.727-16.41-26.383-24.708-34.681-8.994-8.992-21.163-19.806-35.499-32.55l-40.337-35.855c-3.494-3.107-5.261-4.686-6.511-5.881l-0.119-0.113 0.017-0.164c0.149-1.721 0.435-4.074 1.015-8.714l11.251-90.013c1.907-15.24 2.406-18.244 3.132-20.736 1.89-6.511 5.303-12.48 9.958-17.408 1.779-1.886 4.122-3.84 16.294-13.205l30.11-23.164c23.245-17.877 42.163-32.431 56-44.382 12.791-11.051 27.43-24.858 35.008-41.911 22.579-50.85 2.287-110.511-46.613-137.045-6.532-3.546-13.636-5.999-20.89-7.727l145.685-145.685c16.661-16.661 16.661-43.678 0-60.339s-43.678-16.661-60.339 0l-768 768c-16.662 16.663-16.662 43.677 0 60.34s43.677 16.662 60.34 0l68.116-68.116c2.951 29.104 20.096 55.968 47.546 70.363 13.942 7.311 29.792 8.817 41.508 9.505 12.697 0.745 28.974 0.745 48.157 0.745h1.325zM700.314 384.026c18.103 0.060 31.97 0.252 42.914 0.875 11.319 0.644 16.213 1.668 17.634 1.963 0.277 0.060 0.422 0.090 0.457 0.085 9.101 5.346 12.919 16.572 8.969 26.359-0.034 0.017-0.128 0.132-0.311 0.346-0.947 1.101-4.203 4.898-12.779 12.309-11.772 10.167-28.74 23.241-53.35 42.172l-30.903 23.77c-9.242 7.1-17.37 13.346-24.401 20.787-13.965 14.784-24.209 32.683-29.879 52.215-2.85 9.83-4.117 20.006-5.555 31.573l-0.294 2.369-11.251 90.013-0.23 1.826c-0.858 6.713-1.924 15.119-1.34 23.579 1.156 16.606 7.142 32.513 17.22 45.76 5.137 6.749 11.482 12.364 16.55 16.849l1.378 1.221 39.347 34.975c15.595 13.862 25.847 23 32.849 30 2.935 2.935 4.612 4.848 5.487 5.893 0.026 1.112-0.388 2.196-1.143 3.010-1.348 0.201-3.874 0.516-8.017 0.759-9.886 0.58-23.62 0.598-44.484 0.598h-294.357c-20.866 0-34.6-0.018-44.483-0.598-4.143-0.243-6.669-0.559-8.016-0.759-0.758-0.814-1.17-1.898-1.144-3.010 0.874-1.045 2.551-2.959 5.487-5.893 7.002-7 17.255-16.137 32.85-30l40.724-36.196c5.068-4.485 11.414-10.1 16.549-16.849 10.080-13.248 16.066-29.154 17.219-45.76 0.588-8.46-0.482-16.866-1.336-23.58l-0.231-1.826-2.996-23.967 280.87-280.87zM313.425 571.29c3.103 3.285 5.654 7.031 7.57 11.093l61.537-61.538c-2.238-2.812-4.598-5.53-7.075-8.154-7.029-7.441-15.161-13.687-24.403-20.787l-30.901-23.77c-24.608-18.931-41.576-32.004-53.348-42.172-8.577-7.411-11.834-11.209-12.779-12.309-0.184-0.213-0.28-0.329-0.311-0.346-3.951-9.788-0.133-21.013 8.966-26.359 0.035 0.004 0.18-0.026 0.456-0.085 1.421-0.294 6.318-1.318 17.634-1.963 15.532-0.883 36.951-0.9 67.998-0.9h170.609l85.333-85.333h-50.044v-213.333c0-23.565-19.102-42.667-42.667-42.667s-42.667 19.102-42.667 42.667v213.333h-121.958c-29.324 0-53.194 0-71.448 1.037-16.874 0.96-36.896 2.974-53.3 11.878-48.899 26.534-69.192 86.195-46.612 137.045 7.575 17.054 22.216 30.861 35.006 41.911 13.836 11.951 32.758 26.505 56.003 44.386h0.001l30.108 23.159c12.172 9.365 14.511 11.319 16.293 13.205z" />
<glyph unicode="&#xe9c5;" glyph-name="unread" d="M256 938.667h512c91.4 0 166.019-71.849 170.458-162.149l0.209-8.518v-170.667c0-23.564-19.103-42.667-42.667-42.667-21.881 0-39.915 16.471-42.38 37.691l-0.287 4.976v170.667c0 44.986-34.811 81.842-78.965 85.099l-6.369 0.234h-512c-44.986 0-81.842-34.811-85.099-78.965l-0.234-6.369v-579.66l94.081 94.081c8.916 8.916 20.555 14.483 32.962 15.892l6.259 0.354h250.698c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-238.327l-150.886-150.886c-18.329-18.329-48.045-18.329-66.374 0-7.544 7.544-12.255 17.393-13.447 27.891l-0.3 5.296v672.366c0 91.4 71.849 166.019 162.149 170.458l8.518 0.209zM810.667 512c94.257 0 170.667-76.41 170.667-170.667s-76.41-170.667-170.667-170.667c-94.257 0-170.667 76.41-170.667 170.667s76.41 170.667 170.667 170.667zM810.667 426.667c-47.128 0-85.333-38.205-85.333-85.333s38.205-85.333 85.333-85.333c47.128 0 85.333 38.205 85.333 85.333s-38.205 85.333-85.333 85.333z" />
<glyph unicode="&#xe9c6;" glyph-name="up" d="M512 622.327l268.497-268.497c16.662-16.662 43.677-16.662 60.34 0s16.662 43.677 0 60.34l-298.667 298.667c-16.662 16.662-43.677 16.662-60.34 0l-298.667-298.667c-16.662-16.662-16.662-43.677 0-60.34s43.677-16.662 60.34 0l268.497 268.497z" />
<glyph unicode="&#xe9c7;" glyph-name="user" d="M405.333 746.667c0 58.91 47.757 106.667 106.667 106.667s106.667-47.756 106.667-106.667c0-58.91-47.757-106.667-106.667-106.667s-106.667 47.756-106.667 106.667zM512 938.667c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192s-85.961 192-192 192zM225.078 321.643c31.946 35.593 115.305 105.024 286.922 105.024s254.976-69.431 286.921-105.024c7.138-7.953 11.746-20.877 11.746-39.475 0-38.016-30.818-68.834-68.834-68.834h-459.666c-38.016 0-68.833 30.818-68.833 68.834 0 18.598 4.607 31.522 11.744 39.475zM512 512c-198.378 0-304.066-81.702-350.428-133.359-26.029-29.001-33.572-65.421-33.572-96.474 0-85.146 69.023-154.167 154.167-154.167h459.666c85.146 0 154.167 69.022 154.167 154.167 0 31.053-7.543 67.473-33.57 96.474-46.366 51.657-152.051 133.359-350.43 133.359z" />
<glyph unicode="&#xe9c8;" glyph-name="username" d="M512 981.333c259.206 0 469.333-210.128 469.333-469.333 0-138.814-70.078-230.734-168.892-234.847-63.863-2.658-119.454 33.041-149.259 91.225-37.901-40.012-91.626-64.97-151.181-64.97-115.203 0-208.593 93.39-208.593 208.593s93.39 208.593 208.593 208.593c48.261 0 92.693-16.389 128.036-43.906l-0.036 5.98c0 23.564 19.103 42.667 42.667 42.667 21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-213.333c0-67.759 38.647-108.79 83.559-106.921 48.336 2.012 87.108 52.867 87.108 149.587 0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384 34.105 0 67.582 4.436 99.854 13.1 22.758 6.11 46.161-7.386 52.271-30.144s-7.386-46.161-30.144-52.271c-39.472-10.598-80.388-16.019-121.981-16.019-259.206 0-469.333 210.128-469.333 469.333s210.128 469.333 469.333 469.333zM512 635.259c-68.074 0-123.259-55.185-123.259-123.259s55.185-123.259 123.259-123.259c68.074 0 123.259 55.185 123.259 123.259s-55.185 123.259-123.259 123.259z" />
<glyph unicode="&#xe9c9;" glyph-name="videocamera" d="M290.134 874.667h232.161c34.347 0 62.694 0.001 85.781-1.886 23.983-1.959 46.029-6.164 66.739-16.716 32.111-16.362 58.219-42.471 74.581-74.584 10.551-20.708 14.758-42.754 16.717-66.737 1.22-14.914 1.651-32.020 1.805-51.519l83.46 80.125c48.9 46.945 129.954 12.115 129.954-55.434v-351.831c0-67.669-81.169-102.268-129.984-55.403l-83.43 80.094c-0.154-19.499-0.585-36.608-1.805-51.52-1.958-23.983-6.165-46.029-16.717-66.739-16.363-32.111-42.47-58.219-74.581-74.581-20.71-10.551-42.756-14.758-66.739-16.717-23.087-1.886-51.435-1.886-85.781-1.886h-233.925c-34.345 0-62.691 0-85.781 1.886-23.983 1.958-46.029 6.165-66.737 16.717-32.113 16.363-58.222 42.47-74.584 74.581-10.551 20.71-14.756 42.756-16.716 66.739-1.887 23.091-1.886 51.435-1.885 85.781v233.926c-0.001 34.345-0.001 62.691 1.885 85.781 1.96 23.983 6.165 46.029 16.716 66.737 16.362 32.113 42.471 58.222 74.584 74.584 20.708 10.551 42.754 14.757 66.737 16.716 23.091 1.887 51.437 1.886 85.782 1.886h1.763zM768 526.912c0-0.026 0-0.055 0-0.081v-29.662c0-0.026 0-0.055 0-0.081 0.021-11.588 4.757-22.669 13.12-30.694l114.88-110.289v311.791l-114.893-110.297c-8.354-8.021-13.086-19.089-13.107-30.686zM682.667 526.933v100.267c0 36.547-0.034 61.392-1.6 80.596-1.532 18.706-4.301 28.272-7.701 34.945-8.179 16.056-21.235 29.111-37.291 37.292-6.673 3.4-16.239 6.17-34.944 7.699-19.204 1.569-44.049 1.602-80.597 1.602h-230.399c-36.547 0-61.392-0.033-80.596-1.602-18.706-1.528-28.272-4.299-34.945-7.699-16.057-8.181-29.111-21.236-37.292-37.292-3.4-6.673-6.17-16.239-7.698-34.945-1.569-19.204-1.602-44.048-1.602-80.596v-230.4c0-36.548 0.033-61.393 1.602-80.597 1.528-18.705 4.298-28.271 7.698-34.944 8.181-16.055 21.236-29.111 37.292-37.291 6.673-3.401 16.239-6.17 34.944-7.697 19.204-1.57 44.049-1.604 80.596-1.604h230.399c36.548 0 61.393 0.034 80.597 1.604 18.705 1.527 28.271 4.297 34.944 7.697 16.055 8.179 29.111 21.235 37.291 37.291 3.401 6.673 6.17 16.239 7.701 34.944 1.566 19.204 1.6 44.049 1.6 80.597v100.271c0 0.030 0 0.064 0 0.098v29.662c0 0.034 0 0.068 0 0.102z" />
<glyph unicode="&#xe9ca;" glyph-name="videocamera_crossed_filled" d="M72.837 926.17c-16.663 16.662-43.678 16.662-60.34 0s-16.662-43.677 0-60.34l768-768c16.661-16.661 43.678-16.661 60.339 0s16.661 43.678 0 60.339l-83.311 83.311c10.475 34.313 10.475 80.653 10.475 159.586v221.867c0 95.582 0 143.373-18.603 179.881-16.363 32.113-42.47 58.222-74.581 74.584-36.51 18.601-84.301 18.601-179.883 18.601h-179.2c-95.582 0-143.373 0-179.881-18.601-3.124-1.591-6.19-3.276-9.197-5.048l-53.819 53.819zM42.667 622.933c0 68.67 0 112.673 6.898 145.546l622.994-622.994c-36.228-17.485-83.998-17.485-177.626-17.485h-179.2c-95.582 0-143.373 0-179.881 18.603-32.113 16.363-58.222 42.47-74.584 74.581-18.601 36.51-18.601 84.301-18.601 179.883v221.867zM810.667 571.494v-118.989c0-16.849 4.988-33.318 14.332-47.334l78.165-117.252c23.42-35.127 78.17-18.547 78.17 23.667v400.829c0 42.215-54.75 58.792-78.17 23.667l-78.165-117.251c-9.344-14.018-14.332-30.487-14.332-47.337z" />
<glyph unicode="&#xe9cb;" glyph-name="videocamera_filled" d="M18.605 760.148c-18.602-36.507-18.602-84.299-18.602-179.881v-136.533c0-95.585 0-143.371 18.602-179.883 16.362-32.114 42.471-58.22 74.584-74.581 36.507-18.603 84.299-18.603 179.881-18.603h136.533c95.582 0 143.374 0 179.879 18.603 32.114 16.361 58.226 42.468 74.587 74.581 18.603 36.511 18.603 84.298 18.603 179.883v136.533c0 95.582 0 143.374-18.603 179.881-16.361 32.113-42.473 58.222-74.587 74.584-36.506 18.602-84.297 18.602-179.879 18.602h-136.533c-95.582 0-143.374 0-179.881-18.602-32.113-16.362-58.222-42.471-74.584-74.584zM752.742 596.089c-8.522-10.224-13.187-23.111-13.187-36.419v-115.937l147.081-176.498c27.25-32.7 80.475-13.431 80.475 29.133v431.261c0 42.567-53.225 61.836-80.475 29.136l-133.894-160.676z" />
<glyph unicode="&#xe9cc;" glyph-name="videochat" d="M332.8 938.667h-1.763c-34.345 0-62.691 0.001-85.782-1.885-23.983-1.96-46.029-6.165-66.736-16.716-32.113-16.363-58.222-42.471-74.584-74.584-10.551-20.707-14.756-42.754-16.716-66.736-1.886-23.091-1.886-51.437-1.885-85.782v-607.63c0-17.259 10.395-32.815 26.339-39.42s34.295-2.953 46.498 9.25l130.677 130.675c16.195 16.196 19.569 19.183 22.873 21.205 3.817 2.342 7.98 4.066 12.333 5.111 3.768 0.905 8.265 1.178 31.168 1.178h337.742c34.347 0 62.69 0 85.781 1.886 23.983 1.958 46.029 6.165 66.739 16.717 32.111 16.363 58.219 42.47 74.581 74.581 10.551 20.71 14.758 42.756 16.717 66.739 1.886 23.091 1.886 51.435 1.886 85.781v233.925c0 34.345 0 62.691-1.886 85.782-1.958 23.983-6.165 46.029-16.717 66.736-16.363 32.113-42.47 58.222-74.581 74.584-20.71 10.551-42.756 14.756-66.739 16.716-23.091 1.886-51.435 1.886-85.781 1.885v0h-360.162zM217.26 844.032c6.673 3.4 16.239 6.17 34.945 7.699 19.204 1.569 44.048 1.602 80.596 1.602h358.4c36.548 0 61.393-0.033 80.597-1.602 18.705-1.528 28.271-4.299 34.944-7.699 16.055-8.181 29.111-21.236 37.291-37.292 3.401-6.673 6.17-16.239 7.697-34.945 1.57-19.204 1.604-44.048 1.604-80.596v-230.4c0-36.548-0.034-61.393-1.604-80.597-1.527-18.705-4.297-28.271-7.697-34.944-8.179-16.055-21.235-29.111-37.291-37.291-6.673-3.401-16.239-6.17-34.944-7.697-19.204-1.57-44.049-1.604-80.597-1.604l-339.534 0.004c-17.361 0.013-32.667 0.030-47.535-3.541-13.061-3.136-25.546-8.307-36.999-15.326-13.036-7.987-23.849-18.82-36.114-31.108l-2.512-2.517-57.841-57.839v502.861c0 36.547 0.033 61.392 1.602 80.596 1.528 18.706 4.299 28.272 7.699 34.945 8.181 16.056 21.236 29.111 37.292 37.292zM554.667 746.667c0 23.564-19.102 42.667-42.667 42.667s-42.667-19.103-42.667-42.667v-341.333c0-23.565 19.102-42.667 42.667-42.667s42.667 19.102 42.667 42.667v341.333zM682.667 661.333c23.565 0 42.667-19.103 42.667-42.667v-85.333c0-23.565-19.102-42.667-42.667-42.667s-42.667 19.102-42.667 42.667v85.333c0 23.564 19.102 42.667 42.667 42.667zM384 661.333c0 23.564-19.102 42.667-42.667 42.667s-42.667-19.103-42.667-42.667v-170.667c0-23.565 19.103-42.667 42.667-42.667s42.667 19.102 42.667 42.667v170.667z" />
<glyph unicode="&#xe9cd;" glyph-name="volume_down" d="M789.333 512c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM213.333 597.333v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v476.587c0 37.973-46.080 57.173-72.96 30.293l-140.373-140.8h-128c-23.467 0-42.667-19.2-42.667-42.667z" />
<glyph unicode="&#xe9ce;" glyph-name="volume_mute" d="M298.667 597.333v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v476.587c0 37.973-46.080 57.173-72.96 30.293l-140.373-140.8h-128c-23.467 0-42.667-19.2-42.667-42.667z" />
<glyph unicode="&#xe9cf;" glyph-name="volume_off" d="M154.88 869.12c-16.64-16.64-16.64-43.52 0-60.16l156.16-156.16-12.373-12.8h-128c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v177.92l178.347-178.347c-20.907-15.787-43.52-29.013-68.267-38.827-15.36-6.4-24.747-22.613-24.747-39.253 0-30.72 31.147-50.347 59.307-38.827 34.133 14.080 66.133 32.853 94.72 55.893l57.173-57.173c16.64-16.64 43.52-16.64 60.16 0s16.64 43.52 0 60.16l-653.227 653.653c-16.64 16.64-43.52 16.64-60.587 0zM810.667 512c0-34.987-6.4-68.693-17.493-99.84l65.28-65.28c23.893 49.92 37.547 105.813 37.547 165.12 0 163.413-102.4 303.36-246.613 358.4-25.173 9.813-52.053-9.813-52.053-36.693v-8.107c0-16.213 10.667-30.293 26.027-36.267 109.653-44.373 187.307-151.893 187.307-277.333zM439.040 780.373l-7.253-7.253 80.213-80.213v57.6c0 37.973-46.080 56.747-72.96 29.867zM704 512c0 75.52-43.52 140.373-106.667 171.947v-76.373l105.813-105.813c0.427 3.413 0.853 6.827 0.853 10.24z" />
<glyph unicode="&#xe9d0;" glyph-name="volume_up" d="M128 597.333v-170.667c0-23.467 19.2-42.667 42.667-42.667h128l140.373-140.373c26.88-26.88 72.96-7.68 72.96 30.293v476.587c0 37.973-46.080 57.173-72.96 30.293l-140.373-140.8h-128c-23.467 0-42.667-19.2-42.667-42.667zM704 512c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM597.333 834.133v-8.533c0-16.213 10.667-30.293 25.6-36.267 110.080-43.947 187.733-151.893 187.733-277.333s-77.653-233.387-187.733-277.333c-15.36-5.973-25.6-20.053-25.6-36.267v-8.533c0-26.88 26.88-45.653 51.627-36.267 144.64 55.040 247.040 194.56 247.040 358.4s-102.4 303.36-247.040 358.4c-24.747 9.813-51.627-9.387-51.627-36.267z" />
<glyph unicode="&#xe9d1;" glyph-name="zoomin" d="M426.667 896c164.949 0 298.667-133.718 298.667-298.667 0-67.259-22.232-129.325-59.749-179.25l0.566-0.364 4.020-3.549 213.333-213.333c16.662-16.662 16.662-43.677 0-60.34-15.381-15.381-39.583-16.564-56.32-3.549l-4.020 3.549-213.333 213.333c-1.459 1.459-2.791 2.998-3.995 4.602-49.844-37.534-111.91-59.766-179.169-59.766-164.949 0-298.667 133.718-298.667 298.667s133.718 298.667 298.667 298.667zM426.667 810.667c-117.821 0-213.333-95.513-213.333-213.333s95.513-213.333 213.333-213.333c117.821 0 213.333 95.513 213.333 213.333s-95.513 213.333-213.333 213.333zM426.667 725.333c21.881 0 39.915-16.471 42.38-37.691l0.287-4.976v-42.667h42.667c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-42.667v-42.667c0-23.564-19.103-42.667-42.667-42.667-21.881 0-39.915 16.471-42.38 37.691l-0.287 4.976v42.667h-42.667c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h42.667v42.667c0 23.564 19.103 42.667 42.667 42.667z" />
<glyph unicode="&#xe9d2;" glyph-name="zoomout" d="M426.667 896c164.949 0 298.667-133.718 298.667-298.667 0-67.259-22.232-129.325-59.749-179.25l0.566-0.364 4.020-3.549 213.333-213.333c16.662-16.662 16.662-43.677 0-60.34-15.381-15.381-39.583-16.564-56.32-3.549l-4.020 3.549-213.333 213.333c-1.459 1.459-2.791 2.998-3.995 4.602-49.844-37.534-111.91-59.766-179.169-59.766-164.949 0-298.667 133.718-298.667 298.667s133.718 298.667 298.667 298.667zM426.667 810.667c-117.821 0-213.333-95.513-213.333-213.333s95.513-213.333 213.333-213.333c117.821 0 213.333 95.513 213.333 213.333s-95.513 213.333-213.333 213.333zM512 640c23.564 0 42.667-19.103 42.667-42.667 0-21.881-16.471-39.915-37.691-42.38l-4.976-0.287h-170.667c-23.564 0-42.667 19.103-42.667 42.667 0 21.881 16.471 39.915 37.691 42.38l4.976 0.287h170.667z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

Binary file not shown.

View File

@ -399,7 +399,8 @@ export default class AppMediaViewerBase<
},
verifyTouchTarget: (e) => {
// * Fix for seek input
if(findUpClassName(e.target, 'ckin__controls') ||
if(isFullScreen() ||
findUpClassName(e.target, 'ckin__controls') ||
findUpClassName(e.target, 'media-viewer-caption') ||
(findUpClassName(e.target, 'media-viewer-topbar') && e.type !== 'wheel')) {
return false;

View File

@ -36,6 +36,7 @@ import wrapSentTime from './wrappers/sentTime';
import getMediaFromMessage from '../lib/appManagers/utils/messages/getMediaFromMessage';
import appDownloadManager from '../lib/appManagers/appDownloadManager';
import wrapPhoto from './wrappers/photo';
import {doubleRaf} from '../helpers/schedulers';
rootScope.addEventListener('messages_media_read', ({mids, peerId}) => {
mids.forEach((mid) => {
@ -163,13 +164,6 @@ async function wrapVoiceMessage(audioEl: AudioElement) {
const {svg, container: svgContainer, availW} = createWaveformBars(waveform, doc.duration);
const audioControlsDiv = document.createElement('div');
audioControlsDiv.classList.add('audio-controls');
const audioTimelineDiv = document.createElement('div');
audioTimelineDiv.classList.add('audio-timeline');
audioControlsDiv.append(audioTimelineDiv);
const fakeSvgContainer = svgContainer.cloneNode(true) as HTMLElement;
fakeSvgContainer.classList.add('audio-waveform-fake');
svgContainer.classList.add('audio-waveform-background');
@ -180,66 +174,49 @@ async function wrapVoiceMessage(audioEl: AudioElement) {
const timeDiv = document.createElement('div');
timeDiv.classList.add('audio-time');
audioTimelineDiv.append(waveformContainer, timeDiv);
audioEl.append(waveformContainer, timeDiv);
audioEl.append(audioControlsDiv);
const isPremium: boolean = rootScope.premium;
if (isPremium) {
if(audioEl.transcriptionState !== undefined) {
audioEl.classList.add('can-transcribe');
const speechRecognitionDiv = document.createElement('div');
speechRecognitionDiv.classList.add('audio-to-text-button');
const speechRecognitionIcon = document.createElement('span');
speechRecognitionIcon.innerHTML = '→A';
speechRecognitionIcon.classList.add('tgico-transcribe');
const speechRecognitionLoader = document.createElement('div');
speechRecognitionLoader.classList.add('loader');
speechRecognitionLoader.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 24"><style></style><rect fill="transparent" stroke-width="3" stroke-linejoin="round" rx="6" ry="6" stroke="var(--message-out-primary-color)" stroke-dashoffset="1" stroke-dasharray="32,68" width="32" height="24"></rect></svg>'
speechRecognitionDiv.append(speechRecognitionIcon, speechRecognitionLoader);
speechRecognitionLoader.innerHTML = '<svg class="audio-transcribe-outline" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 24"><rect class="audio-transcribe-outline-rect" fill="transparent" stroke-width="3" stroke-linejoin="round" rx="6" ry="6" stroke="var(--message-primary-color)" stroke-dashoffset="1" stroke-dasharray="32,68" width="32" height="24"></rect></svg>'
speechRecognitionDiv.append(speechRecognitionIcon);
const speechTextDiv = document.createElement('div');
speechTextDiv.innerHTML = '';
speechTextDiv.classList.add('audio-to-text');
speechTextDiv.style.display = 'none';
speechRecognitionDiv.onclick = async () => {
if (audioEl.transcriptionState == 0) {
if (speechTextDiv.innerHTML !== '') {
speechTextDiv.style.display = 'block';
speechRecognitionIcon.innerHTML = '^';
//TODO: State to enum
speechRecognitionDiv.onclick = () => {
const speechTextDiv = audioEl.parentElement.querySelector<HTMLElement>('.audio-transcribed-text');
if(audioEl.transcriptionState === 0) {
if(speechTextDiv) {
speechTextDiv.classList.remove('hide');
speechRecognitionIcon.classList.remove('tgico-transcribe');
speechRecognitionIcon.classList.add('tgico-up');
// TODO: State to enum
audioEl.transcriptionState = 2;
} else {
audioEl.transcriptionState = 1;
speechRecognitionLoader.classList.add('active');
let transcription;
try {
transcription = await audioEl.managers.appMessagesManager.transcribeAudio(message);
} catch(err) {
speechRecognitionLoader.classList.remove('active');
audioEl.transcriptionState = 0;
return;
}
if (transcription.pFlags.pending === true) {
return;
}
speechTextDiv.innerHTML = transcription.text;
speechTextDiv.style.display = 'block';
speechRecognitionIcon.innerHTML = '^';
speechRecognitionLoader.classList.remove('active');
audioEl.transcriptionState = 2;
!speechRecognitionLoader.parentElement && speechRecognitionDiv.append(speechRecognitionLoader);
doubleRaf().then(() => {
if(audioEl.transcriptionState === 1) {
speechRecognitionLoader.classList.add('active');
}
});
audioEl.managers.appMessagesManager.transcribeAudio(message).catch(noop);
}
} else if (audioEl.transcriptionState == 2) {
//Hide transcription
speechRecognitionIcon.innerHTML = '→A';
speechTextDiv.style.display = 'none';
} else if(audioEl.transcriptionState === 2) {
// Hide transcription
speechTextDiv.classList.add('hide');
speechRecognitionIcon.classList.remove('tgico-up');
speechRecognitionIcon.classList.add('tgico-transcribe');
audioEl.transcriptionState = 0;
}
};
audioControlsDiv.append(speechRecognitionDiv);
audioEl.append(speechTextDiv);
audioEl.append(speechRecognitionDiv);
}
let progress = svg as any as HTMLElement;
@ -493,7 +470,7 @@ export default class AudioElement extends HTMLElement {
public lazyLoadQueue: LazyLoadQueue;
public loadPromises: Promise<any>[];
public managers: AppManagers;
public transcriptionState: number = 0;
public transcriptionState: number;
private listenerSetter = new ListenerSetter();
private onTypeDisconnect: () => void;

View File

@ -620,27 +620,64 @@ export default class ChatBubbles {
bubble.classList.add('is-error');
});
this.listenerSetter.add(rootScope)('message_transcribed', async({peerId, mid, text}) => {
console.log(peerId, mid, text);
this.listenerSetter.add(rootScope)('message_transcribed', ({peerId, mid, text, pending}) => {
if(peerId !== this.peerId) return;
const bubble = this.bubbles[mid];
if(!bubble) return;
//TODO: Move it to AudioElement method `finishVoiceTranscription`
// TODO: Move it to AudioElement method `finishVoiceTranscription`
const audioElement = bubble.querySelector('audio-element') as AudioElement;
if (audioElement) {
const speechTextDiv = audioElement.querySelector('.audio-to-text') as HTMLElement;
const speechRecognitionIcon = audioElement.querySelector('.audio-to-text-button span');
const speechRecognitionLoader = audioElement.querySelector('.loader');
if (speechTextDiv && speechRecognitionIcon) {
speechTextDiv.innerHTML = text;
speechTextDiv.style.display = 'block';
speechRecognitionIcon.innerHTML = '^';
speechRecognitionLoader.classList.remove('active');
audioElement.transcriptionState = 2;
}
if(!audioElement) {
return;
}
// const scrollSaver = this.createScrollSaver(false);
// scrollSaver.save();
const speechTextDiv = bubble.querySelector('.document-wrapper') as HTMLElement;
const speechRecognitionIcon = audioElement.querySelector('.audio-to-text-button span');
const speechRecognitionLoader = audioElement.querySelector('.loader');
if(speechTextDiv && speechRecognitionIcon) {
let transcribedText = speechTextDiv.querySelector('.audio-transcribed-text');
if(!transcribedText) {
transcribedText = document.createElement('div');
transcribedText.classList.add('audio-transcribed-text');
transcribedText.append(document.createTextNode(''));
audioElement.before(transcribedText);
if(pending) {
const dots = document.createElement('span');
dots.classList.add('audio-transcribing-dots');
transcribedText.append(dots);
}
} else if(!pending) {
const dots = transcribedText.querySelector('.audio-transcribing-dots');
dots?.remove();
}
if(!text && !pending && !transcribedText.classList.contains('has-some-text')) {
transcribedText.append(i18n('Chat.Voice.Transribe.Error'));
transcribedText.classList.add('is-error');
} else {
transcribedText.classList.add('has-some-text');
transcribedText.firstChild.textContent = text;
}
speechRecognitionIcon.classList.remove('tgico-transcribe');
speechRecognitionIcon.classList.add('tgico-up');
if(!pending && speechRecognitionLoader) {
speechRecognitionLoader.classList.remove('active');
setTimeout(() => {
speechRecognitionLoader.remove();
}, 300);
}
audioElement.transcriptionState = 2;
}
// scrollSaver.restore();
});
this.listenerSetter.add(rootScope)('album_edit', ({peerId, messages, deletedMids}) => {
@ -4278,7 +4315,8 @@ export default class ChatBubbles {
_: 'inputMessagesFilterEmpty'
}
},
fontSize: rootScope.settings.messagesTextSize
fontSize: rootScope.settings.messagesTextSize,
canTranscribeVoice: true
});
preview.append(docDiv);
preview.classList.add('preview-with-document');
@ -4505,7 +4543,8 @@ export default class ChatBubbles {
} : undefined,
sizeType: 'documentName',
fontSize: rootScope.settings.messagesTextSize,
richTextFragment: richText
richTextFragment: richText,
canTranscribeVoice: true
});
if(newNameContainer) {

View File

@ -108,7 +108,7 @@ export default class StickersHelper extends AutocompleteHelper {
if(!this.onChangeScreen) {
this.onChangeScreen = () => {
const width = (this.list.childElementCount * mediaSizes.active.popupSticker.width) + (this.list.childElementCount - 1 * 1);
const width = (this.list.childElementCount * mediaSizes.active.esgSticker.width) + (this.list.childElementCount - 1 * 1);
this.list.style.width = width + 'px';
};
mediaSizes.addEventListener('changeScreen', this.onChangeScreen);

View File

@ -43,7 +43,7 @@ rootScope.addEventListener('document_downloading', (docId) => {
});
});
export default async function wrapDocument({message, withTime, fontWeight, voiceAsMusic, showSender, searchContext, loadPromises, autoDownloadSize, lazyLoadQueue, sizeType, managers = rootScope.managers, cacheContext, fontSize, getSize}: {
export default async function wrapDocument({message, withTime, fontWeight, voiceAsMusic, showSender, searchContext, loadPromises, autoDownloadSize, lazyLoadQueue, sizeType, managers = rootScope.managers, cacheContext, fontSize, getSize, canTranscribeVoice}: {
message: Message.message,
withTime?: boolean,
fontWeight?: number,
@ -57,7 +57,8 @@ export default async function wrapDocument({message, withTime, fontWeight, voice
managers?: AppManagers,
cacheContext?: ThumbCache,
fontSize?: number,
getSize?: () => number
getSize?: () => number,
canTranscribeVoice?: boolean
}): Promise<HTMLElement> {
fontWeight ??= 500;
sizeType ??= '' as any;
@ -73,6 +74,7 @@ export default async function wrapDocument({message, withTime, fontWeight, voice
audioElement.noAutoDownload = noAutoDownload;
audioElement.lazyLoadQueue = lazyLoadQueue;
audioElement.loadPromises = loadPromises;
if(canTranscribeVoice && doc.type === 'voice') audioElement.transcriptionState = 0;
(audioElement as any).getSize = getSize;
if(voiceAsMusic) audioElement.voiceAsMusic = voiceAsMusic;

View File

@ -13,7 +13,7 @@ import Chat from '../chat/chat';
import LazyLoadQueue from '../lazyLoadQueue';
import wrapDocument from './document';
export default async function wrapGroupedDocuments({albumMustBeRenderedFull, message, bubble, messageDiv, chat, loadPromises, autoDownloadSize, lazyLoadQueue, searchContext, useSearch, sizeType, managers, fontWeight, fontSize, richTextFragment}: {
export default async function wrapGroupedDocuments({albumMustBeRenderedFull, message, bubble, messageDiv, chat, loadPromises, autoDownloadSize, lazyLoadQueue, searchContext, useSearch, sizeType, managers, fontWeight, fontSize, richTextFragment, canTranscribeVoice}: {
albumMustBeRenderedFull: boolean,
message: any,
messageDiv: HTMLElement,
@ -29,7 +29,8 @@ export default async function wrapGroupedDocuments({albumMustBeRenderedFull, mes
managers?: AppManagers,
fontWeight?: number,
fontSize?: number,
richTextFragment?: DocumentFragment
richTextFragment?: DocumentFragment,
canTranscribeVoice?: boolean
}) {
let nameContainer: HTMLElement;
const mids = albumMustBeRenderedFull ? await chat.getMidsByMid(message.mid) : [message.mid];
@ -48,7 +49,8 @@ export default async function wrapGroupedDocuments({albumMustBeRenderedFull, mes
sizeType,
managers,
fontWeight,
fontSize
fontSize,
canTranscribeVoice
});
const container = document.createElement('div');

View File

@ -21,7 +21,7 @@ const App = {
version: process.env.VERSION,
versionFull: process.env.VERSION_FULL,
build: +process.env.BUILD,
langPackVersion: '0.8.5',
langPackVersion: '0.8.6',
langPack: 'webk',
langPackCode: 'en',
domains: MAIN_DOMAINS,

2
src/global.d.ts vendored
View File

@ -64,7 +64,7 @@ declare global {
'VOICE_MESSAGES_FORBIDDEN' | 'PHOTO_INVALID_DIMENSIONS' | 'PHOTO_SAVE_FILE_INVALID' |
'USER_ALREADY_PARTICIPANT' | 'USERNAME_INVALID' | 'USERNAME_PURCHASE_AVAILABLE' | 'USERNAMES_ACTIVE_TOO_MUCH' |
'BOT_INVALID' | 'USERNAME_NOT_OCCUPIED' | 'PINNED_TOO_MUCH' | 'LOCATION_INVALID' |
'FILE_ID_INVALID' | 'CHANNEL_FORUM_MISSING';
'FILE_ID_INVALID' | 'CHANNEL_FORUM_MISSING' | 'TRANSCRIPTION_FAILED';
type ErrorType = LocalErrorType | ServerErrorType;

View File

@ -1060,6 +1060,7 @@ const lang = {
'Chat.Message.ViewGroup': 'VIEW GROUP',
'Chat.Message.Sponsored.What': 'What are sponsored messages?',
'Chat.Message.Sponsored.Link': 'https://promote.telegram.org',
'Chat.Voice.Transribe.Error': 'No speech detected',
'Checkout.2FA.Text': 'Saving payment details is only available with 2-Step Verification.',
'Checkout.NewCard.CardholderNamePlaceholder': 'Cardholder Name',
'Checkout.PasswordEntry.Title': 'Payment Confirmation',

View File

@ -524,25 +524,43 @@ export class AppMessagesManager extends AppManager {
});
}
public async transcribeAudio(message: any): Promise<MessagesTranscribedAudio> {
console.log('Method called');
public transcribeAudio(message: Message.message): Promise<MessagesTranscribedAudio> {
const {id, peerId} = message;
let promise: Promise<MessagesTranscribedAudio>, params: any;
if(peerId) {
promise = this.apiManager.invokeApiSingleProcess({
method: 'messages.transcribeAudio',
params: params = {
peer: this.appPeersManager.getInputPeerById(peerId),
msg_id: id
},
processResult: (result) => {
console.log(result);
return result;
}
const process = (result: MessagesTranscribedAudio) => {
this.apiUpdatesManager.processLocalUpdate({
_: 'updateTranscribedAudio',
msg_id: message.id,
peer: this.appPeersManager.getOutputPeer(peerId),
pFlags: result.pFlags,
text: result.text,
transcription_id: result.transcription_id
});
}
return promise;
};
return this.apiManager.invokeApiSingleProcess({
method: 'messages.transcribeAudio',
params: {
peer: this.appPeersManager.getInputPeerById(peerId),
msg_id: id
},
processResult: (result) => {
process(result);
return result;
},
processError: (error) => {
if(error.type === 'TRANSCRIPTION_FAILED') {
process({
_: 'messages.transcribedAudio',
transcription_id: 0,
text: '',
pFlags: {}
});
}
throw error;
}
});
}
public async sendText(peerId: PeerId, text: string, options: MessageSendingParams & Partial<{
@ -5272,13 +5290,11 @@ export class AppMessagesManager extends AppManager {
};
private onUpdateTranscribedAudio = (update: Update.updateTranscribedAudio) => {
if (update.pFlags.pending === true) return;
const peerId = this.appPeersManager.getPeerId(update.peer);
const text = update.text;
const mid = generateMessageId(update.msg_id);
this.rootScope.dispatchEvent('message_transcribed', {peerId, mid, text});
this.rootScope.dispatchEvent('message_transcribed', {peerId, mid, text, pending: update.pFlags.pending});
};
public setDialogToStateIfMessageIsTop(message: MyMessage) {

View File

@ -73,7 +73,7 @@ export type BroadcastEvents = {
'message_edit': {storageKey: MessagesStorageKey, peerId: PeerId, mid: number, message: MyMessage},
'message_sent': {storageKey: MessagesStorageKey, tempId: number, tempMessage: any, mid: number, message: MyMessage},
'message_error': {storageKey: MessagesStorageKey, tempId: number, error: ApiError},
'message_transcribed': {peerId: PeerId, mid: number, text: string},
'message_transcribed': {peerId: PeerId, mid: number, text: string, pending?: boolean},
'messages_views': {peerId: PeerId, mid: number, views: number}[],
'messages_reactions': {message: Message.message, changedResults: ReactionCount[]}[],
'messages_pending': void,

View File

@ -428,7 +428,7 @@
// &.audio-48 {
--icon-size: 3rem;
--icon-margin: .5625rem;
min-height: var(--icon-size);
height: var(--icon-size);
.audio-details {
margin-top: 3px;
@ -439,64 +439,72 @@
margin-bottom: -2px;
}
.audio-controls {
display: flex;
align-items: flex-start;
gap: .25em;
body.is-premium &.can-transcribe {
padding-inline-end: 2.25rem;
.audio-to-text-button {
background: var(--message-transcribe-button);
width: max-content;
margin-top: 0.2rem;
font-size: .8em;
border-radius: 0.3rem;
width: 2rem;
height: 1.5rem;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
}
}
.audio-to-text-button {
background: var(--light-filled-message-primary-color);
color: var(--message-primary-color);
width: max-content;
font-size: 1.1875rem;
border-radius: 0.3125rem;
width: 2rem;
height: 1.5rem;
display: none;
align-items: center;
justify-content: center;
position: absolute;
overflow: hidden;
align-self: flex-end;
margin-right: -2.25rem;
margin-top: -1rem;
span {
line-height: 0;
letter-spacing: .15em;
}
.loader {
@include hover() {
&:after {
content: " ";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity .2s;
&.active {
opacity: 1;
}
svg {
width: 100%;
height: 100%;
@keyframes loading {
from { stroke-dashoffset: 100 }
to { stroke-dashoffset: 0 }
}
rect {
animation: 1s ease-in-out loading infinite;
}
}
border-radius: inherit;
background-color: var(--message-primary-color);
opacity: $hover-alpha;
}
}
}
.loader {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity .2s;
.audio-to-text {
margin-left: calc(var(--icon-size)*-1 - var(--icon-margin) - var(--padding));
margin-top: 1em;
margin-bottom: 0.6em;
&.active {
opacity: 1;
}
.audio-transcribe-outline {
width: 100%;
height: 100%;
@keyframes loading {
from { stroke-dashoffset: 100 }
to { stroke-dashoffset: 0 }
}
&-rect {
animation: 1s ease-in-out loading infinite;
}
}
}
}
.part {

View File

@ -1409,9 +1409,9 @@ $bubble-border-radius-big: 12px;
font-size: 0;
}
}
@include respond-to(handhelds) {
min-height: 2.375rem;
height: 2.375rem;
--icon-margin: .6875rem;
.audio-details {
@ -1419,6 +1419,10 @@ $bubble-border-radius-big: 12px;
margin-bottom: 0;
}
.audio-to-text-button {
margin-top: -.875rem;
}
.audio-subtitle {
margin-top: -1px;
}
@ -2431,6 +2435,56 @@ $bubble-border-radius-big: 12px;
margin-top: 1.75rem;
}
}
.audio-transcribed-text {
margin-top: .25rem;
&.is-error {
color: var(--message-primary-color);
}
.audio-transcribing-dots {
position: relative;
&:before,
&:after {
content: "...";
}
&:before {
opacity: 0;
}
&:after {
position: absolute;
right: 0;
left: 0;
animation: 1.5s linear audio-dots infinite;
}
}
}
.document-message + .audio-transcribed-text {
margin-bottom: .75rem;
}
}
@keyframes audio-dots {
0% {
content: "";
}
33% {
content: ".";
}
66% {
content: "..";
}
100% {
content: "...";
}
}
// @keyframes arrow-shake {
@ -2718,10 +2772,6 @@ $bubble-border-radius-big: 12px;
color: var(--message-out-primary-color);
}
.audio-to-text-button {
background: var(--message-transcribe-button-out);
}
/* html:not(.is-firefox) */ &-wrapper {
@include respond-to(medium-screens) {
transform: scale(1) translateX(calc((var(--chat-input-size) + #{$btn-send-margin}) * -1));

View File

@ -202,6 +202,7 @@
padding-inline-start: var(--padding-left);
display: flex;
flex-direction: column;
justify-content: center;
cursor: pointer;
// position: relative;
user-select: none;

View File

@ -256,8 +256,6 @@ $chat-input-inner-padding-handhelds: .25rem;
--light-filled-message-primary-color: var(--light-filled-primary-color);
--message-secondary-color: var(--secondary-color);
--message-error-color: var(--danger-color);
--message-transcribe-button: #e8f3ff;
--message-transcribe-button-out: #cceebf;
--message-out-link-color: var(--link-color);
--message-out-status-color: var(--message-out-primary-color);
@ -324,8 +322,6 @@ $chat-input-inner-padding-handhelds: .25rem;
--message-checkbox-border-color: #fff;
--message-secondary-color: var(--secondary-color);
--message-error-color: #fff;
--message-transcribe-button: #2a2a3c;
--message-transcribe-button-out: #8373d3;
--message-out-link-color: #fff;
--message-out-status-color: #fff;

View File

@ -3,9 +3,9 @@
@font-face {
font-family: '#{$tgico-font-family}';
src:
url('#{$tgico-font-path}/#{$tgico-font-family}.ttf?ivbp49') format('truetype'),
url('#{$tgico-font-path}/#{$tgico-font-family}.woff?ivbp49') format('woff'),
url('#{$tgico-font-path}/#{$tgico-font-family}.svg?ivbp49##{$tgico-font-family}') format('svg');
url('#{$tgico-font-path}/#{$tgico-font-family}.ttf?2fcrrv') format('truetype'),
url('#{$tgico-font-path}/#{$tgico-font-family}.woff?2fcrrv') format('woff'),
url('#{$tgico-font-path}/#{$tgico-font-family}.svg?2fcrrv##{$tgico-font-family}') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
@ -992,6 +992,11 @@
content: $tgico-topics;
}
}
.tgico-transcribe {
&:before {
content: $tgico-transcribe;
}
}
.tgico-unarchive {
&:before {
content: $tgico-unarchive;

View File

@ -190,22 +190,23 @@ $tgico-textedit: "\e9bc";
$tgico-tip: "\e9bd";
$tgico-tools: "\e9be";
$tgico-topics: "\e9bf";
$tgico-unarchive: "\e9c0";
$tgico-underline: "\e9c1";
$tgico-unmute: "\e9c2";
$tgico-unpin: "\e9c3";
$tgico-unread: "\e9c4";
$tgico-up: "\e9c5";
$tgico-user: "\e9c6";
$tgico-username: "\e9c7";
$tgico-videocamera: "\e9c8";
$tgico-videocamera_crossed_filled: "\e9c9";
$tgico-videocamera_filled: "\e9ca";
$tgico-videochat: "\e9cb";
$tgico-volume_down: "\e9cc";
$tgico-volume_mute: "\e9cd";
$tgico-volume_off: "\e9ce";
$tgico-volume_up: "\e9cf";
$tgico-zoomin: "\e9d0";
$tgico-zoomout: "\e9d1";
$tgico-transcribe: "\e9c0";
$tgico-unarchive: "\e9c1";
$tgico-underline: "\e9c2";
$tgico-unmute: "\e9c3";
$tgico-unpin: "\e9c4";
$tgico-unread: "\e9c5";
$tgico-up: "\e9c6";
$tgico-user: "\e9c7";
$tgico-username: "\e9c8";
$tgico-videocamera: "\e9c9";
$tgico-videocamera_crossed_filled: "\e9ca";
$tgico-videocamera_filled: "\e9cb";
$tgico-videochat: "\e9cc";
$tgico-volume_down: "\e9cd";
$tgico-volume_mute: "\e9ce";
$tgico-volume_off: "\e9cf";
$tgico-volume_up: "\e9d0";
$tgico-zoomin: "\e9d1";
$tgico-zoomout: "\e9d2";