rubysounds 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rubysounds.rb +83 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 762fed59395e62f0e318afdb8ddd05f057feb888
4
+ data.tar.gz: d1d222687a3431757d3961f9c0a118e91f7a2bac
5
+ SHA512:
6
+ metadata.gz: 073a49220317ea42ca3b81012302e96aa44bc809c96f172481f2b82a0e9fe4b11b8a966f8a6ecb8bbc42cef68f71d48f81ae5c56fb66a3f63e31d369b3e7c1ad
7
+ data.tar.gz: 4e1ab59cff8669032c956426e4a52e37448424f4ec9439a75d6755699a6bc188c99e2c4909a549ee7d12dc605349efc3f8d8ad4b210fc515af196e6383ce2643
data/lib/rubysounds.rb ADDED
@@ -0,0 +1,83 @@
1
+ require 'net/http'
2
+ require 'win32/sound'
3
+ include Win32
4
+
5
+ class Speech
6
+ GOOGLE_TRANSLATE_URL = 'http://translate.google.com/translate_tts'.freeze
7
+
8
+ attr_accessor :text, :lang
9
+
10
+ def initialize(text, lang = 'en')
11
+ @text = text
12
+ @lang = lang
13
+ end
14
+
15
+ def self.load(file_path, lang = 'en')
16
+ f = File.open(file_path)
17
+ new f.read.encode('UTF-16be', invalid: :replace, replace: '?').encode('UTF-8'), lang
18
+ end
19
+
20
+ def save(file_path)
21
+ uri = URI(GOOGLE_TRANSLATE_URL)
22
+
23
+ response = []
24
+
25
+ sentences = text.split(/[,.\r\n]/i)
26
+ sentences.reject!(&:empty?)
27
+ sentences.map! { |t| divide(t.strip) }.flatten!
28
+
29
+ sentences.each_with_index do |q, _idx|
30
+ uri.query = URI.encode_www_form(
31
+ ie: 'UTF-8',
32
+ q: q,
33
+ tl: lang,
34
+ total: sentences.length,
35
+ idx: 0,
36
+ textlen: q.length,
37
+ client: 'tw-ob',
38
+ prev: 'input'
39
+ )
40
+
41
+ res = Net::HTTP.get_response(uri)
42
+
43
+ next unless res.is_a?(Net::HTTPSuccess)
44
+
45
+ response << res.body.force_encoding(Encoding::UTF_8)
46
+ end
47
+
48
+ File.open(file_path, 'wb') do |f|
49
+ f.write response.join
50
+ return f.path
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def divide(text)
57
+ return text if text.length < 150
58
+
59
+ attempts = text.length / 150.0
60
+ starts = 0
61
+ arr = []
62
+
63
+ attempts.ceil.times do
64
+ ends = starts + 150
65
+ arr << text[starts...ends]
66
+ starts = ends
67
+ end
68
+
69
+ arr
70
+ end
71
+ end
72
+
73
+ def speak(text)
74
+ Speech.new(text).save('temp.wav')
75
+ #system 'vlc/vlc.exe --intf dummy temp.wav'
76
+ system 'vlc --play-and-exit --intf dummy temp.wav'
77
+ #pid = fork{ exec 'mpg123','-q', temp.wav }
78
+ #Sound.play("temp.wav")
79
+ end
80
+
81
+ def beep(a, b)
82
+ Sound.beep(a, b)
83
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubysounds
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Alessandro Norfo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Ruby library to manage sounds using Google Translate & command line VLC.
14
+ email: ale.norfo@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/rubysounds.rb
20
+ homepage: https://github.com/sprintingkiwi/rubysounds
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.5.1
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Ruby gem to reproduce sounds
44
+ test_files: []