Speech to text translate trong js

Mọi người cho em hỏi là em có đoạn code js như sau:

let text = ["Nhìn ", "Hiếu"];
let audio = "";
for (let i = 0; i < text.length; i++) {
    audio += text[i];
}
console.log(audio);
audio = encodeURIComponent(audio);
console.log(audio);
var url = "https://translate.google.com.vn/translate_tts?ie=UTF-8&q=" + audio + "&tl=vi&client=tw-ob";
console.log(url);
$('audio').attr('src', url).get(0).play();

Khi em chạy thì ra như vầy: image Tuy nhiên khi em lấy link đó f5 lại thì nó lại chạy được. Có cách nào để nó chạy được từ đầu không ạ ?

1 Like

Sau một hồi tìm hiểu thì mới phát hiện ra là nếu muốn play một file audio nằm bên ngoài website thì phải dùng <source> element bên trong <audio>. Trình duyệt củ chuối vl :V.
Kết quả:

Code HTML:

<audio>
  <source src="https://translate.google.com.vn/translate_tts?ie=UTF-8&q=xin%20ch%C3%A0o&tl=vi&client=tw-ob">
</audio>
<!-- Muốn co thanh điều khiển thì thêm controls vào audio -->

Còn code Javascript thì em tự viết nha, cứ dựa vào đoạn code trên là được.


P/s: Test lại thì phát hiện ra không phải do trình duyệt củ chuối mà là do nếu truy cập lần đầu thì không có cái cookie gì đó, không có nó là server trả 404. Phải truy cập vào trang Google dịch thì mới có cookie để server trả về đoạn audio kia :V.

P/s 2: Đã test lại tiếp, trình duyệt vẫn cũ chuối và vẫn phải dùng cái đoạn trên :rofl:.
Kết luận: Không truy cập từ trước vào trang Google dịch và không code như kiểu trên là bị lỗi :V.

9 Likes

code HTML của em :

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<script src="TextToSpeech.js"></script>

Phải làm sau để html lấy source từ url trong file js vậy anh

HTML là một ngôn ngữ nên không có chuyện “HTML lấy source” hay tương tự vậy. Việc chạy code HTML, JS, CSS là do một số thành phần bên trong trình duyệt đảm nhiệm, ví dụ như việc chạy code Javascript là do các Javascript engine như V8 đảm nhiệm.

Lấy “source từ url trong file js” là sao? Dù có viết trực tiếp code JS trong script element, hay đặt đường dẫn của file JS chứa đoạn code đó vào trong thuộc tính src của script element thì trình duyệt (hay đúng hơn là JS Engine) đều thực thi đoạn code đó thôi.

5 Likes

ý em là em có tạo ra được url trong js thì làm sao để chạy ấy anh. Do em mới bắt đầu học js nên mong anh thông cảm

Để chạy thì dùng play method thôi? Nói chung là chỉ thay đổi một chút ở đoạn code của em thôi, thay vì gán trực tiếp url cho thuộc tính src của audio thì thêm source element vào nó thôi (trong jQuery có method append).

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?