PDA

View Full Version : I'm thinking about making an official italian soundpack



MatteAce
07-05-2018, 04:50 PM
I'm a sound engineer, I got a studio, and I'm thinking about making an official italian soundpack. I know there's one already but it's really restricted and it hasn't been updated for ages.

Where do I start? What is the quickest way to do it technically? What guidelines should I follow to keep it updatable in a simple way?

Sparten
07-05-2018, 04:55 PM
Huge balls detected^^

Its a giant task, i'm sure Jim will help you out with it, but again its a massive commitment to record a soundpack for CC. I think(qoute me one it) there are more then 20k single sounds.

mr_belowski
07-05-2018, 05:01 PM
26047, to be precise. Shit. I need to get out more :|

MatteAce
07-05-2018, 05:16 PM
not scared! recording the samples is the least effort for me, I'm used to record and edit in the studio! I know it's massive but I think it's doable given the right amount of months.

What I'm most worried about is how to put them together, how to account for the grammar, how to prepare a decent voice recognition and how to make it easy to update.

Sparten
07-05-2018, 05:35 PM
not scared!
I am, Its them balls you got. :eek:

Edit:
Better put some more text here instead of hiding.
If you just worry about recording the sounds then i promise you we will take care of the "easy" part.

mr_belowski
07-05-2018, 05:39 PM
The grammar differences are mainly in the number reader. I did some work to support gianfranco's Italian pack by allowing for different inflection in the numbers depending on context but it was a couple of years ago.

The biggest issue was the pace that cc changes. I'm adding new stuff most weeks, which makes it hard to keep the language packs synchronised. But I'm happy to help where I can

MatteAce
07-05-2018, 06:01 PM
yeah I tried to hack into Gianfranco voice recognition definition file and I’ve noticed that it’s not super easy to account for grammar when you get to the more complex phrases about who’s in front and back, etc. but surely you can do better than me!

if I were to just record the files, would you guys be okay for real with putting them together?

so... where do I start? should I open the wav directory and start re-recording them?
what kind of procedure you followed to record them? how short do I have to cut them?

I was also thinking about using a supercardioid microphone for vocals and then low-res the result, then I thought that maybe a headset mike is better at that because no engineer is talking through an expensive microphone... how do you guys do?

also, can I prioritize the work to avoid a full release only? like we could get some core functions first to release it, and then start expanding it.

mr_belowski
07-05-2018, 06:43 PM
yes, the grammar is tricky but Gianfranco managed to get most of it sounding good, and I made a few code changes to support Italian grammar. I can make a few more if necessary but it does rather complicate things :).

I'd be happy to support the packaging and stuff. There's some fairly basic language pack support in the app but it's not been used much and could probably do with improving, which i'm happy to do.

In terms of recording, I use an old vocal mic from when I used to dress up as Captain Kirk and sing + play in my old punk-rock 3 piece (a Shure SM58) with a little Behringer pre-amp. I record the raw sounds clean with no clipping or noise, then I cut them up and trim, normalise, compress and filter. I have an Audacity filter chain for this. The sounds are trimmed but not too tight - where a sound is going to be combined with others, I might trim it a little tighter but generally I just let the tools in Audacity detect the start and end of each audio clip and trim automatically. It's a lot easier to make a nice original sound like a convincing low-res sound so if you have decent kit, i strongly recommend using it.

Doing the work in stages is fine. Most of the 26000+ sound files are driver names or personalisations, neither of which are really needed. There are about 1000 number sounds, 4500 regular sounds (although this number includes 4 or 5 versions of each sound), and about 1500 sounds for optional additional spotter voices. So the actual number of recordings required to make a working sound pack is much lower than the 26000+ sounds in the current full set

MatteAce
07-06-2018, 02:40 AM
alright then, I might really be up for the task!

where do you suggest I should start? Should I just duplicate the sounds\voice folder and start with the first subfolder?

boy it will sound weird to have myself as a spotter...

mr_belowski
07-06-2018, 07:27 AM
i'd probably start with the default spotter sounds (the /spotter/ folder). Then maybe the numbers

MatteAce
07-06-2018, 06:05 PM
alright I've run a quick test to choose the plugin chain, in the attached file you can hear several takes for the car_inside line.

I'll re-record them anyway because I had my PC on and the fans were running crazy, but I wanted to try if the plugins were right and if I could get a good result. What do you think? Maybe too distorted?

I've noticed Gianfranco always says "car left" in italian, while you just say "car low" or "car inside", can I also say "car left"? right now I'm just saying "it's on the inside", and I'm avoiding "car low" because it sounds really bad in italian.

I'm also focusing on keeping the messages very short, because I've noticed Gianfranco to be a bit too calm and long to say things and during the race it can be irritating, to me at least.

Anyway if this works it won't take very long to record the files, it's actually very quick! I just record, cut the recording and bounce in place to export the wav.

140

mr_belowski
07-06-2018, 07:11 PM
I'll have a listen to the files tomorrow, but regarding the spotter messages, remember there are 2 sets for a car on your left - on road courses its always "left side" or "car left", for ovals it's always "inside", "car inside", "car low" etc

MatteAce
07-07-2018, 03:49 AM
well it looks like it's quicker than I thought! I finished all the spotter folder in about half an hour, while learning how to do it.

here it is, how does it sounds? tomorrow I'll try to replace the Gianfranco files and see how it works while racing

https://www.dropbox.com/s/qnrq2aej8yg3amh/spotter.zip?dl=1

MatteAce
07-07-2018, 05:49 PM
okay I tested the spotter a bit and it looks like I overdid with the distortion a bit. I'll work it over to clean the result!

MatteAce
07-10-2018, 09:49 PM
alright, I'm slowly tweaking the sound effects, now the distortion sounds okay, but the voice is still too far away. I will have to experiment a bit with different simulated speakers before moving forward. In the meanwhile I've recorded the whole numbers folder, but I'm not too sure I did a good job, or it can fit italian. I've seen Gianfranco had a different numbers folder, but at the same time it had become incompatible with the new CC versions, like the clock sometimes won't work, some timings will get cut, etc.

I want it to be compatible first, so I am thinking of recording all the files needed by the english CC and then, in case, adding the italian exceptions. Gianfranco instead only recorded what he needed for the IT version to work and left out all the rest. which is understandable, but now it's broken.

Also I'd need to find a method to betatest the voice files... is there a way to force CC to say some phrases?

MatteAce
07-15-2018, 02:12 AM
uhm, you guys? Are you still with me?

Sparten
07-15-2018, 04:14 AM
Yes we are still with you, Jim is on vaication this week, forcing CC to say a specific phrase is a bit tricky and i think your going to need to mess with the source code to do so. i can write you up a small test program where you can put in the sound files you want to combine and have them play like CC would, i'm going to need a few days as I just got home from vaication and need a few days to get sorted.

MatteAce
07-15-2018, 05:48 AM
that would be amazing, thank you! I hope it’s not too much work for you, and that it could be useful to you guys as well, and maybe help someone else who would like to make some additional translation.

I’ve got quite some breakthroughs during the week, I’ve refined the sound chain down to something I really like by changing completely the speaker simulation model and changing to a completely new light distortion. I’ve also added more limiter/maximizer at the end and now the sounds play much louder and clear, very crispy. I gave the spotter a go and it was great, compared to Gianfranco talking (which was good already) sounds much better!

also I’ve completely automated the editing and exporting phase... right now the only lengthy thing is to actually record the phrases :D
I record one folder at a time, when I start recording I repeat the phrase ten or twenty times trying to be as natural as possible, also “acting” a little bit as if I was the engineer.
then Logic cuts the single takes for me cutting all the silence away so I just have to listen to them once more and choose the best, then I just select all the takes for that folder and batch-export them. Logic normalizes, dither them and also numbers the filename for me so it really takes no time to do all of this! I can really focus on doing 10-15 different phrases per folder!

I could record and export the whole “acnowledge” folder in less than an hour :)

Sparten
07-15-2018, 01:17 PM
Ok, i got something in the piplines already, but we might need jim to return from vaication before it can be released.
Are you connected with our discord channel else please join https://discord.gg/RyejNz9 if you use discord.

MatteAce
07-15-2018, 08:54 PM
Ok, i got something in the piplines already, but we might need jim to return from vaication before it can be released.
Are you connected with our discord channel else please join https://discord.gg/RyejNz9 if you use discord.

just joined! cheers!

mr_belowski
07-25-2018, 09:30 AM
ayup :)

Morten added some awesome stuff to today's release that should help you to verify your recordings - see here:

https://github.com/mrbelowski/CrewChiefV4/blob/master/ReadMe_Sound_Test.txt

mr_belowski
07-26-2018, 02:00 PM
i did a little work on the Italian number reader to bring it inline with the English one. To do this, I had to invent some rules and options. These are...


All the number folders are now supported. The Italian number reader can now use numbers of the following forms:

point0 - point9 (for adding tenths to a number of seconds e.g. "one forty two *point three*")
point0seconds - point9seconds (as above with "seconds" at the end, optional, app occasionally uses this variant)

0point1 - 59point9 (seconds and tenths, generally read with no other numbers, e.g. "twelve point seven")
0point1seconds - 9point9seconds (as above with "seconds" at the end, optional, app occasionally uses this variant)

point00 - point99 (for adding hundredths to a number of seconds e.g. "one forty two *point three five*")

1_01 - 2_59 (minutes and seconds, we often add one of the 'point x' or 'point xy' sounds to these)


So you can use the same number folders as the English version. I appreciate that some might not make sense in Italian - you'll need to flag these so I can understand how you might need the behaviour to change.

There's an additional 'inflection' option too. Each of these sound sets can have another version where the folder name ends with _more - e.g.

4point5_more

This applies to pretty much all the number sounds - you can create 2 versions of every sound, one with a normal inflection and one with a rising inflection (as you'd use when there is another word immediately after this sound). These are optional in all cases. There's some logic in the app - if the app thinks there's another sound to come immediately after a number sound (any of these folders), it'll look for a version of that sound folder with '_more' at the end, and use this instead. If this doesn't exist it'll just use the regular folder.

Hopefully the existing logic is mostly OK and you can just add the _more versions that you think you'll need and it'll work OK but I'm expecting to have to do more work here in response to your feedback.

I also appreciate that "one second" / "one minute", etc don't translate directly - we might be OK here, or we might need more folders for "a second" etc.



[edit]

Here's a version of the app that contains these changes

http://crewchief.isnais.de/CrewChiefV4.9.4.4.msi

I've tried to ensure the changes to break Gianfranco's sound pack, but I'm not able to test this

MatteAce
08-17-2018, 07:18 PM
alright, so:


1) numbers_it will be switched to numbers
2) we will keep the 1_23 system, that takes longer to record but it's more naturally sounding

so the time-construction phrase should be:

1_23 + point_4

OR
1_23 + and_4

but since point_4 and and_4 are kind of the same thing (the first is more formal, the second is quicker) I'd say it's useless to keep tons of folders since these are easily interchanged. let's keep a point_4 folder and I'll just put inside both point_4 recordings and and_4 recordings... there shouldn't be any downside to this, am I right?
anyway right now CC won't load the 1_23 folder correctly and will keep looking for a number_seconds_23 folder, and I don't know why

3) the _more suffix is applied to the folders now, shouldn't we apply it to the files instead? 1_more.wav instead of 1_23_more
now that I think of it though, it will be a massive work doubling all the 1_23 files to add the _more... do these files ever get used alone? like, is there ever an instance when CC just says "one twenty three"? I've checked with the test box and it looks it always adds point_4, and_4, seconds or something else at the end. it would be a huge waste of time and space to have to record all the 1_23 files with no inflection just to never use them ever

4) the clock readings right now are "twelve thirtyfour", while in italian it makes more sense to say "twelve AND thirtyfour". also when we say it's one o'clock we don't say "uno", we say "una" (don't fucking ask me why hahaha), so we'll also need an exception there.
more, you say "it's three oh oh" IIRC, while in italian you should just say "it's three". this actually caused the clock in gianfranco's translation to break because he didn't have an oh folder IIRC and the clock was looking for one, so when the clock wanted to construct "three oh four" it would break and stop playing. anyway we say "three and four" so there's no need to add the oh.
last thing, if we also want to make the clock even more natural sounding, we could also add midnight and midday, it's more natural to say it's midnight and 34, or it's midday and 34.
to make it super natural sounding, we would also need an introductory phrase, which in english would sound similar to "it's"... in italian it would be "sono le 15:40", with the only exception thrown when it's midday or midnight which can be "sono le 12" or "sono le 24" or "è mezzanotte" or "è mezzogiorno". clock is also mostly read in 24 hours, almost never in AM/PM but it's not like it's an error.

mr_belowski
08-17-2018, 09:28 PM
I need to take time to answer these questions and I can't do it now. I'll set aside an couple of hours over the weekend to go through this with a clear head. It would make things easier for me if you could send me part or all of your Italian pack so I can reproduce what you're seeing here

MatteAce
08-17-2018, 09:38 PM
absolutely! let me pack it up, I'll dropbox you that.

it would make sense that you take your time and set a viable method for translation packs, since I see in another thread there's someone who'd like to try to do german... since you're kind of setting a path here with IT (since it's kind of the first if I'm not wrong) the choices you make now will matter for the future

MatteAce
08-18-2018, 03:50 AM
alright I've tackled the updated speech recognition config text file tonight. everything's fine except that the syntax for the dynamic recognition should be changed.
since you've been so nice to prepare a table of what can be asked, I've also been nice and corrected that table in what it should be to work correctly in italian :D

here it is (and a couple of notes before that):

POSITION 10 won't work. it needs an ordinal number to work naturally. so it should be like TENTH POSITION = DECIMA POSIZIONE
(ordinal numbers can be added as alternatives to cardinal numbers, but I don't know if that causes issues with the recognition of other things like fuel. anyway it's easily doable but the position in the phrase must be switched anyway, i.e. not position TENTH but TENTH position)
short position (P 10) instead can work like it is now.


# WHERE_IS + (driver_name) [reads his position and the gap to the player]
# WHATS + LAST_LAP + POSSESSIVE + (driver_name) [driver's last lap time]
# WHATS + BEST_LAP + POSSESSIVE + (driver_name) [driver's best lap time]
# WHATS + IRATING + POSSESSIVE + (driver_name) [driver's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE + (driver_name) [driver's license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE (female composite di(of) + la(the) = della) + (cardinal number) POSITION_LONG [driver in position (number)'s last lap time]
# WHATS + BEST_LAP + POSSESSIVE (female composite) + (cardinal number) POSITION_LONG [driver in position (number)'s best lap time]
# WHATS + IRATING + POSSESSIVE (female composite) + (cardinal number) POSITION_LONG [driver in position (number)'s irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE (female composite) + (cardinal number) POSITION_LONG [driver in position (number)'s license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE + POSITION_SHORT (number) [driver in P (number)'s last lap time]
# WHATS + BEST_LAP + POSSESSIVE + POSITION_SHORT (number) [driver in P (number)'s best lap time]
# WHATS + IRATING + POSSESSIVE + POSITION_SHORT (number) [driver in P (number)'s irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE + POSITION_SHORT (number) [driver in P (number)'s license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE (composite di(of) + il(the) = del) + THE_LEADER [leader's last lap time]
# WHATS + BEST_LAP + POSSESSIVE (composite) + THE_LEADER [leader's best lap time]
# WHATS + IRATING + POSSESSIVE (composite) + THE_LEADER [leader's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE (composite) + THE_LEADER [leader's license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE + THE_GUY_IN_FRONT [car in front's last lap time]
# WHATS + BEST_LAP + POSSESSIVE + THE_GUY_IN_FRONT [car in front's best lap time]
# WHATS + IRATING + POSSESSIVE + THE_GUY_IN_FRONT [car in front's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE + THE_GUY_IN_FRONT [car in front's license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE (female composite del + la = della) + THE_CAR_IN_FRONT [car in front's last lap time]
# WHATS + BEST_LAP + POSSESSIVE (female composite) + THE_CAR_IN_FRONT [car in front's best lap time]
# WHATS + IRATING + POSSESSIVE (female composite) + THE_CAR_IN_FRONT [car in front's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE (female composite) + THE_CAR_IN_FRONT [car in front's license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE + THE_GUY_AHEAD [car in front's last lap time]
# WHATS + BEST_LAP + POSSESSIVE + THE_GUY_AHEAD [car in front's best lap time]
# WHATS + IRATING + POSSESSIVE + THE_GUY_AHEAD [car in front's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE + THE_GUY_AHEAD [car in front's license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE (female composite) + THE_CAR_BEHIND [car behind's last lap time]
# WHATS + BEST_LAP + POSSESSIVE (female composite) + THE_CAR_BEHIND [car behind's best lap time]
# WHATS + IRATING + POSSESSIVE (female composite) + THE_CAR_BEHIND [car behind's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE (female composite) + THE_CAR_BEHIND [car behind's license class - iracing only]
# WHATS + LAST_LAP + POSSESSIVE + THE_GUY_BEHIND [car behind's last lap time]
# WHATS + BEST_LAP + POSSESSIVE + THE_GUY_BEHIND [car behind's best lap time]
# WHATS + IRATING + POSSESSIVE + THE_GUY_BEHIND [car behind's irating - iracing only]
# WHATS + LICENSE_CLASS + POSSESSIVE + THE_GUY_BEHIND [car behind's license class - iracing only]
# WHAT_TYRE_IS + (driver_name) [the tyre type being used by (driver_name) - raceroom only]
# WHAT_TYRES_IS + (driver_name) [the tyre type being used by (driver_name) - raceroom only]
# WHAT_TYRE_IS + THE_GUY_IN_FRONT [the tyre type being used by the car ahead - raceroom only]
# WHAT_TYRES_IS + THE_GUY_IN_FRONT [the tyre type being used by the car ahead - raceroom only]
# WHAT_TYRE_IS + THE_GUY_AHEAD [the tyre type being used by the car ahead - raceroom only]
# WHAT_TYRES_IS + THE_GUY_AHEAD [the tyre type being used by the car ahead - raceroom only]
# WHAT_TYRE_IS + THE_GUY_BEHIND [the tyre type being used by the car behind - raceroom only]
# WHAT_TYRES_IS + THE_GUY_BEHIND [the tyre type being used by the car behind - raceroom only]
# WHAT_TYRE_IS + POSITION_SHORT (number) [the tyre type being used by the car in P (number) - raceroom only]
# WHAT_TYRES_IS + POSITION_SHORT (number) [the tyre type being used by the car in P (number) - raceroom only]
# WHAT_TYRE_IS + THE (female) + (cardinal number) POSITION_LONG [the tyre type being used by the car in position (number) - raceroom only]
# WHAT_TYRES_IS + THE (female) + (cardinal number) POSITION_LONG [the tyre type being used by the car in position (number) - raceroom only]
# WHOS_IN + (cardinal number) POSITION_LONG [the name of the driver in position (number)]
# WHOS_IN + POSITION_SHORT (number) [the name of the driver in P (number)]
# WHERE_IS + POSITION_SHORT (number) [the position and gap to the driver in position (number)]
# WHERE_IS + THE (female) + (cardinal number) POSITION_LONG [the position and gap to the driver in P (number)]




alright, on an unrelated issue, iRacing's F1 setups (and VRS, and all the rest for what it's worth) considers the McLaren MP4-30 fuel in KILOS. this is of course to reflect the limitations in real life rules where 100 kilos is the maximum fuel allowed.
right now CC is kind of confusing because it will announce the consumption in LITERS, while all the rest will be in KILOS. so optimally there should be an exception for it to express fuel consumption in kg rather than L.


now, I've been testing some advanced speech recog and I've come across a couple of errors. here's the log (and the command translation ofc)


03:26:42.525 : Recognised : qual è la mia patente confidence = 0.989 (what's my license class)
03:26:42.528 : Message COMPOUND_License/license can't be played because there is no sound for text fragment numbers/point

it seems it's looking for the /point folder under /numbers, but it should be under numbers_it. but since we're going to revert back to numbers maybe it doesn't matter.



03:37:39.279 : Recognised : dov'è schmidt confidence = 0.791 (where is schmidt - a random driver in the lobby I was in)
03:37:39.284 : Message COMPOUND_opponentPosition can't be played because there is no sound for text fragment position/p1000

when I asked CC this guy didn't set a lap yet. so maybe this is an interesting exception.



03:37:29.891 : Recognised : qual è musso patente confidence = 0.981 (what's Musso license class - Musso was another random driver in my lobby)
03:37:29.893 : Unable to respond - error message: Index and length must refer to a location within the string.
Parameter name: length

I don't know what to do with this. I have no idea what this error is about




04:03:22.644 : Recognised : che ore sono confidence = 0.780 (what time is it)
04:03:22.653 : Message COMPOUND_current_time can't be played because there is no sound for text fragment numbers/oh

here again we can see CC is looking for oh inside numbers instead of numbers_it but this was an issue also with the original gianfranco's pack. the clock request would stop working because CC would require the sound for "oh", while in IT it's not really necessary

mr_belowski
08-18-2018, 08:29 AM
ok, i'll digest that - will need some code changes in the speech recogniser code that assembles the grammar :(

Regarding fuel, iRacing's internal API always uses litres, so we have to convert inside the app when making requests or processing data. A conversion to / from gallons already exists, kilos / pounds is probably do-able.

p1000 is a default value in some cases for iRacing. It means no data - there's probably a missing sanity check somewhere in the code

the index / length one is another missing sanity check - i expect the API hasn't given any data about this fella's licence class and we're not checking the response properly

the clock request came after Gianfranco's sound pack was added so is English-only. It needs a separate Italian version



Regarding the 'more' suffix, i've written the basic rules in code such that if there's additional sounds to be added to a given number sound then the app will use the _more version if it's available. This rule might be OK but needs testing. The _more suffix will always apply to folder names, not sound file names. The app doesn't care about the file names and it'll pick a random file from a given folder. There are only 2 exceptions to this rule - driver name sound files (file name == driver name), and behaviour modifiers (special file names used to mark individual sounds as sweary or having a personalisation). Where you see file names like '/position/p42/42.wav' this filename could be changed to anything and the app wouldn't care - the app only uses the folder name to determine which sounds to play and it picks any of the .wav files in that folder. It's ended up being called 42.wav simply because of the way my workflow has processed a large batch of sounds.

mr_belowski
08-18-2018, 11:44 AM
Here's what the Italian number reader will do after I package the next beta app version. How does this look?



0 hours, 0 minutes, seconds > 0 or tenths > 0 or (precision is hundredths and hundredths > 0) - typically used for a time gap to an opponent


[2 or more seconds, no tenths or hundredths]
numbers/3, numbers/seconds
[1 second]
numbers/a_second

[1 or more tenth, no hundredths]
numbers/1point5
OR (randomly chosen alternative sound including 'seconds' at the end, not really needed, i could disble this)
numbers/1point5seconds

Note that we also have
numbers/0point5
does this work in Italian?

[any number of seconds, 1 to 9 hundredths (e.g 4.01 - 4.09)]
numbers/4, numbers/point09

[any number of seconds, 10 to 99 hundredths (e.g 0.11 - 0.99)]
numbers/0, numbers/point59



0 hours, minutes > 0 and minutes < 3, seconds > 0 - typically used for a laptime


if precision is hundredths
numbers/2_04, numbers/point02
numbers/2_34, numbers/point92
numbers/1_12, numbers/point00

if precision is tenths
numbers/1_42, numbers/point3
numbers/1_01, numbers/point0
note that in English, "point 2" means 0.2, "point zero 2" means 0.02 - does this work in Italian?

if precision is seconds (this one's an edge case - if we're reading a time between 1 and 3 minutes,
I think we generally use a precision of tenths or hundredths but i'm not 100% sure)
numbers/a_minute
numbers/2, numbers/minutes (use "minutes" at the end if there are no seconds or tenths)
numbers/1, numbers_seconds_12 (this looks wrong to me - shouldn't it be '1 minute and 12 seconds'?)



times > 3 minutes (this drops back to the 'old' numbers)

[1 hour, 4 minutes (note if hours > 1 we don't read seconds)]
numbers/an_hour_and, numbers/4, numbers/minutes
[2 or more hours, 1 minutes]
numbers/4, numbers/hours_and, numbers/a_minute
[1 hour]
numbers/an_hour
[2 hours]
numbers/2, numbers/hours
[0 hours, 30 minutes, 12 seconds]
numbers/30, numbers/minutes, numbers/numbers_seconds_12

mr_belowski
08-18-2018, 12:04 PM
note this is just a brain-dump of me going through the code reminding myself of what it does and what it'll do. The current beta you have will always look in /numbers_it/, but the next one will be looking in /numbers/

There's an old comment on that weird "number/numbers_seconds_" folder:

"this is a separate set of number recordings for numbers which are to be read as seconds, but only where we'll read some tenths afterwards. These have a special inflection specific to numbers read as, e.g. 'one *zero six* and 4" or "3 *twenty* and zero'"

I don't think this comment is entirely accurate anyway - it'll use this weird folder even if there are no tenths (but that can be fixed of course). This feels like a nasty hack and I'm starting to think we might need to revert the italian number reader so we don't wreck Gianfranco's work, and implement a new one for your work. I would have thought that the rising-inflection stuff would take care of this - instead of using "numbers/numbers_seconds_34" we'd use "numbers/34_more"

Anyway, i've got to go, be back on later

MatteAce
08-21-2018, 06:52 PM
oof, I didn't get any email notification that you answered me, and I expected to see you pop up on discord. did you see the excel I prepared you with the time readings breakdown?

>Regarding fuel, iRacing's internal API always uses litres, so we have to convert inside the app when making requests or processing data. A conversion to / from gallons already exists, kilos / pounds is probably do-able.

no pounds, just kilos. they're bringing real life rules into iRacing, and the rules say 100kgs per race. so it's never pounds.

>Regarding the 'more' suffix, i've written the basic rules in code such that if there's additional sounds to be added to a given number sound then the app will use the _more version if it's available.

I've found out that some new folders (mandatory_pit_stops and fuel maybe?) got some unit of measure in there, and I prepared a _more folder for them also.
because that will also need inflection based on how you use it. example (! marks the inflection):

"you have fuel for 20! laps."
"you need 20 laps! to the end of the race"

also all the drivers names will need inflections:

"Belowski! is behind you. his gap is now 20 seconds."
"the car behind you is Belowski".


>"this is a separate set of number recordings for numbers which are to be read as seconds, but only where we'll read some tenths afterwards. These have a special inflection specific to numbers read as, e.g. 'one *zero six* and 4" or "3 *twenty* and zero'"

hmm. I checked with the files, and they just sound to me like normal numbers with a high inflection. like a 15_more number, to be honest. in fact, the folder has no single number's _more version. you got all the normal numbers, all the tenths and tenths_more and then you got the numbers_second folders. I might think we could try and just revert these to common _more folders to be used all around.



>I don't think this comment is entirely accurate anyway - it'll use this weird folder even if there are no tenths (but that can be fixed of course). This feels like a nasty hack and I'm starting to think we might need to revert the italian number reader so we don't wreck Gianfranco's work, and implement a new one for your work. I would have thought that the rising-inflection stuff would take care of this - instead of using "numbers/numbers_seconds_34" we'd use "numbers/34_more"

uhm, couldn't you just make it treat the reader differently based on the pack version? Gianfranco's pack is outdated and it was a... 104 maybe? while my pack is above 150 now. so you can keep the old number reader for the old versions and improve the new one for new versions?

mr_belowski
08-22-2018, 01:38 PM
Here's what I've understood from today's chat



In all cases, the _more inflection is optional in the code. It'll try and use a _more
version according to the rules and if a given sound has no _more version it'll fall back
to the regular version. So these can be added later if necessary.


numbers:
0 -> 99
0_more -> 99_more
01 -> 09 [special case for hundredths of a second between .01 and .09]
01_more -> 09_more


100 -> 900 (i.e. 100, 200, 300, ...)
100_more -> 900_more


special cases for X hundred and 80
180 -> 189
180_more -> 189_more
280 -> 289
280_more -> 289_more
...
980 -> 989
980 -> 989_more


and_1_tenth -> and_9
and_1_more -> and_9_more


1_tenth -> 9_tenths [don't think we'll need a _more variant here]


separators:
minuto
minuti
minuto_e
minuti_e
secondo
secondi
netto
netti
ora
ore
ora_e
ore_e
decimo
decimi




Short form (will never contain hours):
number [minutes] / netto(netti)
number [minutes] / number [seconds] / netto(netti) [zero tenths] *note there's no 'and' here, is that OK?*
number [minutes] / number [seconds] / and_x [tenths]
number [minutes] / number [seconds] / point / number [hundredths] *is this right?*


If there are > 0 minutes, this form can only be used if the number of seconds > 0
If minutes == 0 && seconds == 0, use "1_tenth" sounds
If minutes > 0 && seconds == 0, switch to long form




Long form:
hours >= 1 (seconds / tenths ignored):
number [hour] / ora(ore) / netto(netti) [zero minutes]
number [hour] / ora_a(ore_e) / number [minutes] / minuto(minuti)


hours == 0:
number [minutes] / minuto(minuti) / netto(netti) [zero seconds & zero tenths]
number [minutes] / minuto_e(minuti_e) / number [seconds] / secondo(secondi) / netto(netti) [zero tenths]
number [minutes] / minuto(minuti) / number [seconds] / secondo(secondi) / and_x [tenths]
number [minutes] / minuto(minuti) / number [seconds] / secondo(secondi) / point / number [hundredths]
number [minutes] / minuto(minuti) / and_x [tenths] / decimo(decimi)
number [minutes] / minuto(minuti) / point / number [hundredths] *does this work?*


In the long form, the minutes / seconds sections are optional - if there are no seconds we don't read anything for that part. Does that work?

flip
09-12-2018, 04:45 PM
26047, to be precise. Shit. I need to get out more :|

Mr. Belowski,

Is there a file with the list of all official sounds?

cheers

ThomasAvanzini
10-10-2018, 09:32 AM
the download of voice pack is unavailable.... :(

MatteAce
10-11-2018, 06:40 PM
the old, outdated voice pack made by Gianfranco for projectcars.it lies behind a registration wall, and we've been unable to retrieve it recently.
I'm working on a new, updated and complete pack but I'm still not ready for release. I'll keep you posted, hopefully I should be able to make it for the end of 2018

DiegoColafabio
10-14-2018, 09:26 AM
Thank you very much for your work MatteAce! :) can't wait!

Nico_IT
02-02-2019, 07:55 AM
Hi MatteAce, do you have any news for us? :)

MatteAce
02-04-2019, 12:47 AM
I finished all the common voice folders, I just have to finish the numbers (which is huge by the way, but I'm halfway done already), then a first pack will be available to be beta-tested. I'm not gonna post it publicly, but I'll definitely need people to help me test it.

In the meanwhile it gets tested, I'll move on to record the corner names and some opponent names. When this is done, and we tested the pack and fixed stuff, I'll talk with Jim and decide how to release it properly.

After that, I'll move on to names personalisation, vulgar language, etc.

So let's say release is not quite behind the corner, but we're not even that far anyway!

Nico_IT
02-05-2019, 06:26 PM
I have Project Cars 2 and Assetto Corsa to do some test.

Thanks for your work :)

nk

CiccioFritz
02-12-2019, 01:40 PM
...but I'll definitely need people to help me test it....

iRacing user here, with a team that want help you.

PM Sent!

LABATI
03-28-2019, 03:21 PM
Any news ?

MatteAce
03-28-2019, 10:54 PM
not yet, I've been under huge pressure the last three months with my job and I haven't had much free time to finish the project... :( but I should be at the end of the tunnel hopefully

maxferra
04-11-2019, 04:17 PM
it's possible have a pack italian?!? thank for your job

Bill Krause
05-12-2019, 10:16 PM
Yes it would be fun to have spotters in different languages.